{{define "main"}}aptly(1) -- {{.Short}} ============================================= ## SYNOPSIS Common command format: `aptly` [...] [...] aptly has integrated help that matches contents of this manual page, to get help, prepend `help` to command name: `aptly` `help` `mirror` `create` ## DESCRIPTION {{.Long}} ## CONFIGURATION aptly looks for configuration file in `/etc/aptly.conf` and `~/.aptly.conf`, if no config file found, new one is created. If `-config=` flag is specified, aptly would use config file at specified location. Also aptly needs root directory for database, package and published repository storage. If not specified, directory defaults to `~/.aptly`, it will be created if missing. Configuration file is stored in JSON format (default values shown below): { "rootDir": "$HOME/.aptly", "downloadConcurrency": 4, "downloadSpeedLimit": 0, "architectures": [], "dependencyFollowSuggests": false, "dependencyFollowRecommends": false "dependencyFollowAllVariants": false, "dependencyFollowSource": false, "gpgDisableSign": false, "gpgDisableVerify": false, "downloadSourcePackages": false, "ppaDistributorID": "ubuntu", "ppaCodename": "", "S3PublishEndpoints": { "test": { "region": "us-east-1", "bucket": "repo", "awsAccessKeyID": "" "awsSecretAccessKey": "", "prefix": "", "acl": "public-read" } } Options: * `rootDir`: is root of directory storage to store database (`rootDir`/db), downloaded packages (`rootDir`/pool) and published repositories (`rootDir`/public) * `downloadConcurrency`: is a number of parallel download threads to use when downloading packages * `downloadSpeedLimit`: limit in kbytes/sec on download speed while mirroring remote repositieis * `architectures`: is a list of architectures to process; if left empty defaults to all available architectures; could be overridden with option `-architectures` * `dependencyFollowSuggests`: follow contents of `Suggests:` field when processing dependencies for the package * `dependencyFollowRecommends`: follow contents of `Recommends:` field when processing dependencies for the package * `dependencyFollowAllVariants`: when dependency looks like `package-a | package-b`, follow both variants always * `dependencyFollowSource`: follow dependency from binary package to source package * `gpgDisableSign`: don't sign published repositories with gpg(1), also can be disabled on per-repo basis using `-skip-signing` flag when publishing * `gpgDisableVerify`: don't verify remote mirrors with gpg(1), also can be disabled on per-mirror basis using `-ignore-signatures` flag when creating and updating mirrors * `downloadSourcePackages`: if enabled, all mirrors created would have flag set to download source packages; this setting could be controlled on per-mirror basis with `-with-sources` flag * `ppaDistributorID`, `ppaCodename`: specifies paramaters for short PPA url expansion, if left blank they default to output of `lsb_release` command * `S3PublisEndpoints`: configuration of Amazon S3 publishing endpoints (see below) ## S3 PUBLISHING ENDPOINTS aptly could be configured to publish repository directly to Amazon S3. First, publishing endpoints should be described in aptly configuration file. Each endpoint has name and associated settings: * `region`: Amazon region for S3 bucket (e.g. `us-east-1`) * `bucket`: bucket name * `prefix`: (optional) do publishing under specified prefix in the bucket, defaults to no prefix (bucket root) * `acl`: (optional) assign ACL to published files (one of the canned ACLs in Amazon terminology). Useful values: `private` (default) or `public-read` (public repository). Public repositories could be consumed by `apt` using HTTP endpoint (Amazon bucket should be configured for "website hosting"), for private repositories special apt S3 transport is required. * `awsAccessKeyID`, `awsSecretAccessKey`: (optional) Amazon credentials to access S3 bucket. If not supplied, environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are used. In order to publish to S3, specify endpoint as `s3:endpoint-name:` before publishing prefix on the command line, e.g.: `aptly publish snapshot wheezy-main s3:test:` ## PACKAGE QUERY Some commands accept package queries to identify list of packages to process. Package query syntax almost matches `reprepro` query language. Query consists of the following simple terms: * direct package reference: reference to exaclty one package. Format is identical to the way aptly lists packages in show commands with `-with-packages` flag: `name_version_arch`, e.g.: `libmysqlclient18_5.5.35-rel33.0-611.squeeze_amd64` * dependency condition: syntax follows Debian dependency specification: package_name followed by optional version specification and architecture limit, e.g: `mysql-client (>= 3.6)`. * query against package fields: syntax is the same as for dependency conditions, but instead of package name field name is used, e.g: `Priority (optional)`. Supported fields: * all field names from Debian package control files are supported except for `Filename`, `MD5sum`, `SHA1`, `SHA256`, `Size`, `Files`, `Checksums-SHA1`, `Checksums-SHA256`. * `$Source` is a name of source package (for binary packages) * `$SourceVersion` is a version of source package * `$Architecture` is `Architecture` for binary packages and `source` for source packages, when matching with equal (`=`) operator, package with `any` architecture matches all architectures but `source`. * `$Version` has the same value as `Version`, but comparison operators use Debian version precedence rules * `$PackageType` is `deb` for binary packages and `source` for source packages Operators: * `=`: strict match, default operator is no operator is given * `>=`, `<=`, `=`, `>>` (strictly greater), `<<` (strictly less): lexicographical comparison for all fields and special rules when comparing package versions * `%`: pattern matching, like shell patterns, supported special symbols are: `[^]?*`, e.g.: `$Version (% 3.5-*)` * `~`: regular expression matching, e.g.: `Name (~ .*-dev)` Simple terms could be combined into more complex queries using operators `,` (and), `|` (or) and `!` (not), parentheses `()` are used to change operator precedence. Match value could be enclosed in single (`'`) or double (`"`) quotes if required to resolve ambiguity, quotes inside quoted string should escaped with slash (`\`). Examples: * `mysql-client`: matches package mysql-client of any version and architecture (including source), also matches packages that `Provide:` `mysql-client`. * `mysql-client (>= 3.6)`: matches package mysql-client with version greater or equal to 3.6. Valid operators for version are: `>=`, `<=`, `=`, `>>` (strictly greater), `<<` (strictly less). * `mysql-client {i386}`: matches package `mysql-client` on architecture `i386`, architecture `all` matches all architectures but source. * `mysql-client (>= 3.6) {i386}`: version and architecture conditions combined. * `libmysqlclient18_5.5.35-rel33.0-611.squeeze_amd64`: direct package reference. * `$Source (nginx)`: all binary packages with `nginx` as source package. * `!Name (~ .*-dev), mail-transport, $Version (>= 3.5)`: matches all packages that provide `mail-transport` with name that has no suffix `-dev` and with version greater or equal to `3.5`. When specified on command line, query may have to be quoted according to shell rules, so that it stays single argument: `aptly repo import percona stable 'mysql-client (>= 3.6)'` ## GLOBAL OPTIONS {{template "options" .}} {{template "command" findCommand . "mirror"}} {{template "command" findCommand . "repo"}} {{template "command" findCommand . "snapshot"}} {{template "command" findCommand . "publish"}} {{template "command" findCommand . "db"}} {{template "command" findCommand . "serve"}} {{template "command" findCommand . "graph"}} ## ENVIRONMENT If environment variable `HTTP_PROXY` is set `aptly` would use its value to proxy all HTTP requests. ## RETURN VALUES `aptly` exists with: * 0: success * 1: general failure * 2: command parse failure ## AUTHORS Andrey Smirnov (me@smira.ru) {{end}} {{/* command list */}} {{define "command"}} {{if .Runnable}} ## {{toUpper .Short}} {{capitalize .Parent.FullSpacedName}} {{capitalize .UsageLine}} {{.Long}} {{if (allFlags .Flag | len) gt 0}} Options: {{template "options" .}} {{end}} {{end}} {{range .Subcommands}}{{template "command" .}}{{end}} {{end}} {{/* options layout */}} {{define "options"}} {{range allFlags .Flag}} * -`{{.Name}}`={{.DefValue}}: {{.Usage}} {{end}} {{end}}