Handbuch:IA64/Arbeiten/Features
Portage-Merkmale
Portage hat einige zusätzliche Funktionen, die das Gentoo-Erlebnis noch besser machen. Viele dieser Funktionen basieren auf bestimmten Software-Tools, die die Leistung, Zuverlässigkeit, Sicherheit, ... verbessern
Um bestimmte Portage-Funktionen zu aktivieren oder zu deaktivieren, editieren Sie /etc/portage/make.conf und aktualisieren oder setzen Sie die FEATURES-Variable, die die verschiedenen Funktionsschlüsselwörter, getrennt durch Leerzeichen, enthält. In einigen Fällen wird es auch notwendig sein, das zusätzliche Werkzeug zu installieren, auf dem die Funktion beruht.
Nicht alle Funktionen, die Portage unterstützt, sind hier aufgeführt. Für einen vollständigen Überblick konsultieren Sie bitte die make.conf Manpage:
user $
man make.conf
Um herauszufinden, welche FEATURES standardmäßig gesetzt sind, führen Sie emerge --info aus und suchen Sie nach der Variable FEATURES oder grepen Sie sie heraus:
user $
emerge --info | grep ^FEATURES=
Verteilte Kompilierung
Verwendung von distcc
distcc ist ein Programm zur Verteilung von Kompilierungen auf mehrere, nicht notwendigerweise identische, Rechner in einen Netzwerk. Der distcc-Client sendet alle notwendigen Informationen an die verfügbaren distcc-Server (auf denen distccd läuft), damit diese Teile des Quellcodes für den Client kompilieren können. Das Nettoergebnis ist eine schnellere Kompilierungszeit.
Mehr Informationen über distcc (und wie man es mit Gentoo zum Laufen bringt) finden Sie im Distcc-Artikel.
Installation von distcc
Distcc wird mit einem grafischen Monitor ausgeliefert, um Aufgaben zu überwachen, die der Computer zur Kompilierung wegschickt. Dieses Tool wird automatisch installiert, wenn gtk eingestellt ist.
root #
emerge --ask sys-devel/distcc
Aktivieren der Portage distcc Unterstützung
Fügen Sie distcc
zur FEATURES-Variable in /etc/portage/make.conf hinzu. Als nächstes bearbeiten Sie die Variable MAKEOPTS und erhöhen die Anzahl der parallelen Build-Jobs, die das System erlaubt. Eine bekannte Richtlinie ist es, -jN
einzugeben, wobei N
die Anzahl der CPUs ist, auf denen distccd läuft (einschließlich des aktuellen Hosts) plus eins, aber das ist nur eine Richtlinie.
Führen Sie nun distcc-config aus und geben Sie die Liste der verfügbaren distcc-Server ein. Für ein einfaches Beispiel nehmen wir an, dass die verfügbaren distcc-Server 192.168.1.102 (der aktuelle Host), 192.168.1.03 und 192.168.1.104 (zwei "entfernte" Hosts) sind:
root #
distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
Vergessen Sie nicht, auch den Daemon distccd zu starten:
root #
rc-update add distccd default
root #
/etc/init.d/distccd start
Zwischenspeicherung von Kompilierungsobjekten
Über ccache
ccache ist eine schneller Compiler-Cache. Immer wenn eine Anwendung kompiliert wird, werden Zwischenergebnisse zwischengespeichert, so dass die Kompilierungszeit bei jeder Neukompilierung desselben Programms und derselben Version stark reduziert wird. Das erste Mal, wenn ccache ausgeführt wird, ist es viel langsamer als eine normale Kompilierung. Nachfolgende Neukompilierungen sollten jedoch schneller sein. ccache ist nur hilfreich, wenn dieselbe Anwendungsversion viele Male neukompiliert wird; daher ist es meist nur für Softwareentwickler nützlich.
Für weitere Informationen über ccache besuchen Sie bitte die Homepage.
ccache ist dafür bekannt, dass es zahlreiche Kompilierungsfehler verursacht. Manchmal behält ccache veraltete Codeobjekte oder beschädigte Dateien zurück, was dazu führen kann, dass Pakete nicht emerged werden können. Wenn dies passiert (Fehler wie "File not recognized: File truncated" erscheinen in den Build-Logs), versuchen Sie, die Anwendung mit deaktivierter ccache neu zu kompilieren (
FEATURES="-ccache"
in /etc/portage/make.conf oder einmalig von der Befehlszeile mit dem folgenden Befehl), bevor Sie einen Fehler melden:
root #
FEATURES="-ccache" emerge --oneshot <kategorie/paket>
ccache Installieren
Um ccache zu installieren, führen Sie den folgenden Befehl aus:
root #
emerge --ask dev-util/ccache
Aktivieren der Portage ccache Unterstützung
Öffnen Sie /etc/portage/make.conf und fügen Sie ccache
zu allen Werten hinzu, die in der Variable FEATURES definiert sind. Wenn FEATURES nicht vorhanden ist, erstellen Sie sie. Als nächstes fügen Sie eine neue Variable namens CCACHE_SIZE hinzu und setzen sie auf 2G
:
/etc/portage/make.conf
Aktivieren der Portage ccache UnterstützungFEATURES="ccache"
CCACHE_SIZE="2G"
Um zu überprüfen, ob ccache funktioniert, fordern Sie ccache auf, seine Statistiken bereitzustellen. Da Portage ein anderes ccache-Home-Verzeichnis verwendet, ist es notwendig, die Variable CCACHE_DIR vorübergehend zu setzen:
root #
CCACHE_DIR="/var/tmp/ccache" ccache -s
Der Speicherort /var/tmp/portage ist das Standard-ccache-Home-Verzeichnis von Portage; es kann durch Setzen der Variable CCACHE_DIR in /etc/portage/make.conf geändert werden.
Wenn ccache eigenständig läuft, würde es den Standardspeicherort ${HOME}/.ccache/ verwenden, weshalb die CCACHE_DIR Variable gesetzt werden muss, wenn die (Portage) ccache Statistiken abgefragt werden.
Verwendung von ccache außerhalb von Portage
Um ccache für Nicht-Portage-Kompilierungen zu verwenden, fügen Sie /usr/lib/ccache/bin an den Anfang der PATH-Variable (vor /usr/bin). Dies kann durch Bearbeiten von ~/.bash_profile im Home-Verzeichnis des Benutzers erreicht werden. Die Verwendung von ~/.bash_profile ist eine Möglichkeit, PATH-Variablen zu definieren.
~/.bash_profile
Setzen des ccache-Speicherorts vor jedem anderen PATHPATH="/usr/lib/ccache/bin:${PATH}"
Unterstützung von Binärpaketen
Vorgefertigte Pakete erstellen
Portage unterstützt die Installation von vorgefertigten Paketen. Auch wenn Gentoo selbst keine vorgefertigten Pakete anbietet, kann Portage vollständig auf vorgefertigte Pakete aufmerksam gemacht werden.
Um ein vorgefertigtes Paket zu erstellen, verwenden Sie den Befehl quickpkg, wenn das Paket bereits auf dem System installiert ist, oder emergen Sie mit den Optionen --buildpkg
oder --buildpkgonly
.
Um Portage zu veranlassen, vorgefertigte Pakete von jedem einzelnen Paket, das installiert wird, zu erstellen, fügen Sie buildpkg
zur FEATURES-Variable hinzu.
Eine erweiterte Unterstützung für die Erstellung von vorgefertigten Paketsätzen kann mit Catalyst erhalten werden. Für weitere Informationen zu Catalyst lesen Sie bitte die Catalyst FAQ.
Installation von vorgefertigten Paketen
Obwohl Gentoo kein zentrales Repositorium anbietet, ist es jedoch möglich, ein zentrales Repositorium zu erstellen, in dem vorgefertigte Pakete gespeichert werden. Um dieses Repositorium zu verwenden, ist es notwendig, Portage darauf aufmerksam zu machen, indem die PORTAGE_BINHOST-Variable auf dieses verweist. Zum Beispiel, wenn die vorgefertigten Pakete auf ftp://buildhost/gentoo liegen:
/etc/portage/make.conf
PORTAGE_BINHOST Standard hinzufügenPORTAGE_BINHOST="ftp://buildhost/gentoo"
Um ein vorgefertigtes Paket zu installieren fügen Sie dem emerge-Befehl die Option --getbinpkg
neben der Option --usepkg
hinzu. Erstere weist emerge an, das vorgefertigte Paket von dem zuvor definierten Server herunterzuladen, während letztere emerge auffordert, zuerst zu versuchen, das vorgefertigte Paket zu installieren, bevor es die Quellen abruft und kompiliert.
Zum Beispiel, um gnumeric mit vorgefertigten Paketen zu installieren:
root #
emerge --usepkg --getbinpkg gnumeric
Weitere Informationen über die vorgefertigten Paketoptionen von emerge finden Sie in der emerge Manpage:
user $
man emerge
Weitergabe von vorgefertigten Paketen an andere
Wenn vorgefertigte Pakete an andere weitergegeben werden sollen, stellen Sie sicher, dass dies erlaubt ist. Prüfen Sie dazu die Distributionsbedingungen des Upstream-Pakets. Für ein Paket, das unter der GNU GPL veröffentlicht wurde, müssen beispielsweise die Quellen zusammen mit den Binärdateien zur Verfügung gestellt werden.
Ebuilds können eine bindist
-Beschränkung in ihrer RESTRICT-Variable definieren, wenn erstellte Binärdateien nicht verteilbar sind. Manchmal ist diese Einschränkung von einem oder mehreren USE-Flags abhängig.
Standardmäßig wird Portage keine Pakete aufgrund von Einschränkungen masken. Dies kann global durch Setzen der ACCEPT_RESTRICT-Variable geändert werden. Um zum Beispiel Pakete zu masken, die eine bindist
-Beschränkung haben, fügen Sie die folgende Zeile in make.conf ein:
/etc/portage/make.conf
Nur binär verteilbare Pakete akzeptierenACCEPT_RESTRICT="* -bindist"
Es ist auch möglich die ACCEPT_RESTRICT-Variable außer Kraft zu setzen, indem Sie die Option --accept-restrict
an den Befehl emerge übergeben. Zum Beispiel wird --accept-restrict=bindist
Pakete mit einer bindist-Beschränkung vorübergehend masken.
Denken Sie auch daran, die Variable ACCEPT_LICENSE zu setzen, wenn Sie Pakete verteilen. Siehe dazu den Lizenzabschnitt.
Es liegt in der Verantwortung jedes Benutzers, die Lizenzbedingungen der Pakete und die Gesetze des jeweiligen Landes einzuhalten. Die von Ebuilds definierten Metavariablen (RESTRICT oder LICENSE) können Hinweise geben, wenn die Verbreitung von Binärdateien nicht erlaubt ist, jedoch sind Ausgaben von Portage oder Fragen, die von Gentoo Entwicklern beantwortet werden, "keine" rechtlichen Aussagen und sollten nicht als solche betrachtet werden. Seien Sie vorsichtig und halten Sie sich an die Gesetze Ihres Standorts.
Abrufen von Dateien
Userfetch
Portage wird normalerweise als root-Benutzer ausgeführt. Die Einstellung FEATURES="userfetch"
erlaubt es Portage, die Root-Rechte aufzugeben, während es die Paketquellen holt und mit den Benutzer-/Gruppenrechten von portage:portage zu laufen. Dies ist eine kleine Sicherheitsverbesserung.
Wenn userfetch
in FEATURES gesetzt ist, stellen Sie sicher, dass Sie den Besitzer aller Dateien unterhalb von /var/db/repos/gentoo mit dem Befehl chown mit root-Rechten ändern:
root #
chown --recursive --verbose portage:portage /var/db/repos/gentoo
Distfiles überprüfen
Um die Integrität zu überprüfen und (möglicherweise) zuvor entfernte/beschädigte Distfiles für alle derzeit installierten Pakete erneut herunterzuladen, führen Sie aus:
root #
emerge --ask --fetchonly --emptytree @world