pacman (Français)/Tips and tricks (Français)
Pour les méthodes générales utilisées à l'amélioration de la flexibilité des astuces fournies, ou pacman lui-même: consultez Core utilities et Bash.
Maintenance
grep -Fxf
ou grep -Fxvf
.Voir aussi Maintenance Système.
Par version
On peut vouloir obtenir la liste des paquets installés et leur version, en cas par exemple de rapport de bug ou d'une discussion sur des paquets installés.
- Liste des paquets installés explicitement:
pacman -Qe
. - Liste des paquets d'un groupe de paquets nommé
group
:pacman -Sg group
- Liste des paquets "étrangers" (typiquement par téléchargement et installation manuels ou paquets retirés des dépôts):
pacman -Qm
. - Liste des paquets installés d'origine (depuis la base synchronisée): .
- Liste des paquets installés explicitement, d'origine (c.-à-d. présents dans la base synchronisée), qui ne sont pas des dépendances directes ni optionnelles: .
- Liste des paquets filtrée par expression régulière: .
- Liste des paquets filtrée par expression régulière avec sortie en format personnalisé: (requiert expac).
Par taille
Il peut être utile de déterminer les paquets les plus volumineux peut être utile s'il était nécessaire de libérer de l'espace sur votre disque dur. Il y a ici deux options: obtenir la taille des paquets individuels, ou obtenir la taille des paquets et leurs dépendances.
Individuellement
Commande pour lister les paquets installés et leur taille individuelle:
$ LC_ALL=C pacman -Qi | awk '/^Name/{name=$3} /^Installed Size/{print $4$5, name}' | sort -h
Paquets et leurs dépendances
Pour lister leur taille en incluant les dépendances:
- Installer expac et lancer
expac -H M '%m\t%n' | sort -h
. - Lancer avec l'option .
Pour lister la taille de téléchargement de plusieurs paquets (laissez vide pour lister tous les paquets):
$ expac -S -H M '%k\t%n' packages
Pour lister les paquets installés explicitement qui ne sont ni dans le méta-paquet ni dans le groupe de paquet avec taille et description:
$ expac -H M "%011m\t%-20n\t%10d" $(comm -23 <(pacman -Qqen | sort) <({ pacman -Qqg base-devel; expac -l '\n' '%E' base; } | sort -u)) | sort -n
Pour lister les paquets marqués comme nécessitant une mise à jour avec la taille de téléchargement:
$ expac -S -H M '%k\t%n' $(pacman -Qqu) | sort -sh
Pour ne lister que les dépendances optionnelles :
$ expac -S "%o" package
Par date
Liste des 20 derniers paquets installés avec expac, lancer:
$ expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort | tail -n 20
ou, en secondes depuis l'«epoch» (1970-01-01 UTC):
$ expac --timefmt=%s '%l\t%n' | sort -n | tail -n 20
N'appartenant pas à un groupe, dépôt ou méta-paquet spécifié
Liste des paquets installés explicitement en-dehors du méta-paquet :
$ comm -23 <(pacman -Qqe | sort) <(expac -l '\n' '%E' base | sort)
Liste les paquets explicitement installés qui ne sont pas dans le méta-paquet ou le groupe de paquets :
$ comm -23 <(pacman -Qqe | sort) <({pacman -Qqg base-devel ; expac -l '\n' '%E' base ; } | sort -u)
Liste de tous les paquets installés non requis par d'autres paquets et en-dehors du méta-paquet ou du groupe de paquets :
$ comm -23 <(pacman -Qqt | sort) <({ pacman -Qqg base-devel; echo base; } | sort -u)
Comme ci-dessus, mais avec descriptions:
$ expac -H M '%-20n\t%10d' $(comm -23 <(pacman -Qqt | sort) <({ pacman -Qqg base-devel; echo base; } | sort -u))
Liste de tous les paquets installés non présents dans le dépôt précisé nom du depot:
$ comm -23 <(pacman -Qq | sort) <(pacman -Slq nom du depot | sort)
Liste de tous les paquets installés qui sont présents dans le dépôt précisé nom du depot:
$ comm -12 <(pacman -Qq | sort) <(pacman -Slq nom du depot | sort)
Liste de tous les paquets de l'ISO Arch Linux et n'appartenant pas au groupe base:
$ comm -23 <(curl https://git.archlinux.org/archiso.git/tree/configs/releng/packages.x86_64) <(pacman -Qqg base | sort)
Paquets de développement
Pour une liste de tous les paquets de développement/unstable, commande:
$ pacman -Qq | grep -Ee '-(bzr|cvs|darcs|git|hg|svn)
Parcourir les paquets
Pour parcourir tous les paquets installés avec un aperçu instantané de chaque paquet :
$ pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)'
Cette commande utilise fzf pour présenter une vue à deux volets listant tous les paquets avec les informations sur les paquets affichées sur la droite.
Entrez des lettres pour filtrer la liste des paquets ; utilisez les touches fléchées (ou /Ctrl-k
) pour naviguer ; appuyez sur Enter
pour consulter les informations du paquet sous less.
Pour parcourir tous les paquets actuellement connus de pacman (à la fois installés et non encore installés) de manière similaire, en utilisant fzf, utilisez :
$ pacman -Slq | fzf --preview 'pacman -Si {}' --layout=reverse
Les raccourcis clavier de navigation sont les mêmes, bien que la touche Enter
ne fonctionne pas de la même manière.
Liste des fichiers fournis par un paquet - avec leur taille
Ceci peut s'avérer utile si vous constatez qu'un paquet spécifique utilise une quantité d'espace considérable et que vous voulez savoir quels fichiers en consomme le plus.
$ pacman -Qlq package | grep -v '/
Recherche des fichiers n'appartenant à aucun paquet
Si des fichiers égarés, n'appartenant à aucun paquet, sont présents dans votre système (un cas courant si vous n'avez pas utilisé le gestionnaire de paquets pour installer un logiciel), vous pouvez vouloir trouver ces fichiers afin de les nettoyer.
Une méthode est d'utiliser la commande de qui listera ces fichiers "non possédés" parmi d'autres détails.
Une autre est d'isoler tous les fichiers particuliers, et les comparer avec la sortie de pacman:
# find /etc /usr /opt | LC_ALL=C pacman -Qqo - 2>&1 >&- >/dev/null | cut -d ' ' -f 5-
Suivi des fichiers sans propriétaires créés par les paquets
La plupart des systèmes collectent lentement de nombreux fichiers fantômes («ghost») : fichiers d'état, journaux, index, etc… en utilisation normale.
On peut utiliser de pour suivre ces fichiers et leurs associations via (voir ).
Un exemple (résumé) de configuration ressemblera à :
Ainsi, en lançant en root, on affichera une liste de tous les fichiers sans propriétaire, dont le paquet associé n'est plus installé (ou si de nouveaux fichiers ont été créés).
En sus, le script aconfmgr, (aconfmgr-gitAUR), permet, par création d'un fichier de configuration le suivi des fichiers modifiés et orphelins.
Suppression des paquets inutilisés (orphelins)
Les orphelins sont des paquets qui ont été installés en tant que dépendance et qui ne sont plus requis par aucun paquet.
Ils peuvent s'accumuler sur votre système au fil du temps en raison de la désinstallation de paquets en utilisant au lieu de pacman -Rs package
, de l'installation de paquets en tant que makedepends, ou de paquets supprimant des dépendances dans des versions plus récentes.
Pour supprimer récursivement les orphelins et leurs fichiers de configuration :
# pacman -Qtdq | pacman -Rns -
Si aucun orphelin n'a été trouvé, la sortie est vide. Ceci est attendu car aucun argument n'a été passé à .
Détecter d'autres paquets inutiles
Dans certains cas, la méthode ci-dessus ne détectera pas tous les paquets inutiles possibles. Par exemple, les cycles de dépendances, les dépendances excessives (remplies plus d'une fois), certaines options non explicites, etc.
Pour détecter de tels paquets :
$ pacman -Qqd | pacman -Rsu --print -
Si vous voulez supprimer tous les paquets de la liste en une seule fois, exécutez la commande sans l'argument .
Suppression de tous les paquets non-essentiels
S'il s'avère nécessaire de désinstaller la totalité des programmes en dehors de ceux essentiels, la méthode est de changer le motif d'installation de tous les paquets vers «installé comme dépendance» puis de supprimer toutes les dépendances non nécessaires.
Premièrement, pour tous les paquets «installés explicitement», modifiez leur motif d'installation pour «installé comme dépendance» :
# pacman -D --asdeps $(pacman -Qqe)
Ensuite, changez le motif d’installation vers «installé explicitement», pour les paquets que vous ne voulez pas supprimer, pour éviter de les supprimer :
# pacman -D --asexplicit base linux linux-firmware
Enfin, suivez les instructions de #Suppression des paquets inutilisés (orphelins) pour supprimer tous les paquets qui sont «installé comme dépendance».
Obtenir la liste de dépendances de plusieurs paquets
Dépendances triées par ordre alphabétique et élimination des doublons.
$ LC_ALL=C pacman -Si packages | awk -F'[:<=>]' '/^Depends/ {print $2}' | xargs -n1 | sort -u
Alternativement, avec expac:
$ expac -l '\n' %E -S packages | sort -u
Lister les fichiers de sauvegarde modifiés
Pour lister les fichiers de configuration suivis par pacman en tant que susceptibles de contenir des modifications de l'utilisateur (c'est-à-dire les fichiers listés dans le tableau «backup» d'un PKGBUILD) et ayant reçu des modifications de l'utilisateur, utilisez la commande suivante :
# pacman -Qii | awk '/^MODIFIED/ {print $2}' (en anglais)
L'exécution de cette commande avec les droits de root garantira que les fichiers lisibles uniquement par root (tels que /etc/sudoers
) sont inclus dans la sortie.
Ceci peut être utilisé lors d'une sauvegarde sélective du système ou lors de la réplication d'une configuration système d'une machine à une autre.
Sauvegarde de la base de données de pacman
On peut utiliser les commandes suivantes pour une sauvegarde de la base de données de pacman:
$ tar -cjf pacman_database.tar.bz2 /var/lib/pacman/local
Enregistrer ce fichier de sauvegarde de la base sur un ou plusieurs supports physiques, clef-USB, DD externe, CD-R.
La base pourra être restaurée par simple copie de ce fichier de sauvegarde vers le répertoire racine puis l'exécution de la commande suivante:
# tar -xjvf pacman_database.tar.bz2
Vérifier facilement les logs de changements
Lorsque les responsables mettent à jour des paquets, les commits sont souvent commentés de manière utile.
Les utilisateurs peuvent les vérifier rapidement à partir de la ligne de commande en installant . Cet utilitaire liste les messages de commit récents pour les paquets provenant des dépôts officiels ou de AUR, en utilisant .
Installation et récupération
Alternatives pour l'installation ou réinstallation de paquets.
Installation de paquets depuis un CD/DVD ou clef USB
Télécharger un paquet ou un groupe de paquets:
# cd ~/Packages # pacman -Syw base base-devel grub-bios xorg gimp --cachedir . # repo-add ./custom.db.tar.gz ./*
Pacman, qui par défaut référencera l'installation hôte, ne saura pas correctement résoudre et télécharger les dépendances existantes. Dans le cas où l'on souhaite tous les paquets ainsi que leurs dépendances, il est recommandé de créer une base de données des paquets temporaire vierge et d'y faire référence avec l'option de pacman:
# mkdir /tmp/blankdb # pacman -Syw --cachedir . --dbpath /tmp/blankdb base base-devel grub-bios xorg gimp # repo-add ./custom.db.tar.gz ./*
Puis vous pouvez graver le répertoire "Packages" sur un CD/DVD ou le transférer à une clef USB, HDD externe, etc.
Pour installer:
1. Monter le support:
# mkdir /mnt/repo # mount /dev/sr0 /mnt/repo #Pour un CD/DVD. # mount /dev/sdxY /mnt/repo #Pour une clef USB.
2. Editer et ajouter ce dépôt avant les autres (ex. extra, core, etc.). Ceci est important. Ne pas simplement le dé-commenter à la fin du fichier. Ceci assurera la préséance des fichiers des CD/DVD/USB sur ceux des dépôts standards:
/etc/pacman.conf
[custom] SigLevel = PackageRequired Server = file:///mnt/repo/Packages
3. Enfin, synchroniser la base de données de pacman pour qu'elle puisse utiliser ce nouveau dépôt:
# pacman -Syu
Dépôt local personnalisé
Utiliser le script repo-add fourni par pacman pour générer une base de données pour dépôt personnel. Plus de détails sur l'utilisation par .
Un paquet de base de données est un fichier d'archive tar, optionnellement compressé. Les extensions valides extensions sont .db ou .files suivi de l'extension d'archive .tar, .tar.gz, .tar.bz2, .tar.xz, tar.zst ou .tar.Z. Il n'est pas nécessaire que les fichiers existent mais tous les répertoires parents doivent avoir été créés.
Pour ajouter un nouveau paquet à la base ou mettre à jour une ancienne version existant dans la base, commande:
$ repo-add /path/to/repo.db.tar.gz /path/to/package-1.0-1-x86_64.pkg.tar.zst
La base de données et les paquets n'ont pas besoin d'être dans le même répertoire lorsque vous utilisez repo-add, mais gardez à l'esprit que lorsque vous utilisez pacman avec cette base de données, ils devront être ensemble. Stocker tous les paquets compilés à inclure dans le dépôt dans un seul répertoire permet également d'utiliser l'expansion globale du shell pour ajouter ou mettre à jour plusieurs paquets à la fois :
$ repo-add /path/to/repo.db.tar.gz /path/to/*.pkg.tar.est
Si vous cherchez à prendre en charge plusieurs architectures, des précautions doivent être prises pour éviter les erreurs. Chaque architecture devrait avoir sa propre arborescence de répertoires :
$ tree ~/customrepo/ | sed "s/$(uname -m)/<arch>/g"
/home/archie/customrepo/ └── <arch> ├── customrepo.db -> customrepo.db.tar.xz ├── customrepo.db.tar.xz ├── customrepo.files -> customrepo.files.tar.xz ├── customrepo.files.tar.xz └── personal-website-git-b99cce0-1-<arch>.pkg.tar.zst 1 directory, 5 files
L'exécutable repo-add vérifie si le paquet est approprié. Si ce n'est pas le cas, vous rencontrerez des messages d'erreur tels que :
==> ERROR: '/home/archie/customrepo/<arch>/foo-<arch>.pkg.tar.zst' does not have a valid database archive extension.
repo-remove supprime tous les paquets de la base de données, sauf si seuls certains noms de paquets sont précisés sur la ligne de la commande.
$ repo-remove /path/to/repo.db.tar.gz pkgname
Une fois la base de données du dépôt local créée, ajoutez le dépôt à pour chaque système qui aura à utiliser le dépôt. Le fichier donne un exemple de dépôt personnalisé. Le nom du dépôt est celui du fichier de la base, extension exclue. Dans l'exemple ci-dessus le nom du dépôt serait simplement repo. Référencer l'emplacement du dépôt en utilisant une URL , ou via FTP sous la forme ftp://localhost/path/to/directory.
Si vous le souhaitez, ajoutez le dépôt personnalisé à la liste des dépôts non officiels, pour en faire bénéficier la communauté.
Cache pacman partagé en réseau
Si vous utilisez plusieurs systèmes sous Arch Linux sur votre réseau local, vous pouvez partager les paquets afin de réduire considérablement les temps de téléchargement. Gardez à l'esprit que vous ne devez pas partager entre différentes architectures (i.e. i686 et x86_64) ou vous rencontrerez des problèmes.
Cache en lecture seule
Si vous recherchez une solution rapide, vous pouvez simplement lancer un simple serveur web temporaire que les autres ordinateurs peuvent utiliser comme premier miroir.
Tout d'abord, rendez les bases de données pacman disponibles dans le répertoire que vous allez fournir :
# ln -s /var/lib/pacman/sync/*.db /var/cache/pacman/pkg/
Ensuite, commencez à servir ce répertoire. Par exemple, avec Python http.server module :
$ python -m http.server -d /var/cache/pacman/pkg/
Puis modifiez sur chaque machine cliente pour ajouter ce serveur comme première entrée :
Si vous recherchez une solution plus autonome, offre un serveur web très minimal. Remplacez la commande python
précédente par, par exemple :
$ sudo -u http darkhttpd /var/cache/pacman/pkg --no-server-id
Vous pouvez également exécuter darkhttpd en tant que service systemd pour plus de commodité : consultez Systemd (Français)#Écrire des unités.
, un petit serveur web écrit en Rust, peut également être utilisé :
$ miniserve /var/cache/pacman/pkg
Éditez ensuite comme ci-dessus avec la première url où miniserve est disponible.
Si vous utilisez déjà un serveur web dans un autre but, vous pouvez le réutiliser comme serveur de dépôt local. Par exemple, si vous servez déjà un site avec nginx, vous pouvez ajouter un bloc serveur nginx écoutant sur le port 8080 :
Surtout redémarrez après avoir effectué cette modification.
Montage en overlay d'un cache en lecture seule
Il est possible d'utiliser une machine sur un réseau local comme cache de paquets en lecture seule en montant en overlay son répertoire /var/cache/pacman/pkg
. Une telle configuration est avantageuse si ce serveur a installé sur lui une sélection raisonnablement complète de paquets à jour qui sont également utilisés par d'autres machines. Ceci est utile pour la maintenance d'un certain nombre de machines avec une connexion à faible bande passante.
A titre d'exemple, pour utiliser cette méthode :
# mkdir /tmp/remote_pkg /mnt/workdir_pkg /tmp/pacman_pkg. # sshfs remote_username@remote_pkgcache_addr:/var/cache/pacman/pkg /tmp/remote_pkg -C # mount -t overlay overlay -o lowerdir=/tmp/remote_pkg,upperdir=/var/cache/pacman/pkg,workdir=/mnt/workdir_pkg /tmp/pacman_pkg
Après cela, lancez pacman en utilisant l'option , par exemple :
# pacman -Syu --cachedir /tmp/pacman_pkg
Cache en lecture seule distribué
Il existe des outils spécifiques à Arch pour découvrir automatiquement les autres ordinateurs de votre réseau offrant un cache de paquets. Essayez , pacserve, pkgdistcacheAUR, ou . pkgdistcache utilise Avahi au lieu du simple UDP ce qui peut mieux fonctionner dans certains réseaux domestiques qui routent au lieu de faire le pont entre WiFi et Ethernet.
Historiquement, il y avait PkgD et multipkg, mais ils ne sont plus maintenus.
Cache en lecture/écriture
Pour le partage de paquets entre plusieurs ordinateurs, partagez simplement en utilisant n'importe quel protocole de montage réseau. Cette section montre comment utiliser Sshfs pour partager un cache de paquets et les répertoires de bibliothèque associés entre plusieurs ordinateurs sur le même réseau local. Gardez à l'esprit qu'un cache partagé en réseau peut être lent selon le choix du système de fichiers, parmi d'autres facteurs.
Installez tous les paquets de gestion de systèmes de fichiers en réseau: , , ou nfs-utils.
Puis, pour partager les paquets actuels, montez /var/cache/pacman/pkg
du serveur sur /var/cache/pacman/pkg
de chaque machine cliente.
Double-sens avec rsync
Autre approche dans un environnement local par rsync. Choisir un serveur pour le cache, et activer le daemon rsync. Sur les machines clientes synchronisez ce partage en double-sens (two-way) par un protocole rsync. Les noms de fichiers contenant deux-points : ne posent pas de problème au protocole rsync.
Exemple de projet pour un client, l'utilisation de dans le nom du partage assure une synchronisation en fonction de l'architecture:
# rsync rsync://server/share_$(uname -m)/ /var/cache/pacman/pkg/ ... # pacman ... # paccache ... # rsync /var/cache/pacman/pkg/ rsync://server/share_$(uname -m)/ ...
Cache de proxy inverse dynamique utilisant nginx
nginx peut être utilisé pour envoyer par proxy les demandes de paquets aux miroirs officiels en amont et mettre les résultats en cache sur le disque local. Toutes les demandes ultérieures pour ce paquet seront servies directement à partir du cache local, ce qui minimise la quantité de trafic Internet nécessaire pour mettre à jour un grand nombre d'ordinateurs.
Dans cet exemple, le serveur de cache sera exécuté à http://cache.domain.example:8080/
et stockera les paquets dans .
Installez nginx sur l'ordinateur qui va héberger le cache. Créez le répertoire pour le cache et ajustez les permissions pour que nginx puisse y écrire des fichiers :
# mkdir /srv/http/pacman-cache # chown http:http /srv/http/pacman-cache
Utilisez la config de cache de pacman pour nginx comme point de départ pour . Vérifiez que la directive fonctionne pour vos besoins. Dans les blocs de serveurs en amont, configurez les directives avec les adresses des miroirs officiels, consultez les exemples dans le fichier de configuration sur le format attendu. Une fois que vous êtes satisfait du fichier de configuration démarrez et activez nginx.
Afin d'utiliser le cache, chaque ordinateur Arch Linux (y compris celui qui héberge le cache) doit avoir la ligne suivante en haut du fichier :
paccache
, (fourni par pacman-contrib), pour l'automatiser à l'aide des critères de conservation de votre choix. Par exemple, find /srv/http/pacman-cache/ -type d -exec paccache -v -r -k 2 -c {} \;
; gardera les 2 dernières versions des paquets dans votre répertoire cache.Serveur proxy de cache Pacoloco
Pacoloco est un serveur proxy de cache facile à utiliser pour les dépôts pacman. Il permet également un «prefetching» automatique des paquets mis en cache.
Il peut être installé avec . Ouvrez le fichier de configuration et ajoutez les miroirs de pacman :
Redémarrez et le dépôt en proxy sera disponible à http://myserver:9129/repo/mycopy
.
Serveur cache proxy Flexo
Flexo est encore un autre serveur proxy de cache pour les dépôts pacman. Flexo est disponible avec . Une fois installé, démarrez l'unité .
Flexo fonctionne sur le port par défaut. Entrez en haut de votre pour que pacman télécharge les paquets via Flexo.
Synchroniser le cache de pacman avec des programmes de synchronisation
Utiliser Syncthing ou Resilio Sync pour synchroniser les répertoires du cache de pacman (càd. /var/cache/pacman/pkg
).
Prevention des purges involontaires du cache
Par défaut, supprime du cache les archives de paquets correspondant aux paquets non installés sur la machine sur laquelle la commande a été émise. Comme pacman ne peut pas prédire quels paquets sont installés sur toutes les machines qui partagent le cache, il finira par supprimer les fichiers qui ne devraient pas l'être.
Pour nettoyer le cache afin que seules les archives périmées soient supprimées, ajoutez cette entrée dans la section de :
CleanMethod = KeepCurrent
Recréer un paquet depuis le système de fichiers
Pour recréer un paquet dpuis le système de fichiers servez-vous de fakepkgAUR. Les fichiers du système étant pris tels quels, toute modification sera présente dans le paquet assemblé. La distribution du paquet recréé est donc déconseillée; voir ABS et ALA pour des alternatives.
Liste des paquets installés
Il peut être utile de conserver la liste de tous les paquets installés explicitement, par exemple pour sauvegarder un système ou une installation plus rapide sur un nouveau système:
$ pacman -Qqe > pkglist.txt
Pour garder à jour une liste de paquets installés explicitement (p. ex. en combinaison avec un fichier versionné dans /etc/
), vous pouvez mettre en place un hook de pacman.
Exemple:
[Trigger] Operation = Install Operation = Remove Type = Package Target = * [Action] When = PostTransaction Exec = /bin/sh -c '/usr/bin/pacman -Qqe > /etc/pkglist.txt'
Installer des paquets depuis une liste
Pour installer des paquets depuis une sauvegarde antérieure de la liste des paquets, tout en ne réinstallant pas ceux qui sont déjà installés et à jour, lancer:
# pacman -S --needed - < pkglist.txt
Cependant, il est probable que des paquets étrangers, tels ceux de AUR ou installés localement, soient présents dans la liste. Pour filtrer à partir de la liste les paquets étrangers, la ligne de commande précédente peut être enrichie comme suit :
# pacman -S --needed $(comm -12 <(pacman -Slq | sort) <(sort pkglist.txt))
Finalement, pour s'assurer que les paquets installés de votre système correspondent à la liste et supprimer tous les paquets qui n'y sont pas mentionnés :
# pacman -Rsu $(comm -23 <(pacman -Qq | sort) <(sort pkglist.txt))
Lister tout fichier modifié des paquets
Si vous suspectez une corruption des fichiers (par exemple après une défaillance logicielle/matérielle), mais n'êtes pas sûr si des fichiers ont été affectés, vous voudrez comparer la somme de hachage («hashsum») des paquets. Ceci peut-être fait avec :
# paccheck --md5sum --quiet
Pour la restauration de la base de données de pacman voir #Sauvegarde de la base de données de pacman. Les fichiers peuvent aussi être extraits sous la forme depuis leurs paquets respectifs.
Réinstallation de tous les paquets
Pour réinstaller tous les paquets d'origine, utiliser:
# pacman -Qqn | pacman -S -
Les paquets étrangers (AUR) doivent être réinstallés séparément; les lister par: .
Pacman préserve le motif d'installation (explicite, dépendance...) par défaut.
Restauration de la base de données locale de pacman
Récupération d'une clé USB à partir d'une installation existante
Si vous avez installé Arch sur une clé USB et l'ayez endommagée (par exemple en la retirant en cours d'écriture), il est possible de réinstaller tous les paquets et, espérons-le, de la remettre en fonction (en admettant que la clé USB soit montée dans )
# pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman
Affichage d'un seul fichier dans un fichier.pkg
Par exemple, si vous voulez voir le contenu de /etc/systemd/logind.conf
, fourni par le paquet :
$ bsdtar -xOf /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz etc/systemd/logind.conf
Ou utiliser vim pour parcourir l'archive:
$ vim /var/cache/pacman/pkg/systemd-250.4-2-x86_64.pkg.tar.zst
Trouver les applications qui utilisent des bibliothèques d'anciens paquets
Les processus déjà en cours d'exécution ne remarquent pas automatiquement les changements causés par les mises à jour. Au lieu de cela, ils continuent à utiliser les anciennes versions des bibliothèques. Cela peut être indésirable, en raison des problèmes potentiels liés aux vulnérabilités de sécurité ou autres bogues, et de l'incompatibilité des versions.
Les processus dépendant des bibliothèques mises à jour peuvent être trouvés en utilisant soit htop, qui met en évidence les noms des programmes affectés, soit avec un extrait basé sur , qui affiche également les noms des bibliothèques :
# lsof +c 0 | grep -w DEL | awk '1 { print $1 " : " $NF }' | sort -u
Cette solution ne détectera que les fichiers qui sont normalement maintenus ouverts par les processus en cours d'exécution, ce qui la limite essentiellement aux bibliothèques partagées (fichiers ). Elle peut manquer certaines dépendances, comme celles des applications Java ou Python.
Installer le contenu uniquement dans les langues requises
De nombreux paquets tentent d'installer la documentation et les traductions en plusieurs langues. Certains programmes sont conçus pour supprimer ces fichiers inutiles, comme , qui s'exécute après l'installation d'un paquet pour supprimer les fichiers locaux inutiles. Une approche plus directe est fournie par la directive dans , qui empêche l'installation de ces fichiers.
L'exemple ci-dessous installe des fichiers anglais (US), ou aucun :
Installation de paquets sur une mauvaise connexion
Lorsque vous essayez d'installer un paquet à partir d'une mauvaise connexion (par exemple, en train avec un téléphone portable), utilisez l'option pour réduire le risque de recevoir des erreurs telles que :
error: failed retrieving file […] Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds
ou
error: failed retrieving file […] Operation timed out after 10014 milliseconds with 0 out of 0 bytes received
Performance
Vitesse de téléchargement
Lors du téléchargement de paquets pacman' utilise les miroirs dans l'ordre dans lequel ils sont . Le miroir qui se trouve en haut de la liste par défaut n'est peut-être pas le plus rapide pour vous. Pour sélectionner un miroir plus rapide, voir Miroirs. La vitesse de téléchargement des paquets par Pacman peut également être améliorée par l'activation des téléchargements parallèles ou l'utilisation d'un programme de téléchargement différent de celui intégré de pacman.
Dans tous les cas assurez-vous d'avoir la dernière version de pacman avant toute modification, par:
# pacman -Syu
Powerpill
Powerpill est une surcouche de pacman qui utilise le téléchargement parallèle et segmenté pour accélérer les téléchargements de pacman.
wget
Il est également très pratique si vous avez besoin de paramètres proxy plus puissants que les capacités intégrées de pacman.
D'abord installez le paquet , puis modifiez en dé-commentant cette ligne de la section :
XferCommand = /usr/bin/wget --passive-ftp --show-progress -c -q -N %u
Au lieu dé-commenter des paramètres de wget
dans , vous pouvez directement modifier ses fichiers de configuration ( à l'échelle du système le fichier est , pour l'utilisateur, ).
aria2
aria2 est un utilitaire de téléchargement léger prenant en charge les téléchargements HTTP / HTTPS et FTP pouvant être résumés et segmentés. aria2 permet plusieurs connexions simultanées HTTP / HTTPS et FTP à un miroir Arch, ce qui devrait entraîner une augmentation de la vitesse de téléchargement des fichiers et des packages.
Installer , puis éditer en ajoutant la ligne suivante dans la section :
XferCommand = /usr/bin/aria2c --allow-overwrite=true --continue=true --file-allocation=none --log-level=error --max-tries=2 --max-connection-per-server=2 --max-file-not-found=5 --min-split-size=5M --no-conf --remote-time=true --summary-interval=60 --timeout=5 --dir=/ --out %o %u
Voir aria2c(1) § OPTIONS pour les options d'aria2c utilisées.
- : Le répertoire dans lequel stocker le ou les fichiers téléchargés, comme spécifié par pacman.
- : Le nom du ou des fichiers de sortie du ou des fichiers téléchargés.
- : Variable qui représente le ou les noms de fichiers locaux spécifiés par pacman .
%u
: Variable représentant l'URL de téléchargement spécifiée par pacman .
Autres applications
Voici les autres applications de téléchargement que vous pouvez utiliser avec pacman , et leurs paramètres de la commande XferCommand associés:
- :
- :
- :
- : (svp lire la documentation de la page de projet Github pour plus d'infos)
Utilitaires
- Lostfiles — Script pour identifier les fichiers n'appartenant à aucun paquet.
- pkgfile — Outil pour retrouver à quel paquet appartient un fichier - et aussi donner la liste des fichiers que le paquet installe.
Graphique
- Apper — Application Qt 5 et gestionnaire de paquets utilisant PackageKit écrit en C++. Prends en charge les metadata AppStream .
- pcurses — Habillage pacman Curses TUI écrit en C++.