wiki/HowtoDebian/Packages.md
2018-08-25 00:13:14 +02:00

179 lines
4.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
categories: debian system
title: Howto Debian packages
...
* dpkg(1) : <https://manpages.debian.org/stable/dpkg/dpkg.1.en.html>
* apt-get(1) : <https://manpages.debian.org/stable/apt/apt-get.8.en.html>
* apt-cache(1) : <https://manpages.debian.org/stable/apt/apt-cache.8.en.html>
Debian possède le meilleur format de packages : le `.deb` qui se manipule avec l'outil `dpkg`.
Debian possède le programme de gestion de packages le plus avancé du monde : APT (Advanced Packaging Tool).
## Format .deb
Un package `.deb` est une archive au format **ar** qui contient un fichier `debian-binary` et 2 tarballs : `data.tar` (arborescence de fichiers à installer) et `control.tar` (scripts et meta-informations sur le package).
~~~
$ ar x apt_1.6.4_amd64.deb
$ ls -l
-rw-r--r-- 1 gcolpart evolix 6896 août 24 23:19 control.tar.xz
-rw-r--r-- 1 gcolpart evolix 1305248 août 24 23:19 data.tar.xz
-rw-r--r-- 1 gcolpart evolix 4 août 24 23:19 debian-binary
$ tar xvf control.tar.xz
./conffiles
./control
./md5sums
./postinst
./postrm
./preinst
./prerm
./shlibs
./triggers
$ tar xvf control.tar.xz
./etc/
./etc/apt/
./etc/apt/apt.conf.d/
./etc/apt/apt.conf.d/01autoremove
[…]
./usr/
./usr/bin/
./usr/bin/apt
./usr/bin/apt-cache
./usr/bin/apt-cdrom
./usr/bin/apt-config
./usr/bin/apt-get
./usr/bin/apt-key
./usr/bin/apt-mark
[…]
~~~
Pour avoir des informations sur un paquet `.deb` :
~~~
$ dpkg-deb -I apt_1.6.4_amd64.deb
nouveau paquet Debian, version 2.0.
taille 1312336 octets : archive de contrôle=6896 octets.
121 octets, 4 lignes conffiles
1412 octets, 27 lignes control
11573 octets, 166 lignes md5sums
5042 octets, 137 lignes * postinst #!/bin/sh
1370 octets, 45 lignes * postrm #!/bin/sh
254 octets, 6 lignes * preinst #!/bin/sh
485 octets, 11 lignes * prerm #!/bin/sh
23 octets, 1 lignes shlibs
67 octets, 2 lignes triggers
Package: apt
Version: 1.6.4
Architecture: amd64
[…]
$ dpkg-deb -c apt_1.6.4_amd64.deb
drwxr-xr-x root/root 0 2018-08-20 17:38 ./
drwxr-xr-x root/root 0 2018-08-20 17:38 ./etc/
drwxr-xr-x root/root 0 2018-08-20 17:38 ./etc/apt/
drwxr-xr-x root/root 0 2018-08-20 17:38 ./etc/apt/apt.conf.d/
-rw-r--r-- root/root 861 2018-08-20 17:38 ./etc/apt/apt.conf.d/01autoremove
[…]
## dpkg
`dpkg` est un outil bas niveau pour manipuler des packages Debian :
~~~
Installer un package
# dpkg -i foo.deb
Dépaqueter un package sans le configurer
# dpkg --unpack foo.deb
Configurer un package non configuré
# dpkg --configure foo
Re-configurer un package déjà configuré
# dpkg-reconfigure foo
Re-configurer un package déjà configuré avec un maximum de questions
# dpkg-reconfigure -plow foo
Supprimer un package
# dpkg -r foo
Purger un package supprimé
# dpkg -P foo
~~~
`dpkg` permet aussi d'avoir quelques informations de base :
~~~
Lister les packages installés de façon « conviviale »
$ dpkg -l
Lister les packages installés de façon exhaustive
$ dpkg --get-selections
Installer une liste de packages générée par "dpkg --get-selections"
# dpkg --merge-avail < apt-cache-dumpavail.txt
# dpkg --set-selections < dpkg-get-selections.txt
# apt dselect-upgrade
Lister les fichiers d'un package installé
$ dpkg -L foo
Lister les packages installé qui contiennent un fichier
$ dpkg -S bin/bar
~~~
## apt
Liste des packages pouvant être mis au jour (inclus les package en hold) :
~~~
$ apt list --upgradable
~~~
> *Note* : avec *aptitude* on a un résultat plus précis avec `aptitude upgrade -sV`
### hold / unhold
~~~
# apt-mark hold foo
foo passé en figé (« hold »).
# apt-mark showhold
foo
# dpkg -l foo
hi foo […]
# apt-mark unhold foo
Annulation de l'état figé pour foo.
~~~
## Astuces
Lister les packages installés, notamment leur pool pour différencier main/contrib/non-free :
~~~
$ dpkg --get-selections | tr '\t' ' ' | cut -d" " -f1 | cut -d: -f1 | xargs apt-cache show | grep ^Filename
~~~
### Unattended upgrades / Auto upgrades
Sur un serveur non critique (backup, dev, …) on peut vouloir faire les mises à jour automatiquement :
~~~
# apt install unattended-upgrades
# dpkg-reconfigure -plow unattended-upgrades
~~~
La configuration se trouve dans le fichier `/etc/apt/apt.conf.d/50unattended-upgrades`.
On peut choisir où envoyer le mail de rapport ou encore si on doit redémarrer la machine automatiquement si nécessaire, etc.