Gentoo Spickzettel

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Gentoo Cheat Sheet and the translation is 34% complete.

Dies ist eine Referenzkarte mit nützlichen Befehlen und Tipps für das Verwalten von Gentoo Systemen. Neue und alte Benutzer sind eingeladen ihre hilfreichen Tipps hier hinzuzufügen.

Siehe auch
Siehe auch das FAQ und das Portage FAQ.

Paketverwaltung

Synchronisier Methoden

Wichtig
Nach einer Repository Synchronisierung ist es wichtig auf die News Items zu achten und sie zu lesen. Siehe detailreiche Anleitung über Upgrades.

Portage

Synchronisiere alle Repositories die auf auto-sync eingestellt sind inklusive dem Gentoo ebuild Repository:

root #emaint --auto sync

Oder kurz:

root #emaint -a sync

Synchronisiere das Gentoo ebuild Repository mithilfe den Mirrors durch das erhalten eines Schnappschuss welches (höchstens) einen Tag alt ist:

root #emerge-webrsync

emerge --sync führt nun auch das emaint sync Modul mit der --auto Option aus. Siehe Portage's sync Operation.

eix

Synchronisiere Eingestellte Paket Repositories und das Gentoo Ebuild Repository mittels eix:

root #eix-sync

Dies Synchronisiert nicht nur die Repositories sondern aktualisiert auch den Cache den eix verwendet um Anfragen zu bearbeiten. Das wird möglicherweise über der anderen Möglichkeit, Portage einstellen den Cache automatisch zu aktualisieren, bevorzugt.

Pakete Auflisten

qlist

Liste installierte Pakete mit Version-Nummer und benutztem Overlay auf:

root #qlist -IRv

qlist wird bereitgestellt von app-portage/portage-utils.

eix

Um die Liste von Paketen in dem world Set und deren verfügbaren Versionen zu sehe, ist es möglich eix zu verwenden:

root #eix --world | less

Um die Ausgabe in Farbe zu sehen, benutze die --color Option:

root #eix --color -c --world | less -R

Portage

Verweisend auf Package sets, die manuell installierte Pakete können angezeigt werden mittels:

user $emerge --pretend --quiet --emptytree --nodeps @selected

Liste alle (*), oder spezifisch genannte, Pakete mit mehreren Slots auf:

user $equery list --duplicates '*'

Paket Installation

Im folgenden Beispiel wird das www-client/firefox Paket verwendet, Benutzer sollten es mit dem Paket austauschen welches installiert werden soll.

Liste welche Pakete installiert werden sollen auf, ohne sie zu installieren:

user $emerge --pretend --verbose www-client/firefox

Oder kurz:

user $emerge -pv www-client/firefox

Liste welche Pakete installiert werden sollen auf und Frage nach Bestätigung vor dem installieren:

root #emerge --ask --verbose www-client/firefox

Oder kurz:

root #emerge -av www-client/firefox

Installiere eine spezifische Version

Installieren eine spezifische Version eines Pakets (benutze "\=" (Backslash und ist-gleich Zeichen) für Shells die "=" speziell interpretieren). Zum Beispiel:

root #emerge --ask =www-client/firefox-96.0.1
Warnung
Dies funktioniert temporär bis das System aktualisiert. Während einer Aktualisierung probiert Portage die neueste stabile Version des Pakets zu installieren Egal welche Version derzeit installiert ist oder das Paket ursprünglich mit dem = Operator installiert wurde oder nicht.

Um Portage davon abzuhalten automatisch ein Paket zu aktualiseren, füge eine Zeile zu der /etc/portage/package.mask/package.mask Datei hinzu (Erstelle diese Datei falls sie noch nicht existiert). Spezifiziere den Größer-als Operator (>) Präfix wenn es ein älteres Paket als das neueste stabile ist oder ein Kleiner-als Operator (<) als Präfix wenn es ein neueres ist:

DATEI /etc/portage/package.mask
<www-client/firefox-96.0.1

