{{tag>sysadmin linux debian ubuntu apt paquet}}
====== Gérer les paquets ======
apt-get est l'interface en ligne de commande du gestionnaire de paquet APT (Advanced Packaging Tools) propre aux distributions basées sur Debian. Synaptic est un frontend de plus haut niveau.
===== Rechercher un paquet =====
apt-cache n'opère aucune modification sur le système. La commande parcours les paquets présents dans le cache et extrait les informations des méta-données.
Rechercher un motif seulement dans un nom de paquet, **apt-cache pkgnames** peut être utilisé. Sans argument, la commande retourne sur la sortie standard le nom de tous les paquets.
yoann@janus:~$ sudo apt-cache pkgnames | wc -l
40773
yoann@janus:~$ sudo apt-cache pkgnames twisted
twisted
twisted-doc-api
twisted-doc
**apt-cache search** permet de rechercher à partir d'un motif (expressions rationnelles POSIX) une chaine présente dans le nom ou la description de l'ensemble des paquets.
yoann@janus:~$ sudo apt-cache search ^fire dev
firebird2.0-dev - Development files for Firebird - an RDBMS based on InterBase 6.0 code
firebird2.1-dev - Development files for Firebird - an RDBMS based on InterBase 6.0 code
libfwbuilder-dev - Firewall Builder API library development files
libfwbuilder8 - Firewall Builder API library
firefox-2-dev - Safe and easy web browser from Mozilla - transitional package
firefox-3.0-dev - Safe and easy web browser from Mozilla - transitional package
firefox-3.5-dev - Safe and easy web browser from Mozilla - transitional package
firefox-dev - Safe and easy web browser from Mozilla - development files
xul-ext-webdeveloper - web developer extension for the Iceweasel/Firefox web browser
firefox-webdeveloper - paquet factice de transition
Dans l'exemple ci-dessus, on recherche dans tous les paquets une chaine commencant par "fire" et contenant "dev".
Afficher la description des paquets passés en paramètre:
yoann@janus:~$ sudo apt-cache show twm
Package: twm
Priority: optional
Section: universe/x11
Installed-Size: 388
...
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
===== Retrouver le paquet contenant le fichier =====
Pour retrouver le nom du paquet d'installation d'un fichier, utiliser la commande **apt-file** avec le chemin complet du fichier:
$ apt-file search /usr/share/dict/words
===== Lister les dépendances =====
Pour un paquet non installé, utiliser **dpkg-deb**:
dpkg-deb --info elasticsearch-7.7.0-no-jdk-amd64.deb
===== Lister les fichiers d'un paquet =====
==== Pour un paquet installé ====
Pour lister les fichiers contenus dans le paquet .deb nommé monPaquet, invoquer **dpkg** avec l'option **-L**:
$ dpkg -L monPaquet
==== Pour un paquet non installé ====
Si le paquet n'est pas installé mais est présent sur le système de fichier (dans le cache apt ou téléchargement d'une archivee .deb):
$ dpkg-deb --contents ./usb-creator-gtk_0.2.56.1_amd64.deb
**dpkg-deb** est l'utilitaire de manipulation des paquets .deb. On peut notamment:
* lister le contenu avec l'option %%--contents%%
* extraire les fichiers avec %%--extract%%
Remarque: Extraire les fichiers via dpkg-deb ne suffit par à faire une installation correcte. Utiliser **dpkg** pour installer un paquet.
Une solution alternative pour lister des fichiers d'une archive non installée, non présente sur la machine, utiliser **apt-file**.
$ sudo apt-file list monPaquet
===== Forcer l'installation =====
On peut forcer l'installation d'un paquet, l'argument **%%--force-help%%** permet d'afficher les options disponibles:
dpkg --force-help
dpkg --force-architecture --ignore-depends=libc6 -i elasticsearch-7.7.0-no-jdk-amd64.deb
Il est possible de forcer l'installation sans prendre en compte une ou plusieurs dépendances:
===== Réinstaller un paquet =====
Si des fichiers contenus dans un paquet sont manquant, écrasés ou corrompu, le paquet peut être réinstallé avec l'option %%--reinstall%%.
# apt-get install --reinstall monPaquet
===== Désinstaller un paquet =====
L'utilitaire **apt-get** possède deux arguments pour désinstaller un paquet:
* **apt-get remove** pour désinstaller les fichiers d'un paquet en conservant les fichiers de configuration.
* **apt-get purge** pour supprimer tous les fichiers.
$ sudo apt-get purge monPaquet
===== Lister les versions =====
Pour lister les versions disponibles d'un paquet, utiliser la commande **apt-cache** avec l'argument **showpkg**:
$ apt-cache showpkg libcurl3
===== Spécifier une architecture =====
Il est possible d'installer des binaire compilés pour une autre architecture (autre ABI). Notamment pour pouvoir bénéficier de programme 32 bits sur un système 64 bits. Pour préciser une architecture suffixer le nom du paquet par le caractère **:** et le nom de l'architecture:
$ sudo apt-get install libc6:i386
Si les paquets ne sont pas disponibles c'est que l'architecture n'est pas paramétrée. Voir le wiki [[sysadmin:linux:systeme-multi-architecture|multiarch]] pour plus de détails.
===== Supprimer le cache =====
Le cache apt contient les paquets deb précédemment installés. Ils sont conservés dans **/var/cache/apt/archives** uniquement pour permettre une réinstallation hors-ligne. Leur suppression ne supprime en rien une application déjà installée et permet de récupérer de l'espace disque si la partition commence à en manquer:
$ du -h /var/cache/apt/archives/
4,0K /var/cache/apt/archives/partial
405M /var/cache/apt/archives/
$ sudo apt-get clean
$ du -h /var/cache/apt/archives/
4,0K /var/cache/apt/archives/partial
52K /var/cache/apt/archives/
Dans l'exemple ci dessus on constate qu’après invocation de la commande %%apt-get clean%% 405 Mo ont été libérés.
===== Utiliser un proxy =====
Modifier le fichier de configuration /etc/apt/apt.conf en introduisant ou modifiant la ligne:
Acquire::http::Proxy "http://proxyServerAddress:proxyPort";
Acquire::https::Proxy "http://proxyServerAddress:proxyPort";
Si une authentification est nécessaire:
Acquire::http::Proxy "http://user:pass@proxyServerAddress:proxyPort";
Acquire::https::Proxy "http://user:pass@proxyServerAddress:proxyPort";
Selon les version d'Ubuntu, le fichier /etc/apt/apt.conf peut ne pas exister. Dans ce cas, créer un fichier /etc/apt/apt.conf.d/99-proxy-server ayant le même contenu que proposer ci-dessus.
===== Gestion des clés =====
# Lister les clés enregistrées
$ apt-key list
# supprimer une clé (après expiration par exemple)
apt-key del deb@sury.org
# ajouter une clé
wget -nv -O - https://packages.sury.org/php/apt.gpg | apt-key add
===== Anomalies =====
==== Sources introuvables ====
Pour les plus anciennes version d'Ubuntu, on peut rencontrer des problèmes lors de la mise à jour ou de l'installation des paquets car les URLs ont été modifiées, consulter le wiki [[sysadmin:linux:ubuntu:erreurs-404-sources-apt]].
==== Erreurs dépendances ====
Lors d'une mise à jour via **apt-get update && apt-get upgrade** sur un système de fichiers ne présentant plus assez d'espace, l'installation fut interrompue et les dépendances cassées. Les commandes **apt-get remove** ou **apt-get purge** qui auraient pu permettre de libérer de l'espace refusaient de s’exécuter tant que la commande **apt-get install -f** n’était pas correctement exécutée. Malheureusement celle-ci retournait également des erreur de dépendances.
Dans ce cas, la commande **dpkg** avec les options **%%--force-all%%** et **-P** a permis de supprimer les paquet présentant des erreurs de dépendances:
dpkg --force-all -P paquet
Une fois ces paquets supprimés, il redevient possible de libérer de l'espace disque via **apt-get purge/remove/autoremove** . Pour terminer, on peut réinstaller les paquets initialement en erreur.
===== Références =====
* https://askubuntu.com/questions/257290/configure-proxy-for-apt
* https://forum.ubuntu-fr.org/viewtopic.php?id=1991896