pacman (Français)

From ArchWiki

Tango-preferences-desktop-locale.pngCet article ou section a besoin d'être traduit(e).Tango-preferences-desktop-locale.png

Notes: Cet article ne respecte pas la structure de sa version anglophone, merci de le réécrire en conséquence. Vous pouvez aussi ajouter à la version anglophone les informations à-jour et dignes d’intérêt qui ne seraient portées que par la version francophone. Voir ArchWiki:Translation Team (Français) (Discuss in Talk: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.

Tip: Le paquetage pacman contient des outils tels que makepkg et vercmp(8). D'autres outils utiles tels que pactree et checkupdates se trouvent dans pacman-contrib. (antérieurement inclus avec pacman). Lancez 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).

Astuce: Pour ceux qui ont déjà utilisé d'autres distributions Linux, il existe un article utile : Pacman Rosetta.

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.
Note:
  • 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.
Attention: Lors de l'installation de paquets dans Arch, évitez de rafraîchir la liste des paquets sans mise à jour du système (par exemple, lors d'une #Impossibilité de récupérer les paquets à l'installation dans les dépôts officiels). En pratique, ne lancez pas 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.

Note: Si un paquet de la liste est déjà installé sur le système, il sera réinstallé même s'il est déjà à jour. Ce comportement peut être outrepassé par l'option --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
Attention: Lorsqu'on supprime un groupe, tel que gnome, le motif d'installation des paquets du groupe est ignoré, car on agit comme si chaque paquet du groupe était listé séparément. Le motif d'installation des dépendances est toujours respecté.

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 :

Attention: Cette opération est récursive, et doit être utilisée avec précaution car elle peut supprimer de nombreux paquets potentiellement nécessaires.
# pacman -Rsc nom_du_paquet

Pour supprimer un paquet, qui est requis par un autre paquet, sans supprimer le paquet dépendant :

Attention: L'opération suivante peut casser un système et doit être évitée. Consultez System maintenance (Français)#Éviter certaines commandes de pacman.
# 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
Note: Pacman ne supprimera pas les configurations que l'application elle-même crée (par exemple "dotfiles" dans le dossier home).

Mise à jour des paquets

Attention:

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
Astuce: avec -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
Astuce: pkgfile permet de rechercher un fichier dans les paquets non installés comme 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
Attention: -Qdt liste les paquets non installés explicitement et dont aucun autre paquet ne dépend, mais cela ne veut pas forcément dire que vous ne les utilisez pas. Un exemple, vous installez un paquet qui dépend de zip, ce dernier s'installe, un jour, il n'en dépend plus, zip deviendra non requis par le système, mais vous l'utilisez peut-être quand même. (cf Modification de la base de données ci-dessous)

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
Attention:
  • 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
Note: En ce qui concerne l'url indiquée, pacman remplace automatiquement $repo par le nom du dépôt et $arch par l'architecture configurée.
Note: La directive Include permet d'inclure un autre fichier à la configuration, en pratique, le contenu du fichier cible remplace la ligne de la directive.

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/

Voir aussi