Siehe /etc/portage/package.mask Für mehr Details über Paket Maskierung.

Installieren ohne dem hinzufügen zur world Datei

Installiere ein Paket ohne es zu der world Datei hinzuzufügen:

root #emerge --ask --oneshot www-client/firefox

Oder kurz:

root #emerge -a1 www-client/firefox

Paket Entfernung

Siehe auch
Siehe die emerge Dokumentation beiremoving packages für mehr Informationen.

--deselect

Benutze emerge --deselect (oder kürzere -W Option) um eine spezifisches Paket von dem @world Set zu entfernen (d.h. es deutet, dass diese Paket nicht mehr gewollt ist):

root #emerge --deselect www-client/firefox

Jetzt führe emerge --depclean (oder kürzere -c Option) aus. Die --pretend (-p) Option bringt emerge dazu anzuzeigen welche Aktionen vorgenommen werden würden, diese Liste muss überprüft werden um sicherzugehen, dass keine benötigten Pakete entfernt werden.

user $emerge --pretend --depclean

Falls emerge --depclean für eine Weile nicht ausgeführt wurde, versucht es möglicherweise viele Pakete zu entfernen - Vorsicht ist empfohlen. Sobald sichergegangen ist das emerge --depclean nur nicht-benötigte Pakete entfernt, führe aus:

root #emerge --ask --depclean

Die --ask Option ist nicht wirklich benötigt nach einer Überprüfung mittels --pretend, aber ist in diesem Beispiel verwendet um ein "Kopieren/Einfügen" Missgeschick zu vermeiden.

Tipp
Verwechsle nicht die Kleinbuchstabe -c Option, welche kurz für --depclean (und sicher) ist, mit der Großbuchstaben -C Option welche Schaden am System riskiert und nur verwendet werden sollte wenn absolut nötig.

--depclean

To directly remove a package that no other packages depend on:

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]

As a safety measure, depclean will not remove any packages unless all required dependencies have been resolved. As a consequence of this, it is sometimes necessary to first run:

root #emerge --ask --verbose --update --newuse --deep @world

Use --changed-use (-U) in place of --newuse (-N) to avoid rebuilds when the only changes are USE flags added to or dropped from the repository. Use the --quiet (-q) flag for more succinct execution:

root #emerge --ask --quiet --update --changed-use --deep @world
Warnung
There is an --unmerge option (-C), but this is not recommended and can break the system if not used with caution. This should only ever be used if necessary, and once properly informed of what it does. This will break the system, or other software, if used on some packages. The correct way to remove packages in Gentoo is virtually always with the --depclean option, as described above. This may sometimes be useful to temporarily remove a hard block though.

Package upgrades

Upgrade all packages in the world set, their dependencies (--deep), and packages that have USE flag changes (avoiding unnecessary rebuilds when USE changes have no impact):

root #emerge --ask --verbose --update --deep --changed-use @world

The --newuse may be used in place of--changed-use to make sure that all package use flags reflect the current state of those in the Gentoo repository, though this will entail more rebuilds. The --with-bdeps=y can be used to update build time dependencies also.

Siehe auch
See upgrading Gentoo for more in depth information.

Package troubleshooting

Check for and rebuild missing libraries (not normally needed):

root #revdep-rebuild -v

equery is part of app-portage/gentoolkit. Install it by issuing this command:

root #emerge -a gentoolkit

Tell which installed package provides a command using equery:

user $equery b `which vim`
Tipp
qfile can provide a faster alternative to equery, if needed.

Tell which (not) installed package provides a command using e-file:

user $e-file vim

Install e-file with:

root #emerge -a app-portage/pfl

Tell which packages depend on a specific package (cat/pkg in the example) using equery:

user $equery d www-client/firefox

Get information about a package using eix:

