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
Un paquet est une archive contenant :
- tous les fichiers (compilés) d'une application
- des métadonnées sur l'application, telles que le nom de l'application, la version, les dépendances, etc.
- des fichiers d'installation et des directives pour pacman.
- (optionnellement) des fichiers supplémentaires pour vous faciliter la vie, comme un script de démarrage/arrêt.
Le gestionnaire de paquets d'Arch, pacman, peut installer, mettre à jour et supprimer ces paquets. L'utilisation de paquets au lieu de compiler et d'installer les programmes vous-même présente plusieurs avantages :
- mise à jour facile : pacman mettra à jour les paquets existants dès que des mises à jour seront disponibles.
- vérification des dépendances : pacman gère les dépendances pour vous, vous n'avez qu'à spécifier le programme et pacman l'installe avec tous les autres programmes dont il a besoin.
- suppression propre : pacman possède une liste de tous les fichiers d'un paquet ; de cette façon, aucun fichier n'est oublié par inadvertance lorsque vous décidez de supprimer un paquet.
- Les paquets ont souvent des dépendances optionnelles qui sont des paquets qui fournissent des fonctionnalités supplémentaires à l'application mais qui ne sont pas strictement nécessaires à son fonctionnement. Lors de l'installation d'un paquet, pacman listera les dépendances optionnelles d'un paquet, mais elles ne seront pas trouvées dans
pacman.log
. Utilisez la commande présentée dans #Interrogation de la base de données des paquets pour afficher les dépendances optionnelles d'un paquet. - Lors de l'installation d'un paquet dont vous avez besoin uniquement comme dépendance (facultative) d'un autre paquet (c'est-à-dire que vous n'en avez pas besoin explicitement), il est recommandé d'utiliser l'option
--asdeps
. Pour plus de détails, consultez la section #Motif d'installation.
pacman -Sy nom_du_paquet
au lieu de pacman -Syu nom_du_paquet
, car cela pourrait entraîner des problèmes de dépendance. Consultez System maintenance (Français)#Les mises à jour partielles ne sont pas prises en charge et BBS#89328.Installation de paquets spécifiques
Pour installer un seul paquet ou une liste de paquets, y compris les dépendances, exécutez la commande suivante :
# pacman -S nom_du_paquet1 nom_du_paquet2 ...
Pour installer une liste de paquets avec expression régulière ("regex") (consultez cette discussion dans le forum international) :
# pacman -S $(pacman -Ssq package_regex)
Parfois, il existe plusieurs versions d'un paquet dans différents dépôts (par exemple, extra et testing). Pour installer la version du dépôt extra dans cet exemple, le dépôt doit être défini devant le nom du paquet :
# pacman -S extra/nom_du_paquet.
Pour installer un certain nombre de paquets partageant des motifs similaires dans leurs noms, on peut utiliser l'expansion par accolades. Par exemple :
# pacman -S plasma-{desktop,mediacenter,nm}
Ceci peut être étendu à autant de niveaux que nécessaire :
# pacman -S plasma-{workspace{,-wallpapers},pa}
Paquets virtuels
Un paquet virtuel est un paquet spécial qui n'existe pas par lui-même, mais qui est fourni par un ou plusieurs autres paquets. Les paquets virtuels permettent aux autres paquets de ne pas nommer un paquet spécifique comme dépendance, dans le cas où il y a plusieurs candidats. Les paquets virtuels ne peuvent pas être installés par leur nom, mais ils sont installés sur votre système lorsque vous avez installé un paquet fournissant le paquet virtuel.
Installation de groupes de paquets
Certains paquets appartiennent à un groupe de paquets qui peuvent tous être installés simultanément. Par exemple, en lançant la commande :
# pacman -S gnome
vous demandera de sélectionner les paquets du groupe gnome que vous souhaitez installer.
Parfois, un groupe de paquets contient un grand nombre de paquets, et il se peut qu'il n'y en ait que quelques-uns que vous voulez ou ne voulez pas installer. Au lieu de devoir entrer tous les numéros sauf ceux que vous ne voulez pas, il est parfois plus pratique de sélectionner ou d'exclure des paquets ou des plages de paquets avec la syntaxe suivante :
Entrez une sélection (par défaut=tous) : 1-10 15
qui sélectionnera les paquets 1 à 10 et 15 pour l'installation, ou :
Entrez une sélection (par défaut=tous) : ^5-8 ^2
qui sélectionnera tous les paquets sauf 5 à 8 et 2 pour l'installation.
Pour consulter les paquets appartenant au groupe gnome, exécutez :
# pacman -Sg gnome
Consultez également https://archlinux.org/groups/ pour voir quels groupes de paquets sont disponibles.
--needed
. Suppression de paquets
Pour supprimer un seul paquet, en laissant toutes ses dépendances installées :
# pacman -R nom_du_paquet
Pour supprimer un paquet et ses dépendances qui ne sont pas requises par un autre paquet installé :
# pacman -Rs nom_du_paquet
La commande ci-dessus peut parfois refuser de s'exécuter lors de la suppression d'un groupe qui contient des paquets nécessaires. Dans ce cas, essayez :
# pacman -Rsu nom_du_paquet
Pour supprimer un paquet, ses dépendances et tous les paquets qui dépendent du paquet cible :
# pacman -Rsc nom_du_paquet
Pour supprimer un paquet, qui est requis par un autre paquet, sans supprimer le paquet dépendant :
# pacman -Rdd nom_du_paquet
Pacman sauvegarde des fichiers de configuration importants lors de la suppression de certaines applications et les nomme avec l'extension : .pacsave. Pour empêcher la création de ces fichiers de sauvegarde, utilisez l'option -n
:
# pacman -Rn nom_du_paquet
Mise à jour des paquets
- Les utilisateurs doivent suivre les conseils de la section System maintenance (Français)#Mises à Jour du Système pour mettre à jour leur système régulièrement et ne pas exécuter aveuglément la commande suivante.
- Arch ne prend en charge que les mises à niveau complètes du système. Consultez les sections System maintenance (Français)#Les mises à jour partielles ne sont pas prises en charge et #Installation de paquets pour plus de détails.
Pacman peut mettre à jour tous les paquets du système avec une seule commande. Cela peut prendre un certain temps selon le degré de «fraîcheur» du système. La commande suivante synchronise les bases de données des dépôts et met à jour les paquets du système, en excluant les paquets "locaux" qui ne sont pas dans les dépôts configurés :
# pacman -Syu
Interrogation de la base de données des paquets
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
Nettoyage du 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 supplémentaires
- 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/