This crate provides bindings to libapt-pkg
.
See the examples/
folder for some partial implementations of some commands.
https://docs.rs/apt-pkg-native
While the code in this crate is available under a permissive MIT license,
it is useless without libapt-pkg
,
which is GPL2+.
libapt-pkg-dev
must be installed. The cc
crate is used to try and find a native compiler.
The ye-olde-apt
feature provides support for apt <1.2
(Ubuntu 14.04 (Trusty),
Debian 7 (Jessie) (2015)). This works by just deleting methods which are not
available in that version. See
#2.
It is intended that the crate should be usable from multiple threads. However, this is generally implemented using singletons, which may be really annoying for your use-case.
The current way the singleton is managed is awful, and it's not been fixed while I've been learning about the problems. A major version bump, and a proper singleton, may resolve some of the issues. This needs to be done eventually.
apt
does not have a concurrency model: you may not use threads.
Since apt
1.4 or 1.5 (in Debian Stretch (2017), but not in Xenial 16.04),
some operations are thread safe: it should be possible to initialise the cache
twice in parallel. As these versions of apt
are not widespread, the API of
this crate does not attempt to expose this.
examples/on-sid
has a docker file which builds a minimum Debian image with
typical package lists downloaded. You can run a tool in it, from this directory,
by:
(cd examples/on-sid && make)
docker run -v $(pwd):/mnt sid-sources-list /mnt/target/release/examples/sources