pacman (Français)

État de la traduction:
Cet article est la version francophone de
pacman
. Date de la dernière traduction: 2022-10-05. Vous pouvez aider à synchroniser la traduction s'il y a eu des
changements
dans la version anglaise.
Related articles
Creating packages
Downgrading packages (Français)
pacman (Français)/Package signing (Français)
pacman (Français)/Pacnew and Pacsave (Français)
pacman/Restore local database
pacman/Rosetta
pacman (Français)/Tips and tricks (Français)
Frequently asked questions (Français)#Gestion des paquets
System maintenance (Français)
Arch Build System (Français)
Official repositories (Français)
Arch User Repository (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
.
Astuce
Le paquet
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
#Impossible de télécharger les paquets à l'installation
dans les dépôts officiels). En pratique, ne lancez pas
pacman -Sy
nom_du_paquet
au lieu de
pacman -Sy
u
nom_du_paquet
, car cela pourrait entraîner des problèmes de dépendance. Consultez
Mises à jour partielles
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.
Astuce
Lorsqu'il y a plusieurs candidats, la liste des choix présentés sera d'abord triée par
repositories
dans l'ordre où ils apparaissent dans
pacman.conf
, puis par ordre alphabétique lorsqu'il y a plusieurs résultats provenant du même dépôt.
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
Évitez 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 répertoire home).
Mise à jour des paquets
Attention
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 à jour complètes du système. Consultez les sections
Mises à jour partielles
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
Pacman interroge la base de données des paquets locaux avec l'option
-Q
, la base de données de synchronisation avec l'option
-S
et la base de données des fichiers avec l'option
-F
. Consultez
pacman -Q --help
,
pacman -S --help
et
pacman -F --help
pour les sous-options respectives de chaque paramètre.
Pacman peut rechercher des paquets dans la base de données, en cherchant à la fois dans les noms et les descriptions des paquets :
$ pacman -Ss
string1
string2
...
Parfois, l'ERE (Expressions Régulières Étendues) intégrée de
-s
peut causer beaucoup de résultats indésirables, elle doit donc être limitée pour ne correspondre qu'au nom du paquet, et non à sa description ou à tout autre champ :
$ pacman -Ss '^vim-'
Pour rechercher des paquets déjà installés :
$ pacman -Qs
string1
string2
...
Pour rechercher les noms de fichiers de paquets dans les paquets distants :
$ pacman -F
string1
string2
...
Pour afficher des informations détaillées sur un paquet donné :
$ pacman -Si
nom_du_paquet
.
Pour les paquets installés localement :
$ pacman -Qi
nom_du_paquet
.
Si vous passez deux options
-i
, vous afficherez également la liste des fichiers de sauvegarde et leur état de modification :
$ pacman -Qii
nom_du_paquet
.
Pour récupérer la liste des fichiers installés par un paquet :
$ pacman -Ql
nom_du_paquet
.
Pour récupérer la liste des fichiers installés par un paquet distant :
$ pacman -Fl
nom_du_paquet
.
Pour vérifier la présence des fichiers installés par un paquet :
$ pacman -Qk
nom_du_paquet
.
Passer deux fois l'option
k
permet d'effectuer une vérification plus approfondie.
Pour interroger la base de données afin de savoir à quel paquet appartient un fichier dans le système de fichiers :
$ pacman -Qo
/path/to/file_name
.
Pour interroger la base de données afin de savoir à quel paquet distant appartient un fichier :
$ pacman -F
/path/to/file_name
.
Pour lister tous les paquets qui ne sont plus nécessaires comme dépendances (orphelins) :
$ pacman -Qdt
Pour lister tous les paquets explicitement installés et non requis comme dépendances :
$ pacman -Qet
Consultez
pacman (Français)/Tips and tricks (Français)
pour plus d'exemples.
Pactree
Note
pactree(8)
ne fait plus partie du paquet
pacman
. Il se trouve maintenant dans
pacman-contrib
.
Pour afficher l'arbre de dépendance d'un paquet :
$ pactree
nom_du_paquet
Pour afficher l'arbre des dépendances d'un paquet, passez l'option inverse
-r
à
pactree
, ou utilisez
whoneeds
de
pkgtools
AUR
[
broken link
: package not found]
.
Structure de la base de données
Les bases de données de
pacman
sont normalement situées dans
/var/lib/pacman/sync
. Pour chaque dépôt spécifié dans
/etc/pacman.conf
, il y aura un fichier de base de données correspondant situé à cet endroit. Les fichiers de base de données sont des archives tar gzippées contenant un répertoire pour chaque paquet, par exemple pour le paquet
which
:
$ tree which-2.21-5
which-2.21-5
|-- desc
Le fichier
desc
contient des méta-données telles que la description du paquet, les dépendances, la taille du fichier et le hachage MD5.
Nettoyage du cache des paquets
Pacman stocke ses paquets téléchargés dans
/var/cache/pacman/pkg/
et ne supprime pas automatiquement les anciennes versions ou les versions désinstallées. Cela présente quelques avantages :
Il permet de
rétrograder
un paquet sans avoir besoin de récupérer la version précédente par d'autres moyens, tels que l'
Arch Linux Archive
.
Un paquet qui a été désinstallé peut facilement être réinstallé directement depuis le répertoire de cache, sans nécessiter un nouveau téléchargement depuis le dépôt.
Cependant, il est nécessaire de nettoyer délibérément le cache périodiquement pour éviter que le répertoire ne grossisse indéfiniment en taille.
Le script
paccache(8)
, fourni dans le paquet
pacman-contrib
, supprime par défaut toutes les versions en cache des paquets installés et désinstallés, à l'exception des trois plus récents :
# paccache -r
Activez
et
démarrez
paccache.timer
pour éliminer les paquets inutilisés chaque semaine.
Astuce
Vous pouvez créer un
hook
pour lancer cette opération automatiquement après chaque transaction
pacman
,
installez
pacman-cleanup-hook
AUR
et consultez
ces autres examples
.
Vous pouvez également définir le nombre de versions récentes que vous souhaitez conserver. Pour ne conserver qu'une seule version antérieure, utilisez :
# paccache -rk1
Ajoutez le paramètre
-u
/
--uninstalled
pour limiter l'action de
paccache
aux paquets désinstallés. Par exemple, pour supprimer toutes les versions mises en cache des paquets non installés, utilisez ce qui suit :
# paccache -ruk0
Consultez
paccache -h
pour plus d'options.
Pacman a également des options intégrées pour nettoyer le cache et les fichiers de base de données restants des dépôts qui ne sont plus listés dans le fichier de configuration
/etc/pacman.conf
. Cependant,
pacman
n'offre pas la possibilité de conserver un certain nombre d'anciennes versions et est donc plus agressif que les options par défaut de
paccache
.
Pour supprimer tous les paquets mis en cache qui ne sont pas actuellement installés, ainsi que la base de données de synchronisation non utilisée, exécutez :
# pacman -Sc
Pour supprimer tous les fichiers du cache, utilisez deux fois l'option clean, c'est l'approche la plus agressive et elle ne laissera rien dans le répertoire du cache :
# pacman -Scc
Attention
Il faut éviter de supprimer du cache toutes les anciennes versions des paquets installés et tous les paquets désinstallés, sauf si l'on a désespérément besoin de libérer de l'espace disque. Cela empêchera de rétrograder ou de réinstaller des paquets sans les télécharger à nouveau.
pkgcacheclean
AUR
et
pacleaner
AUR
sont deux autres alternatives pour nettoyer le cache.
Commandes supplémentaires
Télécharger un paquet sans l'installer :
# pacman -Sw
nom_du_paquet
Installer un paquet "local" qui ne provient pas d'un dépôt distant (par exemple, le paquet provient de l'
AUR
) :
# pacman -U
/path/to/package/package_name-version.pkg.tar.zst
.
Pour conserver une copie du paquet local dans le cache de
pacman
, utilisez :
# pacman -U file:///
path/to/package/package_name-version.pkg.tar.zst
Installer un paquet 'distant' (ne provenant pas d'un dépôt indiqué dans les fichiers de configuration de
pacman
) :
# pacman -U
http://www.example.com/repo/example.pkg.tar.zst
.
Pour inhiber les actions
-S
,
-U
et
-R
, on peut utiliser
-p
.
Pacman liste toujours les paquets à installer ou à supprimer et demande la permission avant d'agir.
Motif d'installation
La base de données
pacman
organise les paquets installés en deux groupes, selon le motif d'installation :
explicitly-installed
: paquets qui ont été littéralement passés à une commande générique
pacman
-S
ou
-U
;
dependencies
: paquets qui, bien que n'ayant jamais (en général) été passés à une commande d'installation
pacman
, ont été
implicitement
installés parce qu'ils étaient
nécessaire
aux paquets explicitement installés.
Lors de l'installation d'un paquet, il est possible de forcer son motif d'installation en tant que
dépendance
avec :
# pacman -S --asdeps
nom_du_paquet
.
Cette commande est normalement utilisée car les paquets explicitement installés peuvent proposer des
dépendances optionnelles
, généralement pour des fonctionnalités non essentielles pour lesquelles l'utilisateur a toute latitude.
Astuce
L'installation de dépendances optionnelles avec
--asdeps
garantira que, si vous
supprimez les paquets orphelins
,
pacman
supprimera également les paquets optionnels définis de cette manière.
Cependant, lors de la
réinstallation
d'un paquet, le motif de l'installation actuelle est préservée par défaut.
La liste des paquets explicitement installés peut être affichée avec
pacman -Qe
, tandis que la liste complémentaire des dépendances peut être affichée avec
pacman -Qd
.
Pour changer le motif de l'installation d'un paquet déjà installé, exécutez :
# pacman -D --asdeps
nom_du_paquet
.
Utilisez
--asexplicit
pour effectuer l'opération inverse.
Note
L'utilisation des options
--asdeps
et
--asexplicit
lors de la mise à jour, comme avec
pacman -Syu
nom_du_paquet
--asdeps
, est déconseillée. Cela modifierait le motif de l'installation non seulement du paquet en cours d'installation, mais aussi des paquets mis à jour.
Ce qui se passe pendant l'installation/mise à jour/suppression d'un paquet
En cas de succès, le déroulement d'une transaction suit cinq étapes de haut niveau plus des «hooks» pré/post transaction :
Initialiser la transaction s'il n'y a pas de verrou sur la base de données.
Choisir les paquets qui seront ajoutés ou supprimés dans la transaction.
Préparer la transaction, selon les paramètres, en effectuant des contrôles d'intégrité sur les bases de données de synchronisation, des paquets et de leurs dépendances.
Effectuer la transaction :
Le cas échéant, télécharger les paquets (
_alpm_sync_load
)
Si des «hooks» pré-existants de
pacman
PreTransaction
s'appliquent, ils sont exécutés.
Les paquets qui doivent être remplacés, qui sont en conflit ou qui sont explicitement ciblés pour être supprimés sont supprimés.
S'il y a des paquets à ajouter, alors chaque paquet est validé.
Si le paquet a un script d'installation, sa fonction
pre_install
est exécutée (ou
pre_upgrade
ou
pre_remove
dans le cas d'un paquet mis à jour ou supprimé).
Pacman supprime tous les fichiers d'une version préexistante du paquet (dans le cas d'un paquet mis à jour ou supprimé). Cependant, les fichiers qui étaient marqués comme fichiers de configuration dans le paquet sont conservés (consultez
/Pacnew and Pacsave (Français)
).
Pacman désarchive le paquet et transfère ses fichiers dans le système de fichiers (dans le cas d'un paquet installé ou mis à jour). Les fichiers qui écraseraient les fichiers de configuration conservés et modifiés manuellement (consultez l'étape précédente) sont stockés sous un nouveau nom (.pacnew).
Si le paquet a un script d'installation, sa fonction
post_install
est exécutée (ou
post_upgrade
ou
post_remove
dans le cas d'un paquet mis à jour ou supprimé).
Si les crochets
PostTransaction
de
pacman
qui existent à la fin de la transaction s'appliquent, ils sont exécutés.
Libérer la transaction et la ressource de la transaction (c'est-à-dire le verrou de la base de données).
Configuration
Les paramètres de Pacman sont situés dans
/etc/pacman.conf
: c'est l'endroit où l'utilisateur configure le programme pour qu'il fonctionne de la manière souhaitée. Des informations détaillées sur le fichier de configuration peuvent être trouvées dans
pacman.conf(5)
.
Options générales
Les options générales se trouvent dans la section
[options]
. Lisez
pacman.conf(5)
ou regardez dans le fichier
pacman.conf
par défaut pour obtenir des informations sur ce qui peut être fait ici.
Comparer les versions avant de mettre à jour
Pour consulter les anciennes et nouvelles versions des paquets disponibles, décommentez la ligne "VerbosePkgLists" dans
/etc/pacman.conf
. La sortie de
pacman -Syu
sera la suivante :
Package (6) Ancienne version Nouvelle version Changement net Taille du téléchargement

extra/libmariadbclient 10.1.9-4 10.1.10-1 0.03 MiB 4.35 MiB
extra/libpng 1.6.19-1 1.6.20-1 0.00 MiB 0.23 MiB
extra/mariadb 10.1.9-4 10.1.10-1 0.26 MiB 13.80 MiB
Activation des téléchargements parallèles
Pacman 6.0 a introduit l'option permettant de télécharger des paquets en parallèle.
ParallelDownloads
sous
[options]
doit être défini comme un nombre entier positif dans
/etc/pacman.conf
pour utiliser cette fonctionnalité (par exemple,
5
). Les paquets seront autrement téléchargés séquentiellement si cette option n'est pas définie.
Ignorer la mise à jour d'un paquet
Attention
Faites attention en ignorant des paquets, car les
mises à jour partielles
ne sont pas prises en charge.
Pour qu'un paquet spécifique soit ignoré lors de la
mise à jour
du système, ajoutez cette ligne dans la section
[options]
:
IgnorePkg=linux
Pour plusieurs paquets, utilisez une liste séparée par des espaces, ou utilisez des lignes
IgnorePkg
supplémentaires. Les motifs
glob
peuvent également être utilisés. Si vous voulez ignorer des paquets une seule fois, vous pouvez également utiliser l'option
--ignore
sur la ligne de commande - cette fois avec une liste séparée par des virgules.
Il sera toujours possible de mettre à jour les paquets ignorés en utilisant
pacman -S
: dans ce cas,
pacman
vous rappellera que les paquets ont été inclus dans une déclaration
IgnorePkg
.
Ignorer la mise à jour d'un groupe de paquets
Attention
Faites attention en ignorant des groupes de paquets, car les
mises à jour partielles
ne sont pas prises en charge.
Comme pour les paquets, il est également possible d'ignorer un groupe de paquets entier :
IgnoreGroup=gnome
Ignorer la mise à jour d'un fichier
Tous les fichiers listés avec une directive
NoUpgrade
ne seront jamais touchés lors de l'installation ou de la mise à jour d'un paquet, et les nouveaux fichiers seront installés avec une extension
.pacnew
.
NoUpgrade=
chemin/vers/fichier
Plusieurs fichiers peuvent être spécifiés comme ceci :
NoUpgrade=
path/to/file1 path/to/file2
Note
Le chemin d'accès fait référence aux fichiers de l'archive du paquet. Par conséquent, n'incluez pas le «slash» de départ.
Ignorer l'installation de fichiers sur le système
Pour toujours ignorer l'installation de répertoires spécifiques, listez-les sous
NoExtract
. Par exemple, pour éviter l'installation des unités
systemd
, utilisez ceci :
NoExtract=usr/lib/systemd/system/*
Les règles ultérieures remplacent les précédentes, et vous pouvez annuler une règle en la faisant précéder de
!
.
Attention
Pacman émet des messages d'avertissement sur les locales manquantes lors de la mise à jour d'un paquet pour lequel les locales ont été effacées par
localepurge
ou
bleachbit
. En commentant l'option
CheckSpace
dans
pacman.conf
, vous supprimez ces avertissements, mais tenez compte du fait que la fonctionnalité de vérification des espaces sera désactivée pour tous les paquets.
Maintenir plusieurs fichiers de configuration
Si vous avez plusieurs fichiers de configuration (par exemple, la configuration principale et la configuration avec le dépôt
testing
activé) et que vous devez partager des options entre les configurations, vous pouvez utiliser l'option
Include
déclarée dans les fichiers de configuration, par exemple :
Include =
/path/to/common/settings
.
où le fichier
/path/to/common/settings
contient les mêmes options pour les deux configurations.
Hooks
Pacman peut exécuter des hooks pré- et post-transactions à partir du répertoire
/usr/share/libalpm/hooks/
; d'autres répertoires peuvent être spécifiés avec l'option
HookDir
dans
pacman.conf
, qui est par défaut
/etc/pacman.d/hooks
. Les noms de fichiers de hooks doivent être suffixés par
.hook
. Les hooks de Pacman ne sont pas interactifs.
Les hooks Pacman sont utilisés, par exemple, en combinaison avec
systemd-sysusers
et
systemd-tmpfiles
pour créer automatiquement des utilisateurs et des fichiers système lors de l'installation de paquets. Par exemple,
tomcat8
AUR
spécifie qu'il veut un utilisateur système appelé
tomcat8
et certains répertoires appartenant à cet utilisateur. Les hooks
pacman
systemd-sysusers.hook
et
systemd-tmpfiles.hook
invoquent
systemd-sysusers
et
systemd-tmpfiles
lorsque
pacman
détermine que
tomcat8
AUR
contient des fichiers spécifiant des utilisateurs et des fichiers tmp.
Pour plus d'informations sur les hooks alpm, consultez
alpm-hooks(5)
.
Dépôts et miroirs
Outre la section spéciale
[options]
, chaque autre
[section]
de
pacman.conf
définit un dépôt de paquets à utiliser. Un
dépôt
est une collection
logique
de paquets, qui sont stockés
physiquement
sur un ou plusieurs serveurs : pour cette raison, chaque serveur est appelé
miroir
du dépôt.
Les dépôts se distinguent entre les
officiels
et les
non officiels
. L'ordre des dépôts dans le fichier de configuration est important ; les dépôts listés en premier seront prioritaires sur ceux listés plus loin dans le fichier lorsque des paquets dans deux dépôts ont des noms identiques, indépendamment du numéro de version. Afin d'utiliser un dépôt après l'avoir ajouté, vous devrez d'abord
mettre à jour
l'ensemble du système.
Chaque section de dépôt permet de définir la liste de ses miroirs directement ou dans un fichier externe dédié via la directive
Include
; par exemple, les miroirs des dépôts officiels sont inclus dans
/etc/pacman.d/mirrorlist
. Consultez l'article
Miroir
pour la configuration des miroirs.
Répertoire de cache des paquets
Pacman stocke les fichiers de paquets téléchargés dans un cache, dans un répertoire désigné par
CacheDir
dans la section
[options]
de
pacman.conf
. (la valeur par défaut est
/var/cache/pacman/pkg/
si elle n'est pas définie).
Le répertoire de cache peut s'agrandir avec le temps, même si vous ne conservez que les versions les plus récentes des paquets installés.
Si vous souhaitez déplacer ce répertoire vers un endroit plus pratique, effectuez l'une des opérations suivantes :
Définissez l'option
CacheDir
dans
pacman.conf
avec un nouveau répertoire. N'oubliez pas de conserver le slash de fin de ligne.
C'est la solution recommandée
.
Montez une partition dédiée ou par exemple
un sous-volume Btrfs
dans
/var/cache/pacman/pkg/
.
Bind-mount le répertoire sélectionné dans
/var/cache/pacman/pkg/
.
Attention
Ne faites pas de lien symbolique
du répertoire
/var/cache/pacman/pkg/
vers un autre emplacement. Cela
entraînera
un mauvais comportement de pacman, en particulier lorsque pacman tente de se mettre à jour.
Sécurité des paquets
Pacman prends en charge les signatures de paquets, qui ajoutent une couche supplémentaire de sécurité aux paquets. La configuration par défaut,
SigLevel = Required DatabaseOptional
, active la vérification des signatures pour tous les paquets au niveau global. Elle peut être remplacée par des lignes
SigLevel
par dépôt. Pour plus de détails sur la signature des paquets et la vérification des signatures, jetez un œil à
pacman-key
.
Dépannage
Erreur "Failed to commit transaction (conflicting files)"
Si vous rencontrez l'erreur suivante :
[1]
error: could not prepare transaction
error: failed to commit transaction (conflicting files)
package
:
/path/to/file
exists in filesystem
Errors occurred, no packages were upgraded.
Cela se produit parce que
pacman
a détecté un conflit de fichiers, et par conception, il n'écrasera pas les fichiers pour vous. Il s'agit d'une volonté délibérée et non d'un défaut.
Le problème est généralement trivial à résoudre. Une manière sûre est de vérifier d'abord si un autre paquet possède le fichier (
pacman -Qo
/path/to/file
). Si le fichier appartient à un autre paquet,
déposez un rapport de bug
. Si le fichier n'appartient pas à un autre paquet, renommez le fichier qui "existe dans le système de fichiers" et relancez la commande de mise à jour. Si tout va bien, le fichier peut alors être supprimé.
Si vous aviez installé un programme manuellement sans utiliser
pacman
, par exemple via
make install
, vous devez supprimer/désinstaller ce programme avec tous ses fichiers. Consultez également
Pacman (Français)/Tips and tricks (Français)#Recherche des fichiers n'appartenant à aucun paquet
.
Chaque paquet installé fournit un fichier
/var/lib/pacman/local/
package-version
/files
qui contient des métadonnées sur ce paquet. Si ce fichier est corrompu, vide ou manquant, il en résulte des erreurs
file exists in filesystem
lors de la tentative de mise à jour du paquet. Une telle erreur ne concerne généralement qu'un seul paquet. Au lieu de renommer manuellement et de supprimer ensuite tous les fichiers qui appartiennent au paquet en question, vous pouvez exécuter explicitement
pacman -S --overwrite
glob
package
pour forcer
pacman
à écraser les fichiers qui correspondent à
glob
.
Attention
Généralement, évitez d'utiliser la commande
--overwrite
. Consultez
Évitez certaines commandes de pacman
.
Erreur "Failed to commit transaction (invalid or corrupted package)"
Recherchez les fichiers
.part
(paquets partiellement téléchargés) dans
/var/cache/pacman/pkg/
et supprimez-les (souvent causés par l'utilisation d'une
XferCommand
personnalisée dans
pacman.conf
).
# find /var/cache/pacman/pkg/ -iname "*.part" -delete
Cette même erreur peut également apparaître si
archlinux-keyring
n'est pas à jour, empêchant
pacman
de vérifier les signatures. Consultez
Pacman (Français)/Package signing (Français)#Mettre le système à jour régulièrement
pour la solution et comment l'éviter à l'avenir.
Erreur "Failed to init transaction (unable to lock database)"
Lorsque
pacman
est sur le point de modifier la base de données des paquets, par exemple pour installer un paquet, il crée un fichier de verrouillage à
/var/lib/pacman/db.lck
. Cela empêche une autre instance de
pacman
d'essayer de modifier la base de données des paquets au même moment.
Si
pacman
est interrompu alors qu'il modifie la base de données, ce fichier de verrouillage périmé peut rester. Si vous êtes certain qu'aucune instance de
pacman
n'est en cours d'exécution, supprimez le fichier de verrouillage :
# rm /var/lib/pacman/db.lck
Astuce
Vous pouvez exécuter
fuser /var/lib/pacman/db.lck
en tant que root pour vérifier si un processus l'utilise encore.
Impossible de télécharger les paquets à l'installation
Cette erreur se manifeste avec
Not found in sync db
,
Target not found
ou
Failed retrieving file
.
Tout d'abord, assurez-vous que le paquet existe réellement. Si vous êtes certain que le paquet existe, votre liste de paquets n'est peut-être pas à jour. Essayez d'exécuter
pacman -Syu
pour forcer un rafraîchissement de toutes les listes de paquets et effectuer une mise à jour. Vérifiez également que les
miroirs
sélectionnés sont à jour et que les
dépôts
sont correctement configurés.
Il se peut également que le dépôt contenant le paquet ne soit pas activé sur votre système, par exemple, le paquet peut être dans le dépôt
multilib
, mais
multilib
n'est pas activé dans votre
pacman.conf
.
Consultez également
Frequently asked questions (Français)#Pourquoi n'y a t il qu'une seule version de chaque bibliothèque dans les dépôts officiels?
.
Pacman plante pendant une mise à jour
Dans le cas où
pacman
se bloque avec une erreur d'écriture dans la base de données lors de la suppression de paquets, et que la réinstallation ou la mise à jour des paquets échoue par la suite, procédez comme suit :
Démarrez en utilisant le support d'installation d'Arch. Utilisez de préférence un support récent afin que la version de
pacman
corresponde/soit plus récente que le système.
Montez le système de fichiers racine du système, par exemple,
mount /dev/sdaX /mnt
en tant que root, et vérifiez que le montage a suffisamment d'espace avec
df -h
.
Montez également les systèmes de fichiers proc, sys et dev :
mount -t proc proc /mnt/proc ; mount --rbind /sys /mnt/sys ; mount --rbind /dev /mnt/dev
Si le système utilise les emplacements par défaut des bases de données et des répertoires, vous pouvez maintenant mettre à jour la base de données
pacman
du système et la mettre à jour via
pacman --sysroot /mnt -Syu
en tant que root.
Alternativement, si vous ne pouvez pas mettre à jour, reportez-vous à
Pacman (Français)/Tips and tricks (Français)#Réinstallation de tous les paquets
.
Après la mise à jour, une façon de vérifier si des paquets non mis à jour mais encore cassés sont présents :
find /mnt/usr/lib -size 0
Suivi d'une réinstallation de tout paquet encore cassé via
pacman --sysroot /mnt -S
package
.
pacman : commande non trouvée
Si
/var/cache/pacman/pkg
est un lien symbolique,
pacman
essaiera de créer un répertoire à la place et donc de supprimer ce lien symbolique lors de l'auto-mise à jour. Cela fera échouer la mise à jour. En conséquence,
/usr/bin/pacman
et les autres contenus du paquet
pacman
seront manquants.
Ne faites jamais de lien symbolique avec
/var/cache/pacman/pkg
car il est contrôlé par
pacman
. Utilisez l'option
CacheDir
ou un montage lié à la place ; voir
#Répertoire de cache des paquets
.
Si vous avez déjà rencontré ce problème et cassé votre système, vous pouvez extraire manuellement le contenu
/usr
du paquet pour restaurer
pacman
et le réinstaller correctement ; voir
FS#73306
et
la discussion sur le forum
pour plus de détails.
Réinstallation manuelle de pacman
Utilisation de pacman-static
pacman-static
AUR
est une version compilée statiquement de
pacman
, qui pourra donc fonctionner même si les bibliothèques du système ne fonctionnent pas. Cela peut également s'avérer utile lorsque des
mises à jour partielles
ont été effectuées et que
pacman
ne peut plus fonctionner.
Le commentaire épinglé et le PKGBUILD fournissent un moyen de télécharger directement le binaire, qui peut être utilisé pour réinstaller
pacman
ou pour mettre à jour l'ensemble du système en cas de mise à jour partielle.
Utilisation d'un pacman externe
Si même
pacman-static
ne fonctionne pas, il est possible de récupérer en utilisant un
pacman
externe. L'une des méthodes les plus simples consiste à utiliser
Archiso
et à utiliser simplement
--sysroot
ou
--root
pour spécifier le point de montage. Consultez
Chroot (Français)#Avec chroot
pour savoir comment monter les systèmes de fichiers nécessaires requis par
--sysroot
.
En extrayant manuellement
Attention
Il est extrêmement facile de détériorer votre système en utilisant cette approche. N'utilisez cette méthode qu'en dernier recours si la méthode de
#Pacman plante pendant une mise à jour
n'est pas une option.
Même si
pacman
est terriblement cassé, vous pouvez le réparer manuellement en téléchargeant les derniers paquets et en les extrayant aux bons endroits. Les étapes approximatives à effectuer sont les suivantes :
Déterminer les dépendances
pacman
à installer
Téléchargez chaque paquet depuis un
miroir
de votre choix.
Extrayez chaque paquet à la racine
Réinstallez ces paquets avec
pacman -S --overwrite
pour mettre à jour la base de données des paquets en conséquence.
Faites une mise à jour complète du système
Si vous avez un système Arch sain sous la main, vous pouvez consulter la liste complète des dépendances avec :
$ pacman -Q $(pactree -u pacman)
Mais vous pouvez n'avoir besoin de mettre à jour que quelques-unes d'entre elles en fonction de votre problème. Un exemple d'extraction d'un paquet est
# tar -xvpwf
package.tar.zst
-C / --exclude .PKGINFO --exclude .INSTALL --exclude .MTREE --exclude .BUILDINFO
Notez l'utilisation de l'option
w
pour le mode interactif. L'exécution en mode non interactif est très risquée car vous pourriez finir par écraser un fichier important. Faites également attention à extraire les paquets dans le bon ordre (c'est-à-dire les dépendances en premier).
Ce post du forum
contient un exemple de ce processus où seules quelques dépendances de
pacman
sont cassées.
Erreur "Unable to find root device" après le redémarrage
Il est très probable que l'
initramfs
ait été corrompu lors d'une mise à jour du
noyau
(une mauvaise utilisation de l'option
--overwrite
de
pacman
peut être une cause). Il y a deux options : premièrement, essayez l'entrée
Fallback
.
Astuce
Au cas où vous auriez supprimé l'entrée
Fallback
, vous pouvez toujours appuyer sur la touche
Tab
lorsque le menu du chargeur d'amorçage s'affiche (pour Syslinux) ou
e
. (pour GRUB ou systemd-boot), le renommer
initramfs-linux-fallback.img
et appuyer sur
Enter
ou
b
. (en fonction de votre
chargeur d'amorçage
) pour démarrer avec les nouveaux paramètres.
Une fois le système démarré, exécutez cette commande (pour le noyau
linux
stock) soit à partir de la console, soit à partir d'un terminal pour reconstruire l'image initramfs :
# mkinitcpio -p linux
Si cela ne fonctionne pas, à partir d'une version courante d'Arch (CD/DVD ou clé USB),
montez
vos partitions root et boot vers
/mnt
et
/mnt/boot
respectivement. Puis
chrootez
en utilisant
arch-chroot
:
# arch-chroot /mnt
# pacman -Syu mkinitcpio systemd linux
Note
Si vous n'avez pas de version actuelle ou si vous n'avez qu'une autre distribution Linux «live», vous pouvez utiliser
chroot
à l'ancienne. Évidemment, il faudra taper davantage que simplement exécuter le script
arch-chroot
.
Si
pacman
échoue avec
Could not resolve host
, veuillez
vérifier votre connexion internet
.
Si vous ne pouvez pas entrer dans l'environnement arch-chroot ou chroot mais que vous devez réinstaller des paquets, vous pouvez utiliser la commande
pacman --sysroot /mnt -Syu foo bar
pour utiliser
pacman
sur votre partition racine.
La réinstallation du noyau (le paquet
linux
) génère automatiquement l'image initramfs avec
mkinitcpio -p linux
. Il n'est pas nécessaire de le faire séparément.
Ensuite, il est recommandé d'exécuter
exit
,
umount /mnt/{boot,}
et
reboot
.
Erreur "Warning : current locale is invalid ; using default "C" locale"
Comme l'indique le message d'erreur, votre locale n'est pas correctement configurée. Consultez la page concernant la
Locale
.
Pacman ne respecte pas les paramètres du proxy
Assurez-vous que les variables d'environnement pertinentes (
$http_proxy
,
$ftp_proxy
etc.) sont configurées. Si vous utilisez
pacman
avec
sudo
, vous devez configurer sudo pour
passer ces variables d'environnement à pacman
. Assurez-vous également que la configuration de
dirmngr
a
honor-http-proxy
dans
/etc/pacman.d/gnupg/dirmngr.conf
pour honorer le proxy lors du rafraîchissement des clés.
Comment réinstaller tous les paquets, en conservant les informations sur le fait qu'un élément a été explicitement installé ou en tant que dépendance ?
Pour réinstaller tous les paquets natifs :
pacman -Qnq | pacman -S -
ou
pacman -S $(pacman -Qnq)
(l'option
-S
préserve la raison de l'installation par défaut).
Vous devrez alors réinstaller tous les paquets étrangers, qui peuvent être listés avec
pacman -Qmq
.
Erreur "Cannot open shared object file"
Il semble que la transaction précédente de
pacman
ait supprimé ou corrompu les bibliothèques partagées nécessaires à
pacman
lui-même.
Pour sortir de cette situation, vous devez décompresser manuellement les bibliothèques requises sur votre système de fichiers. Trouvez d'abord quel paquet contient la bibliothèque manquante, puis localisez-le dans le cache de
pacman
(
/var/cache/pacman/pkg/
). Décompressez la bibliothèque partagée requise dans le système de fichiers. Cela permettra de lancer
pacman
.
Maintenant vous devez
réinstaller
le paquet cassé. Notez que vous devez utiliser l'option
--overwrite
car vous venez de décompresser des fichiers système et
pacman
ne le sait pas. Pacman remplacera correctement notre fichier de bibliothèque partagée par celui du paquet.
C'est tout. Mettez à jour le reste du système.
Gel des téléchargements de paquets
Certains problèmes ont été signalés concernant des problèmes de réseau qui empêchent
pacman
de mettre à jour/synchroniser les dépôts.
[2]
[3]
Lors de l'installation native d'Arch Linux, ces problèmes ont été résolus en remplaçant le logiciel de téléchargement de fichiers par défaut
pacman
par une alternative (consultez
Améliorer les performances de pacman
pour plus de détails). Lors de l'installation d'Arch Linux en tant que système d'exploitation invité dans
VirtualBox
, ce problème a également été résolu en utilisant
Host interface
au lieu de
NAT
dans les propriétés de la machine.
Erreur "Failed retrieving file 'core.db' from mirror"
Si vous recevez ce message d'erreur avec des
miroirs
corrects, essayez de définir un
serveur de noms
différent.
Erreur "error : 'local-package.pkg.tar' : permission denied"
Si vous voulez installer un paquet sur un montage sshfs en utilisant
pacman -U
et que vous recevez cette erreur, déplacez le paquet dans un répertoire local et réessayez d'installer.
Erreur "error : could not determine cachedir mount point /var/cache/pacman/pkg"
Si vous exécutez, par exemple,
pacman -Syu
dans un environnement chroot, vous rencontrez une erreur :
error : could not determine cachedir mount point /var/cache/pacman/pkg
error : failed to commit transaction (not enough free disk space)
Ceci est fréquemment causé par le fait que le répertoire chroot n'est pas un point de montage lorsque le chroot est lancé. Consultez la note dans
Install Arch Linux from existing Linux#Downloading basic tools
pour une solution, et
arch-chroot(8)
pour une explication et un exemple d'utilisation de bind mounting pour faire du répertoire chroot un point de montage.
erreur : Erreur GPGME : Pas de données
Si vous ne parvenez pas à mettre à jour les paquets et recevez cette erreur, essayez
rm -r /var/lib/pacman/sync/
avant d'essayer de mettre à jour.
Voir aussi
Page d'accueil de pacman
libalpm(3)
pacman(8)
pacman.conf(5)
repo-add(8)