pacman (Français)
pacman, le gestionnaire de paquets, est l'une des principales caractéristiques distinctives d'Arch Linux. Il combine un format de paquet binaire simple avec un système de construction de paquets facile à utiliser. Le but de pacman est de permettre de gérer facilement les paquets, qu'ils proviennent des dépôts officiels ou des propres constructions de l'utilisateur.
Pacman maintient le système à jour en synchronisant les listes de paquets avec le serveur maître. Ce modèle serveur/client permet également à l'utilisateur de télécharger/installer des paquets par une simple commande, avec toutes les dépendances requises.
Pacman est écrit en langage de programmation C et utilise le programme bsdtar(1) pour l'empaquetage en archives tar.
pacman -Ql pacman pacman-contrib | grep -E 'bin/.+'
pour consulter la liste complète.Utilisation
Ce qui suit n'est qu'un petit échantillon des opérations que pacman peut effectuer. Pour lire plus d'exemples, reportez-vous à pacman(8).
Installation de paquets
Installation d'une liste de paquets :
pacman -S paquet_1 paquet_2
Si le paquet existe sous plusieurs dépôts, on peut éventuellement en préciser un :
pacman -S extra/paquet
Si vous avez l'archive d'un paquet sur votre disque :
pacman -U archive_du_paquet.pkg.tar.xz
Ou même si vous avez le lien de l'archive, par exemple :
pacman -U https://archlinux.org/packages/core/x86_64/pacman/download/
Pour l'installation d'une liste de paquets depuis un fichier texte (un paquet par ligne) :
pacman -S - < pkglist.txt
Il est possible aussi de faire ainsi si le nombre de paquets n'est pas trop grand :
pacman -S $(cat pkglist.txt)
Suppression de paquets
pacman -R paquet_1
Pour garder un système propre, il faut aussi supprimer les dépendances qui ne sont plus requises par aucun paquet :
pacman -Rs paquet_1
Par défaut, les fichiers de configuration modifiés sont sauvegardés avec l'extension .pacsave. Pour ne pas les conserver :
pacman -Rsn paquet_1
Mise à jour des paquets
Mise à jour suite à une synchronisation faite précédemment :
pacman -Su
Synchronisation puis, mise à jour :
pacman -Syu
Pour installer un nouveau paquet tout en mettant à jour le système :
pacman -Syu paquet_1
Recherche
Pour avoir une aide rapide :
pacman -Q --help pacman -S --help pacman -R --help pacman -F --help
Recherche d'un paquet parmi ceux installés :
pacman -Qs paquet
Recherche d'un paquet dans les dépôts :
pacman -Ss paquet
pacman peut effectuer une recherche avec des expressions régulières :
pacman -Ss gn.me win.*manager
extra/mutter 3.14.1.5-1 (gnome) A window manager for GNOME community/metacity 3.14.1-1 Legacy GNOME window manager
Informations complètes sur un paquet installé (par exemple pour vérifier si certaines des dépendances optionnelles peuvent vous apporter des fonctionnalités supplémentaires):
pacman -Qi paquet
ou non:
pacman -Si paquet
-Qii
, vous pouvez connaître les éventuels fichiers de sauvegarde d'un paquet et leur état.
avec -Qii|grep ^MODIFIED
, vous pouvez connaître tous fichiers de sauvegarde modifiés par rapport à ceux d'origine.
Liste des fichiers d'un paquet installé :
pacman -Ql paquet_1
Savoir à quel paquet appartient l'un des fichiers du système:
pacman -Qo /chemin/vers/le/fichier
pacman -F
, ou de lister les fichiers d'un paquet non installé avec l'option -l comme pacman -Fl
.Liste des paquets n'appartenant à aucun dépôt configuré dans pacman.conf :
pacman -Qm
Liste des paquets (dépendances) n'étant plus requis par le système (le paquet qui a causé leur installation n'est plus présent) :
pacman -Qdt
Nettoyer le cache des paquets
pacman stocke les paquets téléchargés ici /var/cache/pacman/pkg/
et n'enlève pas automatiquement les versions anciennes ou désinstallées. Il faut donc vider régulièrement ce dossier pour éviter qu'il ne prenne une taille démesurée.
La commande suivante de pacman supprime tous les paquets non-installés du cache (anciennes versions ou non installées sur le système) :
pacman -Sc
- Ne lancez cette commande que si vous êtes certain que les paquets installés sont stables sur votre système et qu’un downgrade ne sera pas nécessaire. Cela va supprimer toutes les anciennes versions des paquets en ne laissant que les dernières versions installées. Il peut être utile de conserver les anciennes versions des paquets au cas où une mise à jour rendrait le système instable ou inopérant. La loi de Murphy s’appliquant toujours dans ce cas, c’est juste après un vidage complet du cache que cela arrivera. Si tous les anciens paquets ont été supprimés du cache, la seule façon de les récupérer est de passer par un dépôt alternatif comme Arch Linux Archive).
- Il est aussi possible de vider complètement le cache par la commande
pacman -Scc
. Cela empêche toute réinstallation de paquets depuis le cache et impose donc de les télécharger à nouveau, ce qui n'est pas un problème grâce à Arch Linux Archive). Donc assez utile afin de récupérer de l’espace disque.
À cause de toutes les restrictions énoncées avant, il est recommandé d’utiliser un script dédié au nettoyage du cache de pacman, afin de contrôler plus finement les paquets à supprimer :
- La commande paccache, fourni avec le paquet pacman-contrib, supprime par défaut tous les paquets du cache sauf les trois dernières versions les plus récentes :
paccache -r
Cependant, paccache ne vérifiera pas si les paquets sont encore installés sur le système et laissera donc les paquets non-installés dans le cache. Pour supprimer du cache toutes les versions des paquets non-installés, vous devez lancer la commande suivante dans un second temps :
paccache -ruk0
Voir paccache -h
pour plus d’options.
- Vous pouvez également installer et utiliser les scripts alternatifs : pkgcachecleanAUR (écrit en C)... :
pkgcacheclean
Pour vérifier les paquets à supprimer sauf les trois plus récents :
pacleaner -m
Pour vérifier les paquets non-installés :
pacleaner -u
Utilisez l’option --delete pour supprimer les paquets :
pacleaner -m --delete pacleaner -u --delete
Les options par défaut peuvent être modifiées dans un fichier de configuration (nombre de paquets à conserver, chemin d’accès vers le cache...)
Commandes additionnelles
- Téléchargement des paquets seulement:
pacman -Sw paquet_1 paquet_2
- Vérifier qu'il ne manque pas de fichiers installés sur l'ensemble des paquets:
pacman -Qqk
Motif d'installation
Vous pouvez modifier certains éléments de la base de données des paquets installés, notamment la raison d'installation d'un paquet (installés en tant que dépendances ou explicitement) :
pacman -D --asexplicit paquet_1 paquet_2 pacman -D --asdeps paquet_1 paquet_2
Configuration
pacman se configure à l'aide du fichier /etc/pacman.conf (cf. pacman.conf(5)).
Options globales
Ces options se configurent sous la section [options], quelques exemples :
-
Architecture : si elle est définie, pacman n'installera que les paquets de cette architecture. Elle peut prendre la valeur auto (l'architecture sera définie par un appel à
uname -m
). Elle permet aussi l'utilisation de la variable$arch
dans l'URI d'un dépôt. - IgnorePkg : indique à pacman les paquets à ne pas mettre à jour.
- IgnoreGroup : indique à pacman les groupes à ne pas mettre à jour.
-
SigLevel : Indique à
pacman
comment gérer les signatures : pacman-key - Color : la sortie de pacman en console sera colorisée.
-
NoExtract : Indique à
pacman
de ne pas extraire certains fichiers (ex. Empêcher l'installation de locales)
Dépôts et miroirs
La syntaxe est simple :
[nom_du_depôt] Server=miroir1_du_depôt Server=miroir2_du_depôt
cf. Détails des dépôts.
Dépannage
Crash de pacman durant une mise à jour
Dans le cas où pacman crashe durant une mise à jour, une suppression de paquet ou encore une réinstallation d'un paquet, il faudra faire ces différentes étapes :
- Démarrer sur un iso d'installation ArchLinux
- Monter votre système de fichier racine (
/
,/boot
,/var
, etc., s'ils existent) - Mettre à jour votre base de données pacman ainsi que mettre à jour vos paquets via la commande
pacman -r /chemin/vers/racine -Syyu
- Réinstaller le(s) paquet(s) cassé(s) via la commande
pacman -r /chemin/vers/racine -S paquet
Un paquet a été mis à jour mais pacman dit que le système est à jour
Les miroirs de pacman ne sont pas directement synchronisé. Il faut compter environ 24 heures avant de pouvoir recevoir la mise à jour tant désirée.
"Le paquet est introuvable"
Premièrement, assurez vous que le paquet que vous tentez d'installer existe réellement. Si ce paquet existe vraiment, vérifiez que l'orthographe est correcte. Il se peut aussi que le paquet existe et que l'orthographe est correcte mais que la liste de vos paquets est obsolète. Dans ce cas, un simple pacman -Syyu fera amplement l'affaire.
Un même paquet se met à jour continuellement
Ce problème est du a des entrées dupliquées dans /var/lib/pacman/local/ comme s'il y avait deux instances de linux. La commande pacman -Qi donne la bonne version et la commande pacman -Qu reconnait la plus vieille version ET essaye de la mettre à jour. La solution est donc d'effacer la mauvaise entrée dans /var/lib/pacman/local/