root #eix www-client/firefox
Warnung
Do not unemerge sys-libs/glibc. It is needed by nearly every other package. If it gets inadvertently removed, a rescue stick/disk may be required. It may be possible to fetch glibc after setting PORTAGE_BINHOST="http://packages.gentooexperimental.org/packages/amd64-stable/" in /etc/portage/make.conf.

Rebuilds

Sometimes it's necessary to rebuild some packages for them to work properly. Here are some of the common rebuilds:

After installing a new kernel:

root #emerge @module-rebuild

After upgrading to a new version of Go:

root #emerge @golang-rebuild
root #emerge @preserved-rebuild

Portage enhancements

Manage configuration changes after an emerge completes:

root #dispatch-conf

After installations or updates

After updating perl-core packages:

root #perl-cleaner --all

Or if previous didn't help:

root #perl-cleaner --reallyall -- -av

For haskell packages:

root #haskell-updater

USE flags

Obtain descriptions and usage of the USE flag X using euse:

user $euse -i X

Gather more information on euse by reading its manual page:

user $man euse

Show what packages have the mysql USE flag:

user $equery hasuse mysql

Show what packages are currently built with the mysql USE flag:

user $eix --installed-with-use mysql

Show what USE flags are available for a specific package:

user $equery uses <package-name>

Quickly add a required USE flag for a package install:

root #echo 'dev-util/cmake -qt5' >> /etc/portage/package.use

Important Portage files

Log management

genlop

genlop is a Portage log processor, also estimating build times when emerging packages.

Install app-portage/genlop by issuing:

root #emerge -a app-portage/genlop

Gather more information on genlop by reading its manual page:

root #man genlop

View the last 10 emerges (installs):

root #genlop -l | tail -n 10

View how long emerging LibreOffice took:

root #genlop -t libreoffice

Estimate how long emerge -uND --with-bdeps=y @world will take:

root #emerge -pU @world | genlop --pretend

Watch the latest merging ebuild during system upgrades:

root #watch genlop -unc

Overlays

eselect repository

app-eselect/eselect-repository can be installed by issuing:

root #emerge -a app-eselect/eselect-repository

List all existing overlays:

user $eselect repository list

List all installed overlays:

user $eselect repository list -i
Siehe auch
See Eselect/Repository for more information.

Services

Obtain root shell (if the current user is listed in the sudoers list):

user $sudo -i

OpenRC

Start the ssh daemon in the default runlevel at boot:

root #rc-update add sshd default

Start the sshd service now:

root #rc-service sshd start

Check if the sshd service is running:

root #rc-service sshd status

Restart the sshd service:

root #rc-service sshd restart

Stop the sshd service:

root #rc-service sshd stop

List services, their status, and the runlevels they belong to:

root #rc-status --all

Show enabled services and the runlevels they belong to (not whether they are running or not, just if they are enabled):

root #rc-update show

systemd

Start the ssh daemon at boot:

root #systemctl enable sshd

Start the sshd service now:

root #systemctl start sshd

Check if the sshd service is running:

root #systemctl status sshd

Tips

Generate metadata caches

Ebuild repositories vary from very small to very large in size. As a result they slow down the majority of Portage operations. That happens because overlays do not contain metadata caches. The cache is used to speed up searches and the building of dependency trees. A neat trick is to generate local metadata cache after syncing overlays.

root #emerge --regen

This trick also works in conjunction with eix. eix-update can use metadata cache generated by emerge --regen to speed up things. To enable this, add the following variable to /etc/eixrc/00-eixrc:

DATEI /etc/eixrc/00-eixrc
OVERLAY_CACHE_METHOD="assign"

Search packages in Portage by regular expressions

To search packages in Portage, along with installed version, by regular expressions:

root #emerge -s "%^python$"

or

root #emerge --search "%^python$"

qcheck

Use qcheck to verify installed packages:

root #qcheck vim-core

qcheck comes with app-portage/portage-utils and can be installed by running this command:

root #emerge -a app-portage/portage-utils

Learn more about qcheck by reading its manual page:

user $man qcheck

See also

External resources