Debian - Gestion de paquets
Empaquetage
Définir le nom du mainteneur du paquet pour utilisation avec dch
Afin d’avoir le champ contenant le nom du mainteneur et son adresse email
correctement définis lors d’une modification du changelog du paquet avec
l’utilitaire dch
, il est possible de définir les variables d’environnement
suivantes :
export DEBFULLNAME="Bob Kelso"
export DEBEMAIL="[email protected]"
Récupérer facilement les sources d’un package avec dget
L’utilitaire dget
permet de récupérer en une commande les sources originales
ainsi que les sources d’un paquet Debian. Exemple :
$ dget -q http://ftp.de.debian.org/debian/pool/main/m/mydumper/mydumper_0.6.1-1.dsc
$ ls
mydumper_0.6.1-1.debian.tar.gz mydumper_0.6.1-1.dsc mydumper_0.6.1.orig.tar.gz
Apt/Aptitude
Sous les distributions Debian (ou assimilées) mettent à notre disposition les outils APT afin de géré les paquets de nos systèmes.
Voici donc quelques petites astuces ou pense-bête relatifs à sa configuration ou son utilisation.
Configuration
Ne pas installer les paquets recommandés/suggérés
Il est possible de ne pas tenir compte du champ Recommends
présent dans
certains paquets lors de leur installation et d’éviter ainsi de récupérer des
dépendances parfois inutiles.
Configurer APT comme suit afin de mimer le comportement de l’option
--no-install-recommends
de la commande apt-get
:
echo "APT::Install-Recommends false;" >>/etc/apt/apt.conf.d/99custom
ou --without-recommends
de aptitude
:
echo "Aptitude::Recommends-Important false;" >>/etc/apt/apt.conf.d/90custom
Supprimer automatiquement les paquets n’étant plus utilisés
Lors de la désinstallation de paquets, il est possible de supprimer par la même occasion ceux ayant été installés en même temps que celui à enlever et n’étant plus utiles au système.
Ce comportement est normalement obtenu à l’aide des commandes
apt-get autoremove <nom_du_paquet>
ou
aptitude purge --purge-unused <nom_du_paquet>
et peut être généralisé à l’aide
de la configuration suivante :
echo "APT::Get::AutomaticRemove true;" >>/etc/apt/apt.conf.d/99custom
ou pour aptitude
:
echo "Aptitude::Purge-Unused true;" >>/etc/apt/apt.conf.d/99custom
ℹ️ Note: en plus de désinstaller les paquets, Aptitude purge en plus leurs configurations.
Astuces
Installer, supprimer et purger conjointement des paquets
Il est possible d’installer, de supprimer et de purger plusieurs paquets en une
seule ligne de commande. Cette manipulation peut être utile notamment pour
l’exécution de la commande aptitude
à l’intérieur de scripts.
paquet+ installer le package
paquet- supprimer le package
paquet_ purger le package
Exemple
aptitude install paquet1+ paquet2+ paquet3_ paquet4- paquet5+
Cette commande installera les paquets 1, 2 et 5, supprimera le paquet 4 et purgera le paquet 3.
Télécharger un paquet sans l’installer
apt-get download <nom du paquet>
dpkg
Astuces
Purger les configurations des paquets désinstallés
Lors de la désinstallation de paquets via apt-get remove package
ou à l’aide
de tout autre utilitaire de gestion de paquets, les configurations sont laissées
intactes sur le système.
Afin de consulter la liste des paquets désinstallés pour lesquels il reste des fichiers de configuration, taper :
dpkg -l | awk '$1=="rc"{print $2}'
Une fois cette liste obtenue, l’ajout d’un simple xargs
vous débarrassera de
toutes lesdites configurations :
dpkg -l | awk '$1=="rc"{print $2}' | xargs dpkg --purge
Obtenir des informations sur un paquet
dpkg-deb --info un_paquet.deb
Lister les paquets à mettre à jour
aptitude search ~U
aptitude search ~U -F '%p' # n'afficher que le nom des paquets à mettre à jour
Maintenir un paquet à sa version courante
Pour maintenir certains paquets à leur version courante, il est nécessaire de
les passer à l’état hold
:
apt-mark hold <nom_du_paquet>
ou, si nous utilisons aptitude
:
aptitude hold <nom_du_paquet>
ℹ️ Note: utiliser le mot clef unhold
pour annuler cette opération.
Lister les paquets maintenus à leur version courante
apt-mark showhold
ou via aptitude
:
aptitude search ~ahold
Savoir quel paquet a causé l’installation du paquet XXX
Pour savoir quel paquet a causé, par exemple, l’installation du paquet
libldap-2.4-2
:
apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed <nom_paquet>
ou :
aptitude why <nom_paquet>
Empêcher un paquet de (re)démarrer/arrêter automatiquement un service
Lorsqu’un service – Apache, Nginx, MySQL, Postfix… – est installé via un
paquet, Debian démarre automatiquement le service en question à l’issue de
l’installation. Si le paquet est “bien fait”, le démarrage automatique du
service est conditionné par une variable du type <SERVICE>_ENABLED
dans le
fichier /etc/default/<service>
, et cette variable est définie à false
ou 0
par défaut. Néanmoins pour les paquets ne disposant pas de ce garde-fou, il est
possible de prévenir le démarrage d’un service dont la comportement
non-configuré pourrait poser problème en utilisant l’astuce suivante :
echo exit 101 > /usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d
Le code retour 101
du script interdit alors à l’utilitaire invoke-rc.d
d’effectuer l’opération demandée par le script de post-installation du paquet
(“invoke-rc.d: policy-rc.d denied execution of start.").
Si vous ne souhaitez pas que ce comportement soit permanent, il est possible
d’utiliser les directives de configuration Dpkg::Pre-Invoke
et
Dpkg::Post-Invoke
pour que ce fichier ne soit créé qu’à l’utilisation de des
commandes dpkg
/apt-get
/aptitude
:
cat >>/etc/apt/apt.conf.d/70debconf <<EOF
Dpkg::Pre-Invoke {"echo exit 101 > /usr/sbin/policy-rc.d && chmod +x /usr/sbin/policy-rc.d";};
Dpkg::Post-Invoke {"rm -f /usr/sbin/policy-rc.d";};
EOF
Installer une clé de signature GPG distante via HTTP
Afin d’éviter d’avoir à télécharger un fichier de clé GPG de signature de
paquets puis de l’ajouter au trousseau via apt-key add <fichier>
, il existe
une parade simple pour installer une clé de signature de paquets d’un coup :
apt-get adv --fetch-keys http://domaine.fr/chemin/cle.gpg
Tableau de correspondance des commandes APT/Aptitude
APT | Aptitude |
---|---|
apt-get update | aptitude update |
apt-get install [--no-install-recommends] | aptitude install [--without-recommends] |
apt-get remove | aptitude remove |
apt-get purge | aptitude purge |
apt-cache search | aptitude search |
apt-cache show | aptitude show |
apt-cache policy | aptitude versions |
apt-mark hold | aptitude hold |
apt-mark unhold | aptitude unhold |
apt-mark showhold | aptitude search ~ahold |
apt-mark auto | aptitude markauto |
apt-mark manual | aptitude unmarkauto |
apt-mark showmanual | aptitude search "!~M" |