Decrease intent to increase space usage on mobile.
.. -*- coding: utf-8; -*-
.. include:: HEADER.rst
======
Apt.
======
.. contents::
Conf files.
===========
See man sources.list(5), apt.conf(5), apt_preferences(5).
``/etc/apt/sources.list``::
deb http://ftp.debian.org.ua/debian/ stable main contrib non-free
deb http://ftp2.debian.org.ua/debian/ testing main contrib non-free
deb http://ftp2.debian.org.ua/debian/ unstable main contrib non-free
deb http://ftp.uk.debian.org/debian/ experimental main contrib non-free
deb http://www.deb-multimedia.org testing main non-free
Package priority.
=================
``/etc/apt/preferences``::
Package: *
Pin: release a=stable
Pin-Priority: 800
Package: *
Pin: release a=testing
Pin-Priority: 900
Package: *
Pin: release a=unstable
Pin-Priority: 700
Package: *
Pin: release a=experimental
Pin-Priority: 600
Example that prevent installing ``*systemd*`` packages (priority strictly below
``0`` forbid package to be installed)::
Package: systemd
Pin: origin ""
Pin-Priority: -1
Package: *systemd*
Pin: origin ""
Pin-Priority: -1
Example that avoid installing packages from different distribution (priority
strictly below ``100`` cause a version to be installed only if there is no
installed version of the package), you should keep main distribution priority
above foreign distro priority::
Package: *
Pin: release a=testing
Pin-Priority: 990
Package: *
Pin: release o=Kali
Pin-Priority: 50
To discover package priority::
bash# apt-cache madison emacs24
emacs24 | 24.5+1-3 | http://ftp.us.debian.org/debian/ testing/main amd64 Packages
emacs24 | 24.4+1-5 | http://http.kali.org/kali/ kali-current/main amd64 Packages
emacs24 | 24.5+1-3 | http://ftp.us.debian.org/debian/ testing/main Sources
bash# apt-cache policy emacs24
emacs24:
Installed: 24.5+1-3
Candidate: 24.5+1-3
Version table:
*** 24.5+1-3 0
990 http://ftp.us.debian.org/debian/ testing/main amd64 Packages
100 /var/lib/dpkg/status
24.4+1-5 0
50 http://http.kali.org/kali/ kali-current/main amd64 Packages
bash# aptitude versions emacs24
Package emacs24:
p 24.4+1-5 kali-current 50
i 24.5+1-3 testing 990
Debian releases.
================
Workflow::
experimental → unstable (sid) → testing → stable
Which package from witch release::
$ aptitude search ~S~i~Astable
$ aptitude search ~S~i~Atesting
$ aptitude search ~S~i~Aunstable
$ aptitude search ~S~i~Aexperimental
* https://wiki.debian.org/DebianReleases
* https://wiki.debian.org/DebianOldStable
* https://wiki.debian.org/DebianStable
* https://wiki.debian.org/DebianTesting
* https://wiki.debian.org/DebianUnstable
* https://wiki.debian.org/DebianExperimental
Setup backport.
===============
Main backports archive located at http://www.backports.org.
To get packeges gpg sign key::
$ su
...
$ wget -O - http://backports.org/debian/archive.key | apt-key add -
$ ^D
Write where packeges places::
$ cat /etc/apt/sources.list
deb http://www.backports.org/debian/ etch-backports main contrib non-free
Importing package signing key.
==============================
Usualy you can safely update keyring via ``debian-keyring`` package because it
is signed by prevoius keyring::
$ sudo apt-get install debian-keyring
Defferent 3rd party provide keys for download. If you trust key (or get it in a
trusted way) it is easy to import it::
$ sudo apt-key add $FILE.pgp
Another way to resolve warning::
$ sudo apt-get update
...
W: There is no public key available for the following key IDs:
9AA38DCD55BE302B
W: GPG error: http://http.us.debian.org etch Release: The following signatures
couldn't be verified because the public key is not available: NO_PUBKEY
9AA38DCD55BE302B
...
is to use key servers directly::
$ gpg --keyserver pgp.mit.edu --recv-key 9AA38DCD55BE302B \
--keyserver-options http-proxy=http://user:pass@192.168.1.1:3128
gpg: requesting key 55BE302B from hkp server pgp.mit.edu
gpg: key 55BE302B: public key "Debian Archive Automatic Signing Key (5.0/lenny) <ftpmaster@debian.org>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
$ gpg --export 9AA38DCD55BE302B | sudo apt-key add -
OK
Install build dependency for package.
=====================================
::
$ apt-get install build-essential # install dev LIBC and GCC C/C++
$ sudo apt-get build-dep $package
If all you want is checking what packages are needed to build a given package::
$ apt-cache showsrc $package
or check 'Build-Depends' attribute in::
$ apt-cache show $package
Delete config file for removed packages.
========================================
To get list of such packages use one of::
$ aptitude search ~c
$ grep-status -n -sPackage -FStatus config-files
To remove them::
$ aptitude purge ~c
Delete obsolete packages.
=========================
To get list of such packages use::
$ aptitude search ~o
To remove them::
$ aptitude purge ~o
To remove packages that were automatically installed to satisfy dependencies and
are now no longer needed::
$ sudo apt-get autoremove
Clean up packages cache.
========================
Remove everything from ``/var/cache/apt/archives/`` and
``/var/cache/apt/archives/partial/``::
$ sudo apt-get clean
Removes package files that can no longer be downloaded, and are largely
useless::
$ sudo apt-get autoclean
Check package files for modification.
=====================================
::
$ sudo debsums --changed
Search for packages.
====================
::
$ aptitude search '?tag(works-with::logfile)'
Find nearest mirror.
====================
::
$ sudo apt-get install netselect-apt
$ netselect-apt stable
$ netselect-apt testing
$ netselect-apt unstable
$ netselect-apt experimental
$ netselect-apt sid
Newer approach for selecting mirror is via DNS. Just use::
http://httpredir.debian.org/
Show dependency graph.
======================
::
$ apt-cache dotty $PKG | dot -Tsvg >$PKG.svg && see $PKG.svg
$ sudo apt-get install debtree
$ debtree $PKG | dot -Tsvg >$PKG.svg && see $PKG.svg
$ sudo apt-get install apt-rdepends
$ apt-rdepends $PKG
$ apt-rdepends -r $PKG
$ apt-rdepends -d $PKG | dot -Tsvg >$PKG.svg && see $PKG.svg
$ apt-rdepends -d -r $PKG | dot -Tsvg >$PKG.svg && see $PKG.svg