Aptlier is a tool to manage aptly repositories of Debian/Ubuntu packages. Its main goal is to publish a single repository that merges multiple mirrors and repositories with local packages.
It was written with one particular usage pattern in mind: all servers
of the project should have only the Debian/Ubuntu mirror and a
centrally managed repo in its sources.list
file. All third-party
software should be available in a project-local repository that
mirrors all needed external repositories and PPAs. This makes
upgrades and audits much more manageable than adding multiple software
sources and signing keys to each of the server.
This is very early stage software. It might be incomplete, and it might change in an incompatible way.
Aptlier is written in Ruby, and can be
installed as a gem. There is no versioned gem uploaded to
rubygems.org yet, though. Easiest way to install is to use
bundler with a Gemfile
like this:
source 'https://rubygems.org'
gem 'aptlier', git: 'https://github.com/3ofcoins/aptlier.git'
You can also use aptlier in-place by running bundle install --path=.bundle
and run it as bundle exec aptlier
, or build a gem locally.
aptlier init
initializes a new repo in current directory (which should be empty). It creates an aptly repository, initial aptly config, and a gnupg config directory (NOTE: aptly supports only gnupg version 1). After initialization, both configs can be freely edited.aptlier aptly ...
runs aptly command for current repoaptlier gpg ...
runs gpg command for current repoaptlier add_key KEY [GPG_OPTIONS]
adds a gnupg key that can sign source repositories. A key can be specified as:- Email address that is passed to
gpg --search-keys
- Key ID in
0xAAAAAAAA
format that is passed togpg --recv-keys
- Path to file that contains a public key
-
to read key from standard inputhttps://
URL to public key (unencrypted http is not accepted)ppa:OWNER/ARCHIVE
– adds a key of Ubuntu PPApackagecloud:OWNER/ARCHIVE
– adds a key of packagecloud repository- If key name is an
--option
, it's just passed to gpg as an argument
- Email address that is passed to
aptlier add_mirror NAME URL ...
is passed toaptly mirror create
. It also supports special URL formatppa:OWNER/ARCHIVE
orpackagecloud:OWNER/ARCHIVE
, which is expanded to full URL and its public key is automatically fetched.aptlier update [NAME [NAME [...]]]
update specified mirrors. If no mirrors are specified, all of them are updated
- Support for merging & publishing repository
- Configuration
- publish endpoint/distro
- autopublish toggle?
- maybe config can specify aptly config / aptly dir / gnupg dir separate from the file?
- Support for specifying repo location on command line or in environment instead of simply using current dir
- Support archiving list of mirrors and their associated keys for easy recreation of a repository
Bug reports and pull requests are welcome on GitHub at https://github.com/3ofcoins/aptlier. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
The gem is available as open source under the terms of the MIT License.
Everyone interacting in the Aptlier project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.