pacman (Français)/Tips and tricks (Français)
Méthodes générales utilisées pour l'amélioration de la flexibilité des astuces fournies, ou pacman lui-même: voir Core utilities et Bash.
Maintenance
Usage=
et 5.1 --overwrite
grep -Fxf
ou grep -Fxvf
.Voir aussi Maintenance Système traduit de System maintenance.
Liste des paquets
On peut vouloir obtenir la liste des paquets installés et leur version, en cas par exemple de report 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 nommé
group
:pacman -Sg group
- Liste des paquets installés explicitement, d'origine (c.-à-d. présents dans la base de données /var/lib/pacman/local/), qui ne sont pas des dépendances directes ni optionnelles:
pacman -Qent
. - 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(es) base(s) synchronisée(s)):
pacman -Qn
. - Liste des paquets - filtrage par expression régulière:
pacman -Qs regex
. - Liste des paquets - filtrage par expression régulière avec sortie en format personnalisé:
expac -s "%-30n %v" regex
(needs expac).
Avec leur 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 avec leurs dépendances
- Lister leur taille en incluant les dépendances:
- Installer expac et lancer expac -H M '%m\t%n' | sort -h
- Lancer pacgraph avec l'option -c
- Lister la taille de téléchargement de plusieurs paquets (laissez
packages
vide pour lister tous les paquets):
$ expac -S -H M '%k\t%n' packages
- Lister les paquets installés explicitement qui ne sont ni dans base ni dans base-devel avec taille et description:
$ expac -H M "%011m\t%-20n\t%10d" $(comm -23 <(pacman -Qqen | sort) <(pacman -Qqg base base-devel | sort)) | sort -n
- Lister les paquets marqués comme nécessitant une mise à jour avec la taille de téléchargement:
$ pacman -Quq|xargs expac -S -H M '%k\t%n' | sort -sh
$ sudo pacman -Syde plus, si on est à jour, la sortie de pacman -Qu sera vide et expac ne recevant aucun paquet en argument, listera tous les paquets... La suppression de xargs après le pipe entraine un message d'erreur et semble donc préférable :
$ pacman -Quq| expac -S -H M '%k\t%n' | sort -sh
$ checkupdatesdonnera une liste simple de paquets à mettre à jour
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 le moment (1970-01-01 UTC):
$ expac --timefmt=%s '%l\t%n' | sort -n | tail -n 20
N'appartenant pas à un groupe ou dépôt specifié
Liste des paquets installés en-dehors des groupes base ou base-devel:
$ comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base base-devel | sort)
Liste de tous les paquets installés non requis par d'autres paquets et en-dehors des groupes base ou base-devel:
$ comm -23 <(pacman -Qqt | sort) <(pacman -Sqg base base-devel | sort)
Comme ci-dessus, mais avec descriptions:
$ expac -HM '%-20n\t%10d' $(comm -23 <(pacman -Qqt | sort) <(pacman -Qqg base base-devel | sort))
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:
Installer fzf
$ pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)'
Le programme fzf présentera une vue à deux volets listant tous les paquets avec les informations sur les paquets affichées à droite.
Entrez des lettres pour filtrer la liste des paquets ; utilisez les touches fléchées (ou Ctrl-j
/Ctrl-k
) pour naviguer ; appuyez sur Enter
pour voir les informations des paquets sous less.
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 '/$' | xargs du -h | sort -h
Recherche des fichiers n'appartenant à aucun paquet
Si des paquets é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 - voir Maintenance Système), vous pouvez vouloir trouver ces fichiers afin de les nettoyer.
Une méthode est d'utiliser la commande # pacreport --unowned-files
de pacutils qui listera ces paquets "sans nom" parmi d'autres détails.
Une autre est d'isoler tous les fichiers particuliers, à tester en suite en utilisant pacman:
# find /etc /usr /opt /var | 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 pacreport
de pacutils pour suivre ces fichiers et leurs associations via /etc/pacreport.conf
(voir pacreport(1)).
Exemple (résumé - voir man) de configuration:
/etc/pacreport.conf
[Options] IgnoreUnowned = usr/share/applications/mimeinfo.cache [PkgIgnoreUnowned] alsa-utils = var/lib/alsa/asound.state bluez = var/lib/bluetooth ca-certificates = etc/ca-certificates/trust-source/* dbus = var/lib/dbus/machine-id glibc = etc/ld.so.cache grub = boot/grub/* linux = boot/initramfs-linux.img pacman = var/lib/pacman/local update-mime-database = usr/share/mime/magic
Ainsi, en lançant # pacreport --unowned-files
, on affichera une liste détaillée et motivée 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 (ex ~/.aconfmgr), le suivi des fichiers modifiés et orphelins , voir aconfmgr-readme
Suppression des paquets inutiles (orphelins)
Suppression récursive des paquets orphelins et de leurs fichiers de configuration:
# pacman -Rns $(pacman -Qtdq)
En l'absence d'orphelins la sortie de pacman sera un message d'erreur: error: no targets specified
, attendu qu'aucun argument ne sera passé par la commande expansée pacman -Qtdq
à la commande pacman -Rns
.
-Qt
listent les vrais orphelins. Pour inclure les paquets installés en tant que dépendances optionnelles n'étant plus requis par aucun autre, doubler l'argument t, ex.: -Qtt}. # pacman -D --asexplicit paquet
avant l'utilisation de la commande - radicale - ci-dessus !Suppression de tous les paquets non-essentiels
S'il était nécessaire de désinstaller la totalité des programmes en dehors de ceux dont la nécessité est critique, la méthode est de changer la «raison d'installation» vers «installé comme dépendance» pour tous les paquets.
# pacman -D --asdeps $(pacman -Qqe)
Ensuite, changer la raison d’installation vers «installé explicitement», pour les paquets que vous ne voulez pas supprimer.
# pacman -D --asexplicit base linux linux-firmware
- Divers paquets peuvent être ajoutés à cette dernière commande. Voir Installation guide (Français)#Installation des paquets de base.
- Ceci va également supprimer le chargeur d'amorçage. Le système devrait toujours démarrer normalement, mais il ne sera plus possible de changer les paramètres de démarrage.
Puis ensuite supprimer toutes les dépendances non essentielles, en suivant les instructions du paragraphe #Suppression des paquets inutiles (orphelins)
Obtenir la liste de dépendances de plusieurs paquets
Dépendances triées par ordre alphabétique et élimination des doubles.
pacman -Qi
.$ 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
Liste des fichiers de sauvegarde modifiés
Si vous voulez sauvegarder vos fichiers de configuration système, vous pouvez copier tous les fichiers dans /etc/
}, mais vous n'êtes généralement intéressé que par les fichiers que vous avez modifiés . Les Package backup files modifés seront trouvés par la commande:
# pacman -Qii | awk '/^MODIFIED/ {print $2}'
Lancer cette commande avec les permssions root vous assurera d'inclure dans la sortie les fichiers en lecture exclusive par root (tels que /etc/sudoers
).
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 pacman_database.tar.bz2
vers le répertoire racine /
puis l'exécution de la commande suivante:
# tar -xjvf pacman_database.tar.bz2
/etc/pakbak.conf
.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 pacologAUR.
Cet utilitaire liste les messages de commit récents pour les paquets provenant des dépôts officiels ou de AUR, en utilisant pacolog <package>
.
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 et d'y faire référence avec l'option --dbpath
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.
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 pacman.conf
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 repo-add --help
.
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, 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.xz
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.xz
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.xz 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 similaires à celui-ci :
==> ERROR: '/home/archie/customrepo/<arch>/foo-<arch>.pkg.tar.xz' 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 à pacman.conf
pour chaque système qui aura à utiliser le dépôt. Le fichier pacman.conf
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 la syntaxe file://
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 "Unofficial user repositories", pour en faire bénéficier la communauté.
Cache pacman partagé en réseau
Si vous utilisez plusieurs systèmes sous Archlinux sur votre réseau local, vous pouvez partager les paquets afin de réduire considérablement les temps de téléchargement. Les systèmes 32b (obsolètes) ne pourront participer au partage avec les architectures x86_64.
Cache en lecture seule
Si vous cherchez une solution rapide lancez simplement un serveur autonome que d'autres ordinateurs pourront utiliser en premier miroir:
# ln -s /var/lib/pacman/sync/*.db /var/cache/pacman/pkg $ sudo -u http darkhttpd /var/cache/pacman/pkg --no-server-id
Pour plus de commodité vous pourriez également exécuter darkhttpd
en tant que service système . Ajoutez simplement ce serveur en haut de votre /etc/pacman.d/mirrorlist
} dans les machines clientes avec Server = http://mymirror:8080
. Assurez-vous de garder votre miroir à jour.
Si vous faites déjà fonctionner un serveur réseau à d'autres fins vous pourriez aussi souhaiter le réutiliser en serveur local en place de darkhttpd. Par exemple, si vous servez déjà un site avec nginx, vous pouvez ajouter un bloc serveur nginx à l'écoute sur le port 8080:
/etc/nginx/nginx.conf
http { # ... other nginx server configs up here server { listen 8080; root /var/cache/pacman/pkg; server_name myarchrepo.localdomain; try_files $uri $uri/; } }
Rappelez-vous de redémarrer nginx après cette modification.
Quelque soit votre solution de serveur, souvenez-vous d'ouvrir le port 8080 au trafic local (et probablement refuser ce qui n'est pas local), aussi ajouter une règle de ce type à iptables:
/etc/iptables/iptables.rules
-A TCP -s 192.168.0.0/16 -p tcp -m tcp --dport 8080 -j ACCEPT
Rappelez-vous de redémarrer iptables après cette modification.
Cache en lecture seule, distribué
Il existe des outils spécifiques Arch pour la découverte automatique d'autres ordinateurs sur votre réseau offrant un cache de paquets. Essayez pacredir, pacserve, pkgdistcacheAUR, ou paclanAUR. pkgdistcache utilise Avahi au lieu du simple UDP qui peut fonctionner mieux dans certains réseaux domestiques pour acheminer en routeur plutôt qu'en passerelle entre WiFi et Ethernet.
Historiquement existaient PkgD et multipkg, qui ne sont plus maintenus.
Cache en lecture/écriture
Pour le partage de paquets entre plusieurs ordinateurs, partagez simplement /var/cache/pacman/
en utilisant n'importe quel protocole de montage réseau. Cette section montre comment utiliser shfs ou 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.
- En premier installer tous les paquets de gestion de systèmes de fichiers en réseau: shfs-utils, sshfs, curlftpfs, samba ou nfs-utils.
- Pour utiliser sshfs or shfs, pensez à consulter Using SSH Keys.
- Par défaut, smbfs ne sert pas les noms de fichiers qui contiennent des deux-points, ce qui a pour conséquence que le client télécharge à nouveau le paquet en question. Pour éviter cela, utilisez l'option
mapchars
} mount du client.
- Puis, pour partager les paquets actuels, montez
/var/cache/pacman/pkg
du serveur sur/var/cache/pacman/pkg
de chaque machine cliente.
/var/cache/pacman/pkg
ou d'aucun de ses prédécesseurs (p.ex., /var
) un lien symbolique. Pacman attend qu'ils soient des répertoires. Quand pacman se réinstalle ou se met à jour lui-même il les écrasera avec des répertoires vides. Cependant, au cours de la transaction, " pacman " s'appuie sur certains fichiers qui y résident, brisant ainsi le processus de mise à jour. Voir bug50298 pour plus de détails.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 uname -m
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é en proxy pour les requêtes aux miroirs officiels en amont et mettre en cache les résultats sur le disque local. Toutes les demandes subséquentes pour ce fichier seront servies directement à partir du cache local, minimisant ainsi la quantité de trafic Internet nécessaire pour mettre à jour un grand nombre de serveurs avec un effort minimal.
Dans cet exemple, nous utiliserons des miroirs utilisant le chemin relatif /archlinux/$repo/os/$arch
avec le paramètre Server
de notre cache dans mirrorlist
configuré de même.
Créer le répertoire pour le cache avec les permissions pour que nginx puisse y écrire:
# mkdir /srv/http/pacman-cache # chown http:http /srv/http/pacman-cache
Puis configurer nginx comme dynamic cache (lire les commentaires pour une explication des commandes).
Terminer par la mise à jour de vos autres serveurs Arch Linux pour utiliser ce nouveau cache par l'ajout au fichier mirrorlist
de:
/etc/pacman.d/mirrorlist
Server = http://cache.domain.example:8080/archlinux/$repo/os/$arch ...
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.Synchroniser le cache de pacman avec des programmes de synchronisation
Utiliser Syncthing ou Resilio Sync pour synchroniser les répertoires du cache de pacman (ex. /var/cache/pacman/pkg
).
Prevention des purges involontaires du cache
Par défaut, pacman -Sc
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 vider le cache en ne supprimant que les archives de paquets périmés ajouter cette entrée dans la secion [options]
de /etc/pacman.conf
:
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
- Avec l'option
-t
, les paquets déjà requis par d'autres paquets explicitement installés ne seront pas mentionnés. En cas de réinstallation depuis cette liste il seront bien installés, mais seulement en tant que dépendances. - Avec l'option
-n
, les paquets étrangers (ex. de AUR) seraient exclus de la liste. - Utiliser
comm -13 <(pacman -Qqdt | sort) <(pacman -Qqdtt | sort) > optdeplist.txt
pour créer aussi une liste des dépendances optionnelles installées qui pourront être réinstallées avec l'option--asdeps
. - Utiliser
pacman -Qqem > foreignpkglist.txt
pour créer la liste des paquets AUR ou autres paquets étrangers, explicitement installés.
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 pacman-hook.
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))
Eventuellement, 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 - sans en être sûr - une corruption des fichiers (p.ex. après une défaillance logicielle/matérielle), vous voudrez comparer la somme de hachage hashsum des paquets. Ceci peut-être fait avec la commande issue du paquet pacutils:
# 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 mtree
peuvent aussi être extraits sous la forme .MTREE
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 -Qqm
.
Pacman préserve le motif d'installation (explicite, dépendance...) par défaut.
--overwrite=*
(bien que cette commande ne doit pas être sans nécessité absolue). Voir Évitez certaines commandes de pacman.Restauration de la base de données locale de pacman
Voir Pacman/Restore local database.
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 /newarch
)
# 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 systemd :
$ 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-204-3-x86_64.pkg.tar.xz
Trouver des applications qui utilisent des bibliothèques d'anciens paquets
Même si vous mettez à jour ou installez un paquet, les programmes en cours de longue date (comme les daemons et les serveurs) continuent à utiliser le code des anciennes bibliothèques de paquets. Et c'est une mauvaise idée de laisser tourner ces programmes si l'ancienne bibliothèque contient un bogue de sécurité. voici le moyen de retrouver tous les programmes utilisant des codes d'anciens paquets:
# lsof +c 0 | grep -w DEL | awk '1 { print $1 ": " $NF }' | sort -u
qui affichera les programmes en fonction et les bibliothèques supprimées ou remplacées avec un nouveau contenu.
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 localepurgeAUR, 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 NoExtract
dans pacman.conf
, qui empêche l'installation de ces fichiers. L'exemple ci-dessous installe des fichiers anglais (US), ou aucun :
/etc/pacman.conf
NoExtract = usr/share/help/* !usr/share/help/en* NoExtract = usr/share/gtk-doc/html/* NoExtract = usr/share/locale/* usr/share/X11/locale/* usr/share/i18n/* opt/google/chrome/locales/* NoExtract = !*locale*/en*/* !usr/share/i18n/charmaps/UTF-8.gz !usr/share/*locale*/locale.* NoExtract = !usr/share/*locales/en_?? !usr/share/*locales/i18n !usr/share/*locales/iso* NoExtract = !usr/share/*locales/trans* NoExtract = usr/share/qt4/translations/* NoExtract = usr/share/man/* !usr/share/man/man* NoExtract = usr/share/vim/vim*/lang/* NoExtract = usr/lib/libreoffice/help/en-US/*
Certains utilisateurs ont noté que la suppression de locales a eu des conséquences imprévues.
Performance
Vitesse de téléchargement
Lors du téléchargement de paquets pacman' utilise les miroirs dans l'ordre dans lequel ils sont /etc/pacman.d/mirrorlist
. 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'utilisation d'un programme de téléchargement différent du chargeur 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 un habillage 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's.
D'abord Installez le paquet wget, puis modifier /etc/pacman.conf
en dé-commentant cette ligne de la section [options]
:
XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
Au lieu des paramètres décommentés de wget
dans /etc/pacman.conf
, vous pouvez directement modifier ses fichiers de configuration ( à l'échelle du système le fichier est /etc/wgetrc
, pour l'utilisateur, $HOME/.wgetrc
).
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 aria2, puis éditer /etc/pacman.conf
en ajoutant la ligne suivante dans la section [options]
:
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 OPTIONS dans aria2c(1) pour les options d'aria2c utilisées.
-
-d, --dir
: Le répertoire dans lequel stocker le ou les fichiers téléchargés, comme spécifié par pacman. -
-o, --out
: Le nom du ou des fichiers de sortie du ou des fichiers téléchargés. -
%o
: 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:
-
snarf
:XferCommand = /usr/bin/snarf -N %u
-
lftp
:XferCommand = /usr/bin/lftp -c pget %u
-
axel
:XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u
-
hget
:XferCommand = /usr/bin/hget %u -n 2 -skip-tls false
(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.
- Pacmatic — Habillage de Pacman pour consulter les actualités "Arch News" avant mise à jour, éviter les mises à jour partielles, et être averti des changements dans les fichiers de configuration.
- pacutils — Bibliothèque d'assistance pour les programmes basés sur libalpm.
- pkgfile — Outil pour retrouver à quel paquet appartient un fichier - et aussi donner la liste des fichiers que le paquet installe.
- pkgtools — Collection de scripts pour paquets Arch Linux.
- Powerpill — Utilise le téléchargement parallèle et segmenté via Aria2 et Reflector pour tenter d'accélérer la vitesse de téléchargement des paquets pour pacman.
- repoctl — Outil d'aide à la gestion des dépôts locaux.
- repose — Outil de construction d'un dépôt Arch Linux.
- snap-pac — Permet à pacman d'utiliser automatiquement snapper pour créer des snapshots pré/post comme YaST d'openSUSE.
- vrms-arch — Un Richard M. Stallman virtuel pour vous dire quels paquets non-libres sont installés.
Graphique
- Apper — Application Qt 5 et gestionnaire de paquets utilisant PackageKit écrit en C++. Prends en charge les metadata AppStream .
- Discover — Gestionnaire d'application Qt 5 utilisant PackageKit écrit en C++/QML. Prends en charge les metadata AppStream , Flatpak and Fwupd.
- GNOME PackageKit — Gestionnaire d'application GTK+ 3 utilisant PackageKit écrit en C.
- GNOME Software — Gestionnaire d'application GTK+ 3 utilisant PackageKit écrit en C. Prends en charge les metadata AppStream , Flatpak and Fwupd.
- pcurses — Habillage pacman Curses TUI écrit en C++.
- tkPacman — Habillage pacman Tk écrit en Tcl.