Aide-mémoire (des commandes) de Gentoo
emerge — configuration — ebuild repository — dispatch-conf
world file — USE flags — ebuilds — profiles
upgrades — using testing packages — binary packages
tools — gentoolkit — eselect
Portage FAQ — cheat sheet — FAQ
all articles
Cet article est une fiche de références de commandes et astuces utiles à l’administration des systèmes Gentoo. Les nouveaux arrivant et les «barbes-grises» sont encouragés à ajouter leur propre astuces utiles ci-dessous.
Gestion des paquets
Méthodes de synchronisation
Il est important de lire et suivre toutes les «news items» (NdT: les nouvelles annonces de Portage) qui se présente après avoir réalisée une synchronisation. Voir les instructions détaillées à propos des mises à jours.
Portage
Synchronise tout les dépôts qui sont paramétrés pour automatiquement inclure le dépôt ebuild :
root #
emaint --auto sync
Ou, pour faire court :
root #
emaint -a sync
Synchronise le dépôt ebuild de Gentoo en utilisant les miroirs pour obtenir un «snapshot» (NdT: instantanée) qui est (au plus) vieux d’un jour :
root #
emerge-webrsync
emerge --sync lance désormais le module de synchronisation d’emaint avec l’option --auto
. Voir les opérations de synchronisation de Portage.
eix
Synchroniser le dépôt des paquets configurés et le dépôt ebuild de Gentoo en utilisant eix :
root #
eix-sync
Cela ne synchronise pas uniquement les dépôts, cela met à jour le cache utilisé par eix pour réaliser des requêtes. Il peut être préférable de configurer Portage pour mettre à jour le cache automatiquement.
Listage des paquets
qlist
Liste les paquets installés avec leur numéro de version et le nom de l’«overlay» utilisé (NdT: une arborescence alternatives de paquets disponibles) :
root #
qlist -IRv
qlist est fournit par app-portage/portage-utils.
eix
Pour voir la suite des paquets installés dans world, accompagnés de leur version disponibles, il est possible d’utiliser eix :
root #
eix --world | less
Pour conserver la couleur dans la sortie (NdT: du terminal), utilisez l’option --color
:
root #
eix --color -c --world | less -R
Portage
Referring to Package sets, the selected set packages are listed by issuing:
user $
emerge --pretend --quiet --emptytree --nodeps @selected
List all (*), or specific named, packages using multiple slots:
user $
equery list --duplicates '*'
Installation de paquet
Dans l’exemple suivant le paquet www-client/firefox vas être utilisé, mais les utilisateurs devraient le remplacer avec les paquets qu’ils veulent installer.
Lister quels paquets seront installés, sans les installer :
user $
emerge --pretend --verbose www-client/firefox
Ou, pour faire court :
user $
emerge -pv www-client/firefox
Liste quels paquets seront installé, le demander avant l’installation :
root #
emerge --ask --verbose www-client/firefox
Ou, pour faire court :
root #
emerge -av www-client/firefox
Installer une version spécifique
Installer une version spécifique d’un paquet (utiliser "\=" (anti-slash et le signe égal) pour des terminaux qui donne une signification particulière au caractère "="). Par exemple :
root #
emerge --ask =www-client/firefox-96.0.1
Cela marchera temporairement, jusqu’à ce que le système soit mis à jour. Durant une mise à jour de Portage il essaiera d’installer la dernière version stable du paquet peu importe la version du paquet installé ; si le paquet a été originellement installé avec l’opérateur pré-fixé = ou non.
Pour prévenir Portage d’automatiquement mettre à jour un paquet, ajouter la ligne suivante dans le fichier /etc/portage/package.mask/package.mask (le créer s’il n’existe pas). Spécifier l’opérateur plus-grand-que préfixé (>
) ou plus-petit-que (<
) s’il est plus récent :
<www-client/firefox-96.0.1
Voir le fichier /etc/portage/package.mask pour plus de détails sur le masquage des paquets.
Installer (NdT: un paquet) sans l’ajouter au fichier monde
Installer un paquet sans l’ajouter dans le fichier monde :
root #
emerge --ask --oneshot www-client/firefox
Ou, pour faire court :
root #
emerge -a1 www-client/firefox
Suppression de paquet
Voir la documentation d’emerge sur la suppression des paquets pour plus d’informations.
--deselect
Utiliser l’option emerge --deselect (ou -W
pour faire court) pour supprimer le paquet spécifié depuis le @world set (exemple : cela indique que le paquet n’est plus désiré désormais) :
root #
emerge --deselect www-client/firefox
Maintenant lancer emerge --depclean (ou -c
pour faire court). L’option --pretend
(-p
) fera faire à emerge une liste des actions à entreprendre, cela doit être revérifier avant application pour être sûr qu’aucun paquet désiré ne soit enlevé :
user $
emerge --pretend --depclean
Si emerge --depclean n’as pas été lancé depuis un moment, il pourrait tenter de supprimer de nombreux paquets - la prudence est de mise. Une fois qu’il est certain que la commande emerge --depclean supprimera seulement des paquets non désirés, lancer :
root #
emerge --ask --depclean
L’option --ask
n’est pas réellement nécessaire après --pretend
, mais est inclus dans la dernière commande pour éviter toutes mésaventures avec un copier-coller.
Ne pas confondre l’option en minuscule
-c
, qui est la version courte de --depclean
(et est sûr), avec la version en majuscule -C
qui risque d’endommager le système et ne devrait être utilisé que lorsque cela est absolument nécessaire (voir l’avertissement dans la section suivante).--depclean
Pour supprimer directement un paquet dont aucun autre ne dépend :
root #
emerge --ask --verbose --depclean www-client/firefox
Calculating dependencies... done! >>> Calculating removal order... >>> These are the packages that would be unmerged: www-client/firefox selected: 68.5.0 protected: none omitted: none All selected packages: =www-client/firefox-68.5.0 >>> 'Selected' packages are slated for removal. >>> 'Protected' and 'omitted' packages will not be removed. Would you like to unmerge these packages? [Yes/No]
Comme garde-fou, depclean ne supprimera pas de paquets à moins que toutes dépendances soit résolu. En conséquence, il est parfois nécessaire de lancer en premier :
root #
emerge --ask --verbose --update --newuse --deep @world
Utiliser --changed-use
(-U
) à la place de --newuse
(-N
) pour éviter de recompiler lorsque seulement un USE flag a été ajouté ou supprimé du dépôt. Utiliser l’option --quiet
(-q
) pour une exécution plus succincte :
root #
emerge --ask --quiet --update --changed-use --deep @world
Il y a l’option
--unmerge
(-C
), mais cela n’est pas recommandé et peut casser le système si elle n’est pas utilisé avec précaution. Cette option n’est à utiliser que si nécessaire et une fois correctement informé de ce qu’elle va faire. Cela va casser le système, ou d’autres logiciels, si utilisé sur certains paquet. La manière correcte de supprimer un paquet est en théorie toujours l’option --depclean
, comme décrite ci-dessus. Cela dit, elle est parfois utile pour temporairement un blocage compliqué à résoudre.Mise à jour des paquets
Pour mettre à jour tout les paquets dans le world set, leur dépendances (--deep
) et les paquets qui ont eu un changement d’USE flag (évitant des recompilations qui ne sont pas nécessaires quand le changement n’a pas d’impact) :
root #
emerge --ask --verbose --update --deep --changed-use @world
L’option --newuse
peut être utilisée à la place de --changed-use
pour être certains que tout les USE flags de tout les paquets reflètent leur état réels avec ceux du dépôt de Gentoo , cela dit il y aura plus de re-compilations. L’option --with-bdeps=y
peut être utilisé pour mettre à jour les dépendances pendant celle-ci.
Voir mettre à jour Gentoo pour des informations plus approfondies.
Résolution des problèmes de paquet
Vérifier les bibliothèques manquantes et les reconstruire (ce qui normalement n’est pas nécessaire) :
root #
revdep-rebuild -v
equery fait partie de app-portage/gentoolkit. Installable via cette commande :
root #
emerge -a gentoolkit
Indique quel paquet installé procure une commande en utilisant equery :
user $
equery b `which vim`
qfile peut offrir une alternative plus rapide à equery, si nécessaire.
Indique quel paquet (non) installé procure une commande en utilisant e-file :
user $
e-file vim
Installer e-file avec :
root #
emerge -a app-portage/pfl
Indique quels paquets dépendent d’un paquet spécifique (cat/pkg dans cet exemple) en utilisant equery :
user $
equery d www-client/firefox
Obtenir des informations à propos d’un paquet en utilisant eix :
root #
eix www-client/firefox
Ne pas désinstaller sys-libs/glibc. Il est nécessaire pour à peu près tout les autres paquets. S’il est supprimé par accident, une clé USB/disque dur de récupération peut être nécessaire. Il peut être possible de récupérer glibc après avoir paramétré
PORTAGE_BINHOST="http://packages.gentooexperimental.org/packages/amd64-stable/"
dans /etc/portage/make.conf.Reconstruction
Parfois il est nécessaire de reconstruire des paquets pour que certains autres puissent fonctionner. Voici parmi les re-compilations les plus communes :
Après avoir installé un nouveau noyau :
root #
emerge @module-rebuild
Après avoir mis à niveau vers une autre version de Go :
root #
emerge @golang-rebuild
Pour utiliser de nouvelles bibliothèques :
root #
emerge @preserved-rebuild
Améliorations de Portage
S’occuper d’un changement de configurations après un emerge qui viens de se compléter :
root #
dispatch-conf
Après une installation ou des mises à jours
Après avoir mis à jour le paquet perl-core :
root #
perl-cleaner --all
Or si la commande précédente n’a pas fonctionné :
root #
perl-cleaner --reallyall -- -av
Pour le paquet haskell :
root #
haskell-updater
USE flags
Obtenir une description et l’usage de l’USE flag X
en utilisant euse :
user $
euse -i X
Obtenir plus d’informations sur euse en lisant les pages de son man :
user $
man euse
Voir quels paquets ont l’USE flag mysql
:
user $
equery hasuse mysql
Montre quels paquets sont actuellement compilés avec le support de l’USE flag mysql
:
user $
eix --installed-with-use mysql
Montre les USE flags disponibles pour un paquet spécifiques :
user $
equery uses <nom-du-paquet>
Ajouter rapidement l’USE flag requis pour l’installation d’un paquet :
root #
echo 'dev-util/cmake -qt5' >> /etc/portage/package.use
Fichiers importants de Portage
- /etc/portage - répertoire de configuration primaire de Portage.
- /etc/portage/make.conf - Paramètres globaux (USE flags, options du compilateur).
- /etc/portage/package.use - USE flags pour des paquets individuellement. Peut aussi être un répertoire contenant plusieurs fichiers.
- /etc/portage/package.accept_keywords - Keyword (NdT: en français, «mot-clé») pour des paquets individuels; exemple: ~amd64, ~x86, ou ∼arm.
- /etc/portage/package.license - Les licences acceptées.
- /etc/portage/profile/use.mask - pour «masking/unmasking» (NdT: masquer/démasquer, en français) les USE flags verrouillés.
- /var/lib/portage/world - Liste des «atoms» de paquets explicitement installés.
- /var/db/pkg - Contient des informations pour toutes les suites de paquets installés contenant des informations à propos des fichiers d’installations.
Gestion des journaux
genlop
genlop est un ordinateur de journaux (NdT: dans le sens qui trie, ordonne) pour Portage, qui peut aussi estimer le temps nécessaire à construire un paquet.
Installer app-portage/genlop en tapant :
root #
emerge -a app-portage/genlop
Obtenir plus d’informations sur genlop en lisant les pages de son manuel (man) :
root #
man genlop
Voir les 10 derniers emerge (installations) :
root #
genlop -l | tail -n 10
Pour voir combien de temps prendra la compilation de LibreOffice :
root #
genlop -t libreoffice
Estimer combien de temps prendra la commande emerge -uND --with-bdeps=y @world :
root #
emerge -pU @world | genlop --pretend
Voir le dernier merge d’un ebuild durant la mise à jour du système :
root #
watch genlop -unc
Overlays (arborescence alternative de Portage)
Dépôt eselect
app-eselect/eselect-repository peut être installé en tapant :
root #
emerge -a app-eselect/eselect-repository
Lister toutes les arborescences alternatives (de Portage, NdT: en anglais «overlays») :
user $
eselect repository list
Lister tout les overlays installés :
user $
eselect repository list -i
Voir Eselect/Repository pour plus d’informations.
Services
Obtenir un terminal en root (si l’utilisateur est dans la liste de sudoers) :
user $
sudo -i
OpenRC
Démarrer le démon (NdT: dans le sens service) au niveau d’exécution par défaut au démarrage :
root #
rc-update add sshd default
Démarrer le service sshd tout de suite :
root #
rc-service sshd start
Vérifier si le service sshd est en cours d’exécution :
root #
rc-service sshd status
Redémarrer le service sshd :
root #
rc-service sshd restart
Arrêter le service sshd :
root #
rc-service sshd stop
Lister les services, leur état et à quel niveau d’exécution ils appartiennent :
root #
rc-status --all
Affiche les services activés et à quel niveau d’exécution ils appartiennent (qu’ils soient en cours d’exécution ou non, seulement s’ils sont activés au démarrage ou non) :
root #
rc-update show
systemd
Démarrer le démon ssh au démarrage :
root #
systemctl enable sshd
Démarrer le service sshd tout de suite :
root #
systemctl start sshd
Vérifier si le service sshd est en cours d’exécution :
root #
systemctl status sshd
Astuces
Générer les méta-données du cache
Les dépôts ebuild varient du très petit au très gros en taille. Cela résulte en une exécution très lente de la plupart des opérations de Portage. Cela arrive car l’arborescence alternatives (overlays) ne contient pas les méta-données du cache. Le cache est utilisée pour accélérer les recherches et pour construire l’arbre des dépendances. Une astuce sympathique consiste à générer les méta-données localement après avoir synchronisé les arborescences.
root #
emerge --regen
Cette astuces fonctionne aussi en conjonction avec eix. eix-update peut utiliser les méta-données du cache généré par emerge --regen pour accélérer les choses. Pour activer cela, ajouter la variable suivante au fichier /etc/eixrc/00-eixrc :
OVERLAY_CACHE_METHOD="assign"
Chercher des paquets dans Portage avec des expressions régulières
Pour chercher des paquets dans Portage via les expressions régulières :
root #
emerge -s "%^python$"
ou
root #
emerge --search "%^python$"
qcheck
Utiliser qcheck pour vérifier les paquets installés :
root #
qcheck vim-core
qcheck est installé avec app-portage/portage-utils et peut être installé en exécutant cette commande :
root #
emerge -a app-portage/portage-utils
Apprendre plus à propos de qcheck en lisant les pages de son manuel :
user $
man qcheck