aptly 0.8 has been released today. For installation instructions, please proceed to Download page.
Most important new features are:
aptly has powerful query language
which allows to select subset of packages. Query language is used
in many commands: pulling packages between snapshots, copying, moving packages
between local repositories, filtering mirror contents, etc.
aptly 0.8 allows to use queries to search mirrors, snapshots and local repos
for packages matching condition. E.g. all packages that have been built
from source package apt
:
$ aptly mirror search wheezy-main '$Source (apt)'
apt-doc_0.9.7.9+deb7u1_all
apt-transport-https_0.9.7.9+deb7u1_amd64
apt-utils_0.9.7.9+deb7u1_amd64
libapt-pkg4.12_0.9.7.9+deb7u1_amd64
apt_0.9.7.9+deb7u1_amd64
libapt-pkg-dev_0.9.7.9+deb7u1_i386
apt_0.9.7.9+deb7u1_i386
libapt-pkg-doc_0.9.7.9+deb7u1_all
libapt-pkg-dev_0.9.7.9+deb7u1_amd64
libapt-inst1.5_0.9.7.9+deb7u1_amd64
libapt-inst1.5_0.9.7.9+deb7u1_i386
apt-utils_0.9.7.9+deb7u1_i386
apt-transport-https_0.9.7.9+deb7u1_i386
libapt-pkg4.12_0.9.7.9+deb7u1_i386
aptly can also search whole package database for packages matching condition. For
example, all packages with name starting with pam
, not including source packages:
$ aptly package search 'Name (% pam*), !$Architecture (source)'
pam-dbus-notify_0.2.1-1_all
paml_4.5-1_amd64
paman_0.9.4-1_i386
pam-pkcs11-dbg_0.6.8-1_amd64
pamusb-common_0.5.0-4_i386
pamusb-common_0.5.0-4_amd64
pamusb-tools_0.5.0-4_all
paman_0.9.4-1_amd64
paml-doc_4.5-1_all
pam-pkcs11-dbg_0.6.8-1_i386
We can get details about packages, including its inclusion into other objects:
$ aptly package show -with-references libattr1_1:2.4.46-8_amd64
Package: libattr1
Version: 1:2.4.46-8
Installed-Size: 61
Priority: required
...
References to package:
mirror [wheezy-main]: http://mirror.yandex.ru/debian/ wheezy
mirror [wheezy-main-src]: http://mirror.yandex.ru/debian/ wheezy [src]
snapshot [wheezy-7.5]: Snapshot from mirror [wheezy-main]: http://mirror.yandex.ru/debian/ wheezy
Now snapshots could be filtered directly to produce other snapshots. Prior to that,
the same effect could be achieved using empty snapshot as one of the arguments
to aptly snapshot pull
command. Filtering is based on package queries as well.
E.g. extract ‘required’ part of Debian into separate snapshot:
$ aptly snapshot filter wheezy-7.5 wheezy-7.5-required 'Priority (required)'
Loading packages (56121)...
Building indexes...
Snapshot wheezy-7.5-required successfully filtered.
You can run 'aptly publish snapshot wheezy-7.5-required' to publish snapshot as Debian repository.
$ aptly snapshot show wheezy-7.5-required
Name: wheezy-7.5-required
Created At: 2014-10-03 21:50:30 MSK
Description: Filtered 'wheezy-7.5', query was: 'Priority (required)'
Number of packages: 113
aptly now supports .udeb (micro-deb) packages in mirrors, local repos and published repositories. .udeb packages are used by Debian installer during initial installation phase. With .udeb support, it should be possible to install Debian from repository published by aptly. As aptly doesn’t support yet mirroring without resigning (leaving Debian signature as-is), it would require some changes to installer in order to support custom key.
Prior to version 0.8, aptly was locking database (which prevented any concurrent operations)
during whole aptly mirror update
run, which included
download of package files that might take hours. aptly 0.8 would unlock the database
after package index download (right before package files download), so during download phase
other commands could be run, e.g. create another mirror, take snapshots, publish other repositories
and so on. aptly locks repository being updated during package download to prevent modifications
to the repository.
Full list of changes since 0.7.1:
-force
for aptly mirror update
(#45) (#114).udeb
packages (Debian installer) in mirrors, local repos and
published repositories
(#108)+
in package filenames
(S3 config option plusWorkaround
)
(#105)storageClass
and encryptionMethod
)
(#105)-passphrase
or -passphrase-file
(#94)-force-replace
in aptly repo add command
to replace conflicting packages automatically
(#83)-raw
flag
hasn’t been displaying storage prefix for repositories published to S3
(#113)/
in distribution name isn’t allowed anymore,
when guessing distribution /
is replaced with -
(#110)