Gentoo Cheat Sheet
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
Questo è un manuale di comandi utili per amministrare sistemi Gentoo. Nuovi e vecchi arrivi sono incoraggiati ad aggiungere le proprie.
Gestione dei pacchetti
Metodi di sincronizzazione
È importante leggere e seguire ciascuna notizia che si presenti dopo una sincronizzazione di repository. Vedere le istruzioni in dettaglio riguardo gli aggiornamenti.
Portage
Per sincronizzare tutte le repository targate auto-sync, inclusa la ebuild Gentoo:
root #
emaint --auto sync
Oppure, in breve:
root #
emaint -a sync
Per sincronizzare tutte le ebuild repository di Gentoo tramite mirror, usando uno snapshot vecchio (al massimo) di un giorno:
root #
emerge-webrsync
emerge --sync esegue il modulo di sincronizzazione emaint con aggiunta l'opzione --auto
. Vedere operazioni di sincronizzazione di Portage per informazioni al riguardo.
eix
Sincronizzazione di repository di pacchetti e della ebuild repository di Gentoo usando eix:
root #
eix-sync
Questo non solo sincronizza le repository, aggiorna anche la cache usata da eix per eseguire le query. Potrebbe essere preferibile configurare portage per aggiornare la cache automaticamente.
Elencare pacchetti
qlist
Per elencare i paccetti installati con numero di versione e nome dell'overlay utilizzato:
root #
qlist -IRv
qlist è fornito da app-portage/portage-utils.
eix
Per visionare la lista di pacchetti nel world set, insieme alle versioni disponibili, può essere usato eix:
root #
eix --world | less
Per conservare il colore in output a terminale, usare l'opzione--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 '*'
Installare pacchetti
Negli esempi seguenti il pacchetto www-client/firefox verrà utilizzato, ma gli utenti possono rimpiazzarlo con il pacchetto che vogliono installare.
Per elencare quali pacchetti verrebbero installati, senza installarli:
user $
emerge --pretend --verbose www-client/firefox
Oppure, in breve:
user $
emerge -pv www-client/firefox
Per elencare quali pacchetti verrebero installati, chiedendo conferma prima di installarli:
root #
emerge --ask --verbose www-client/firefox
Oppure, in breve:
root #
emerge -av www-client/firefox
Installare una versione specifica
Per installare una versione specifica di un pacchetto (usando "\=" (backslash e equal sign) per shell che legano significato speciale al carattere "="):
root #
emerge --ask =www-client/firefox-96.0.1
Questo funzionerà solo temporaneamente, finché il sistema non verrà aggiornato. Durante un aggiornamento, Portage proverà a installare la versione stabile più recente del pacchetto, qualunque sia la versione installata correntemente; che sia stato utilizzato l'operatore = o meno.
Per prevenire che Portage aggiorni automaticamente un pacchetto, da aggiungersi è una linea di testo al file /etc/portage/package.mask/package.mask (creandolo se non esistente). Da specificare tramite l'operatore prefisso (>
) se il pacchetto è più vecchio della versione stabile, o più recente (<
):
<www-client/firefox-96.0.1
Vedere /etc/portage/package.mask per più dettagli.
Installare senza aggiungere al world file
Per installare un pacchetto senza aggiungerlo al world file:
root #
emerge --ask --oneshot www-client/firefox
Oppure, in breve:
root #
emerge -a1 www-client/firefox
Rimuovere pacchetti
Vedere la documentazione emerge per rimuovere pacchetti per informazioni complete.
--deselect
Usare emerge --deselect (oppure l'opzione -W
in breve) per rimuovere il pacchetto specificato dal @world set (e.g. il pacchetto non è più desiderato):
root #
emerge --deselect www-client/firefox
Ora eseguire emerge --depclean (oppure -c
in breve). L'opzione --pretend
(-p
) farà sì che emerge mostri le azioni che intraprenderebbe, permettendoci di verificare che nessun pacchetto sia rimosso inaspettatamente:
user $
emerge --pretend --depclean
Se emerge --depclean non è stato eseguito da tempo, questo potrebbe provare a rimuovere diversi pacchetti - procedere con cautela. Una volta assicuratosi che emerge --depclean non rimorrà pacchetti indesiderati, eseguire:
root #
emerge --ask --depclean
L'opzione --ask
non serve veramente dopo un check con --pretend
, tuttavia incluso nel precedente esempio per aiutare a evitare pasticci "copia incolla".
Da non confondere l'opzione in minuscolo
-c
abbreviazione di --depclean
(sicura), con l'opzione in maiuscolo -C
che rischia di danneggiare il sistema e dovrebbe essere utilizzata soltanto quando strettamente richiesto (vedere l'avviso alla sezione successiva).--depclean
Per rimuovere direttamente un pacchetto sul quale nessun altro vi dipende:
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]
Per misura di sicurezza, depclean non rimorrà alcun pacchetto almeno che tutte le dipendenze richieste non vengano risolte. Come conseguenza di ciò, a volte si rende necessario eseguire prima:
root #
emerge --ask --verbose --update --newuse --deep @world
Usare l'opzione --changed-use
(-U
) al posto di --newuse
(-N
) per evitare rebuilds quando gli unici cambiamenti sono alle USE flag aggiunte o eliminate dalla repository. Usare l'opzione --quiet
(-q
) per un'esecuzione più succinta:
root #
emerge --ask --quiet --update --changed-use --deep @world
C'è un'opzione
--unmerge
(-C
), ma non è consigliata e potrebbe rompere il sistema se non usata con cautela. Questa dovrebbe solamente essere usata se necessario, una volta informatosi di cosa esattamente faccia. Questa romperà il sistema o altri programmi, se usata su alcuni pacchetti. Il modo corretto di rimuovere pacchetti in Gentoo è virtualmente con l'opzione --depclean
, come descritto sopra. Potrebbe essere comunque utile per eliminare un blocco.Aggiornare pacchetti
Per aggiornare tutti i pacchetti del world set, le dipendenze (--deep
) e i pacchetti che hanno subito variazioni alle USE flag (evitando rebuilds non necessarie se le USE flag non hanno ricevuto impatto):
root #
emerge --ask --verbose --update --deep --changed-use @world
L'opzione --newuse
potrebbe essere utilizzata al posto di --changed-use
per assicurarsi che tutte le USE flag rispecchino lo stato corrente della Gentoo repository, causando però più rebuild. Il codice --with-bdeps=y
può essere utilizzato per aggiornare anche dipendenze a tempo di build.
Vedere Upgrading Gentoo per più informazioni in dettaglio.
Risolvere problemi di pacchetto
Per un controllo e rebuild di librerie mancanti (non dovuto normalmente):
root #
revdep-rebuild -v
equery è parte del pacchetto app-portage/gentoolkit. Installarlo tramite il comando:
root #
emerge -a gentoolkit
Per mostrare quale pacchetto fornisce un comando usando equery:
user $
equery b `which vim`
qfile può provvedere un'alternativa più veloce a equery, se necessario.
Per mostrare quale pacchetto (non installato) fornisce un comando usando e-file:
user $
e-file vim
Installare e-file con:
root #
emerge -a app-portage/pfl
Per mostrare quali pacchetti dipendono su uno specifico pacchetto (cat/pkg in esempio) usando equery:
user $
equery d www-client/firefox
Per acquisire informazioni riguardo a un pacchetto usando eix:
root #
eix www-client/firefox
Non eseguire unmerge sys-libs/glibc. È necessario per quasi tutti gli altri pacchetti. Se viene inavvertitamente rimosso, un drive esterno di salvataggio potrebbe essere richiesto. Potrebbe essere possibile ricavare glibc dopo avere impostato
PORTAGE_BINHOST="http://packages.gentooexperimental.org/packages/amd64-stable/"
dentro /etc/portage/make.conf.Ricostruzioni
A volte è necessario "ricostruire" alcuni pacchetti perché questi funzionino. Quì alcuni dei rebuild più comuni:
Dopo l'installazione di un nuovo kernel:
root #
emerge @module-rebuild
Dopo avere aggiornato a una nuova versione di Go:
root #
emerge @golang-rebuild
Per usare nuove librerie:
root #
emerge @preserved-rebuild
Migliorie a Portage
Per gestire cambiamenti alla configurazione dopo emerge:
root #
dispatch-conf
Post-installazioni o aggiornamenti
Dopo aver aggiornato pacchetti perl-core:
root #
perl-cleaner --all
Oppure, se il precedente non aiuta:
root #
perl-cleaner --reallyall -- -av
Per pacchetti haskell:
root #
haskell-updater
USE flags
Per ottenere descrizione e uso di una certa USE flag X
usando euse:
user $
euse -i X
Per acquisire informazioni riguardo euse usando le pagine di manuale:
user $
man euse
Per mostrare quali pacchetti hanno la USE flag mysql
:
user $
equery hasuse mysql
Per mostrare quali pacchetti sono correntemente costruiti con la USE flag mysql
:
user $
eix --installed-with-use mysql
Per mostrare quali USE flag sono disponibili per un certo pacchetto:
user $
equery uses <package-name>
Per aggiungere rapidamente una USE flag per un pacchetto installato:
root #
echo 'dev-util/cmake -qt5' >> /etc/portage/package.use
File Portage importanti
- /etc/portage - Cartella primaria di configurazione per Portage.
- /etc/portage/make.conf - Impostazioni globali (USE flags, opzioni compilatore).
- /etc/portage/package.use - USE flags di pacchetti individuali. Può anche essere una cartella contenente file multipli.
- /etc/portage/package.accept_keywords - Pacchetti a keyword individuali; e.g. ~amd64, ~x86, or ∼arm.
- /etc/portage/package.license - Licenze accettate
- /etc/portage/profile/use.mask - Per mascherare/smascherare USE flags bloccate.
- /var/lib/portage/world - Lista di atomi di pacchetti esplicitamente installati.
- /var/db/pkg - Contiene informazioni per ogni pacchetto installato, un set di files riguardo l'installazione.
Gestire i log
genlop
genlop è un processore di log di Portage, capace anche di stimare i tempi di build all'emerge di pacchetti.
Installare app-portage/genlop usando:
root #
emerge -a app-portage/genlop
Per acquisire informazioni riguardo genlop usando le pagine di manuale:
root #
man genlop
Per visionare gli ultimi 10 emerge (installazioni):
root #
genlop -l | tail -n 10
Per vedere quanto ha impiegato LibreOffice per fare emerge:
root #
genlop -t libreoffice
Per stimare quanto emerge -uND --with-bdeps=y @world impiegherebbe:
root #
emerge -pU @world | genlop --pretend
Per controllare la merge ebuild più recente durante un aggiornamento di sistema:
root #
watch genlop -unc
Overlays
eselect repository
app-eselect/eselect-repository può essere installato eseguendo:
root #
emerge -a app-eselect/eselect-repository
Per mostrare tutti gli overlay esistenti:
user $
eselect repository list
Per elencare tutti gli overlay installati:
user $
eselect repository list -i
Vedere Eselect/Repository per più informazioni.
Servizi
Per ottenere la shell di amministratore (a patto l'utente corrente sia nella lista dei sudoers):
user $
sudo -i
OpenRC
Per eseguire il daemon ssh a livello di esecuzione di default all'avvio di sistema:
root #
rc-update add sshd default
Per avviare il servizio sshd ora:
root #
rc-service sshd start
Per controllare se il servizio sshd è in esecuzione:
root #
rc-service sshd status
Per riavviare il servizio sshd:
root #
rc-service sshd restart
Per fermare il servizio sshd:
root #
rc-service sshd stop
Per elencare i servizi, il loro stato e i livelli di esecuzione a cui appartengono:
root #
rc-status --all
Per mostrare i servizi abilitati e i livelli di esecuzione a cui appartengono (non se sono in esecuzione, solo se abilitati):
root #
rc-update show
systemd
Per avviare il daemon ssh all'avvio:
root #
systemctl enable sshd
Per avviare il servizio sshd ora:
root #
systemctl start sshd
Per controllare se il servizio sshd è in esecuzione:
root #
systemctl status sshd
Consigli
Generare cache di metadati
Repository ebuild variano da molto piccole a molto larghe in grandezza. Come risultato di ciò, questi rallentano le operazioni di Portage. Questo succede perché gli overlay non contengono cache di metadati. La cache viene utilizzata per velocizzare ricerche e la costruzione di alberi di dipendenza. Un trabocchetto è quello di generare metadati locali di cache dopo aver sincronizzato gli overlay.
root #
emerge --regen
Questo funziona anche in congiunzione con eix. eix-update può usare metadati generati da emerge --regen per velocizzare le cose. Per abilitarlo, da aggiungere è la seguente variabile a /etc/eixrc/00-eixrc:
OVERLAY_CACHE_METHOD="assign"
Cercare pacchetti in Portage usando espressioni regolari
Per cercare pacchetti in Portage con espressioni regolari:
root #
emerge -s "%^python$"
or
root #
emerge --search "%^python$"
qcheck
Per verificare i pacchetti installati usando qcheck:
root #
qcheck vim-core
qcheck è contenuto in app-portage/portage-utils e può essere installato eseguendo il comando:
root #
emerge -a app-portage/portage-utils
Per conoscere meglio qcheck leggendo le pagine di manuale:
user $
man qcheck