Présentation de pacman

pacman est le gestionnaire de paquets d’Archlinux. Il combine un ensemble d’outils binaires avec un système relativement simple pour construire des paquets. (cf makepkg et ABS). Le but étant de facilement gérer les paquets, qu’ils proviennent des dépôts officiels ou qu’ils soient compilés par l’utilisateur.

pacman permet de garder votre système à jour en synchronisant la liste des paquets depuis un serveur puis de télécharger/installer les nouveaux paquets, ainsi que leur dépendances, avec une simple commande.

Configuration

pacman se configure à l’aide du fichier /etc/pacman.conf (cf. page man: 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 à ). Elle permet aussi l’utilisation de la variable 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.
  • UseDelta : cette option ne prend pas de paramètre et permet d’indiquer à pacman de télécharger les deltas de paquets s’ils sont disponibles. (cf. Utilisation des deltas
  • SigLevel : Indique à comment gérer les signatures : pacman-key
  • Color : la sortie de pacman en console sera colorisée.
  • NoExtract : Indique à de ne pas extraire certains fichiers (ex. Empêcher l’installation de locales)

Dépôts

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.

Utilisation

Pour une description complète, merci de vous référer à la page man : pacman(8). Certaines options sont à prendre avec beaucoup de précaution, consultez ces quelques conseils pour utiliser pacman au mieux.

Voici quelques exemples d’opérations :

Synchronisation de la base de paquets

Cette opération met à jour la liste des paquets disponibles sur les miroirs :

pacman -Sy

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://www.archlinux.org/packages/core/i686/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)

Mise à jour des paquets {#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

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

Recherche

Pour avoir une aide rapide :

pacman -Q --help
pacman -S --help
pacman -R --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 :

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

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

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

Rétrograder des paquets {#rétrograder_des_paquets}

Il est parfois nécessaire de revenir temporairement à la version précédente d’un paquet (régression, bug), différents moyens existent: Downgrade.

Nettoyer le cache des paquets

pacman stocke les paquets téléchargés ici 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 paquest non-installés du cache (anciennes versions ou non installées sur le système):

pacman -Sc

À 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 , 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 pour plus d’options.

  • Vous pouvez également installer et utiliser les scripts alternatifs : pkgcacheclean(é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…)

Modification de la base de données {#modification_de_la_base_de_données}

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

En vrac

  • 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

Une astuce totalement inutile et (peut-être) indispensable… {#une_astuce_totalement_inutile_et_peut_être_indispensable}

Il existe une petite astuce avec Pacman que — j’en suis sûr — vous allez vous empresser de tester. Éditez le fichier “/etc/pacman.conf” et ajoutez l’option “ILoveCandy” dans la rubrique en dessous de “[options]” :

[options] ILoveCandy

Vous obtiendrez par la suite une sortie de Pacman similaire au jeu du même nom lorsque vous mettrez votre système à jour.

Empêcher l’installation de locales {#empêcher_linstallation_de_locales}

L’option du fichier est très utile si certaines parties de paquets vous sont inutiles. Les locales sont un cas typique de ce genre de fichiers dont on pourrait vouloir se passer.

Aucun des fichiers listés dans les règles de l’option n’est extrait lors de l’installation d’un paquet. Le motif *** est autorisé pour désigner un ensemble de fichier (comme on le ferait dans un shell). Par exemple désigne tous les fichiers dans le dossier ainsi que dans ses sous-dossiers. Il est possible d’inverser le comportement d’une règle en la préfixant d’un **!. Cela annule les règles précedentes sur les fichiers correspondant.

Donc, si on veut se passer de toutes les locales sauf celles francofrançaises, on obient les règles suivantes à ajouter dans la section de .

Les règles peuvent aussi être indiquées sur une seul ligne

Récupérer les sources d’un paquet {#récupérer_les_sources_dun_paquet}

git clone --branch packages/nom_du_paquet --single-branch https://git.archlinux.org/svntogit/packages.git nom_du_paquet

Problèmes

Crash de pacman durant une mise à jour {#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 (, , , etc., s’ils existent)
  • Mettre à jour votre base de données pacman ainsi que mettre à jour vos paquets via la commande
  • Réinstaller le(s) paquet(s) cassé(s) via la commande

Un paquet a été mis à jour mais pacman dit que le système est à jour {#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 {#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/

Équivalences entre Pacman et les autres gestionnaires de paquets {#équivalences_entre_pacman_et_les_autres_gestionnaires_de_paquets}

Si vous avez l’habitude d’utiliser Arch, Red Hat/Fedora, Debian/Ubuntu, SUSE/openSUSE ou encore Gentoo, et que vous rencontrez des difficultés à prendre en main le gestionnaire de paquets mais que vous êtes à l’aise avec un autre, vous pouvez consulter la page Pacman Rosetta (en), qui donne les commandes équivalentes entre chacun des gestionnaires de paquets.

Si vous êtes très à l’aise avec Pacman mais que vous n’arrivez pas à prendre d’autres gestionnaires de paquets en main, pacapt est une solution.