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.

É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.

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.

Utilisation

Ce qui suit n'est qu'un petit échantillon des opérations que pacman peut effectuer. Pour lire plus d'exemples, reportez-vous à .

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.

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.

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 :

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  :

# pacman -Rn nom_du_paquet

Mise à jour des paquets

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 , la base de données de synchronisation avec l'option et la base de données des fichiers avec l'option -F. Consultez , et 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 , 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 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

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 à pactree, ou utilisez whoneeds de .

Structure de la base de données

Les bases de données de pacman sont normalement situées dans . Pour chaque dépôt spécifié dans , 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 :

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 et ne supprime pas automatiquement les anciennes versions ou les versions désinstallées. Cela présente quelques avantages :

  1. 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.
  2. 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 , fourni dans le paquet , 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 pour éliminer les paquets inutilisés chaque semaine.

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 / 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 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 . 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.
et pacleanerAUR 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 , et , on peut utiliser .

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 ou ;
  • 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.

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 , tandis que la liste complémentaire des dépendances peut être affichée avec .

Pour changer le motif de l'installation d'un paquet déjà installé, exécutez :

# pacman -D --asdeps nom_du_paquet.

Utilisez pour effectuer l'opération inverse.

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 :

  1. Initialiser la transaction s'il n'y a pas de verrou sur la base de données.
  2. Choisir les paquets qui seront ajoutés ou supprimés dans la transaction.
  3. 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.
  4. Effectuer la transaction :
    1. Le cas échéant, télécharger les paquets (_alpm_sync_load)
    2. Si des «hooks» pré-existants de pacman s'appliquent, ils sont exécutés.
    3. Les paquets qui doivent être remplacés, qui sont en conflit ou qui sont explicitement ciblés pour être supprimés sont supprimés.
    4. S'il y a des paquets à ajouter, alors chaque paquet est validé.
      1. Si le paquet a un script d'installation, sa fonction pre_install est exécutée (ou ou dans le cas d'un paquet mis à jour ou supprimé).
      2. 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)).
      3. 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).
      4. Si le paquet a un script d'installation, sa fonction est exécutée (ou ou dans le cas d'un paquet mis à jour ou supprimé).
    5. Si les crochets de pacman qui existent à la fin de la transaction s'appliquent, ils sont exécutés.
  5. 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  : 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 .

Options générales

Les options générales se trouvent dans la section . Lisez 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 . La sortie de 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. sous doit être défini comme un nombre entier positif dans pour utiliser cette fonctionnalité (par exemple, ). 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  :

IgnorePkg=linux

Pour plusieurs paquets, utilisez une liste séparée par des espaces, ou utilisez des lignes 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 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  : dans ce cas, pacman vous rappellera que les paquets ont été inclus dans une déclaration .

Ignorer la mise à jour d'un groupe de paquets

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 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

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 .

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 déclarée dans les fichiers de configuration, par exemple :

Include = /path/to/common/settings.

où le fichier contient les mêmes options pour les deux configurations.

Hooks

Pacman peut exécuter des hooks pré- et post-transactions à partir du répertoire ; d'autres répertoires peuvent être spécifiés avec l'option dans pacman.conf, qui est par défaut . 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 pour créer automatiquement des utilisateurs et des fichiers système lors de l'installation de paquets. Par exemple, tomcat8 spécifie qu'il veut un utilisateur système appelé et certains répertoires appartenant à cet utilisateur. Les hooks pacman et invoquent systemd-sysusers et lorsque pacman détermine que tomcat8 contient des fichiers spécifiant des utilisateurs et des fichiers tmp.

Pour plus d'informations sur les hooks alpm, consultez .

Dépôts et miroirs

Outre la section spéciale [options], chaque autre 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 ; par exemple, les miroirs des dépôts officiels sont inclus dans . 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 dans la section [options] de pacman.conf. (la valeur par défaut est 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 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 .
  • Bind-mount le répertoire sélectionné dans .

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 :

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 (). 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 , 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 qui contient des métadonnées sur ce paquet. Si ce fichier est corrompu, vide ou manquant, il en résulte des erreurs 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 pour forcer pacman à écraser les fichiers qui correspondent à .

Erreur "Failed to commit transaction (invalid or corrupted package)"

Recherchez les fichiers .part (paquets partiellement téléchargés) dans et supprimez-les (souvent causés par l'utilisation d'une 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 à . 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, ou .

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 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 :

  1. 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.
  2. Montez le système de fichiers racine du système, par exemple, en tant que root, et vérifiez que le montage a suffisamment d'espace avec .
  3. Montez également les systèmes de fichiers proc, sys et dev :
  4. 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 en tant que root.
  5. Après la mise à jour, une façon de vérifier si des paquets non mis à jour mais encore cassés sont présents :
  6. Suivi d'une réinstallation de tout paquet encore cassé via .

pacman : commande non trouvée

Si 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 seront manquants.

Ne faites jamais de lien symbolique avec car il est contrôlé par pacman. Utilisez l'option 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 du paquet pour restaurer pacman et le réinstaller correctement ; voir FS#73306 et la discussion sur le forum pour plus de détails.

Utilisation de pacman-static

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 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 ou 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 .

En extrayant manuellement

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 :

  1. Déterminer les dépendances à installer
  2. Téléchargez chaque paquet depuis un miroir de votre choix.
  3. Extrayez chaque paquet à la racine
  4. Réinstallez ces paquets avec pour mettre à jour la base de données des paquets en conséquence.
  5. 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 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.

Une fois le système démarré, exécutez cette commande (pour le noyau 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 et respectivement. Puis chrootez en utilisant arch-chroot :

# arch-chroot /mnt
# pacman -Syu mkinitcpio systemd linux

La réinstallation du noyau (le paquet ) génère automatiquement l'image initramfs avec . Il n'est pas nécessaire de le faire séparément.

Ensuite, il est recommandé d'exécuter , umount /mnt/{boot,} et .

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 (, $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 dans 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 : ou (l'option 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 .

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 (). 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. 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, 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 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 avant d'essayer de mettre à jour.

Voir aussi

gollark: C O M P A R A T I V E A D V A N T A G E
gollark: It has to then store all the information in the random noise plus metadata.
gollark: If you just try and compress random noise, for example.
gollark: Probably!
gollark: There is not necessarily a seed which leads to the datas you want, if it is of limited size.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.