Gentoo Logo

[ << ] [ < ] [ Hauptseite ] [ > ] [ >> ]


3. Features von Portage

Inhalt:

3.a. Portage Features

Portage hat einige zusätzliche Features, die das Gentoo Erlebnis noch ein wenig besser machen. Viele dieser Features beruhen auf Software Tools um die Performance, Funktionssicherheit, Sicherheit, etc. zu verbessern.

Um diese Portage Features zu aktivieren oder deaktivieren müssen Sie die FEATURES Variable in /etc/portage/make.conf anpassen. Diese Variable enthält verschiedene Feature Keywords, welche durch Leerzeichen getrennt werden.In vielen Fällen müssen Sie ebenfalls zusätzliche Software installieren.

Nicht alle Features, die Portage anbietet werden hier aufgelistet. Für einen vollständigen Überblick schauen Sie in die make.conf Manpage:

Befehlsauflistung 1.1: Lesen der make.conf Manpage

$ man make.conf

Um herauszufinden, welche FEATURES per default aktiviert sind führen Sie emerge --info aus und suchen Sie nach der FEATURES Variable, oder filtern diese aus:

Befehlsauflistung 1.2: Herausfinden welche FEATURES bereits aktiv sind

$ emerge --info | grep FEATURES

3.b. Distributed Compiling

Benutzung von distcc

distcc ist ein Programm das "Kompilierungen" über mehrere, nicht notwendigerweise identische Computer, über ein Netzwerk verteilt. Der distcc - Client sendet alle notwendigen Informationen zu den erreichbaren distcc - Servern (die den distccd laufen haben), so dass diese Teile des Quellcodes vom Client kompilieren können. Als Resultat wird Zeit beim Kompilieren eingespart.

Sie finden tiefer gehende Informationen über distcc (und wie Sie es bei Gentoo zum Laufen bringen) in unserer Gentoo distcc Dokumentation.

distcc installieren

Distcc bringt einen grafischen Monitor mit, der Sie über alle Aufgaben informiert, die der Computer zum Kompilieren wegsendet. Falls Sie Gnome benutzen, setzen Sie 'gnome' in Ihrer USE-Variable. Wenn Sie nicht Gnome nutzen, den Monitor aber trotzdem haben wollen, sollten Sie 'gtk' in Ihrer USE-Variable setzen.

Befehlsauflistung 2.1: distcc installieren

# emerge distcc

Unterstützung für Portage aktivieren

Fügen Sie distcc der FEATURES Variable in /etc/portage/make.conf hinzu. Anschließen editieren Sie die MAKEOPTS Variable entsprechend Ihren Wünschen. In den meisten Fällen ist es hinreichend "-jX" anzugeben, wobei X der Nummer der CPUs die den distccd ausführen entsprechen (inklusive dem aktuellen Host) plus eins, möglicherweise haben Sie mit anderen Werten bessere Ergebnisse.

Nun rufen Sie distcc-config auf und tragen eine Liste der verfügbaren Server ein. Als einfaches Beispiel nehmen wir einmal an, dass die verfügbaren distcc Server 192.168.1.102 (der momentane Host), 192.168.1.103 und 192.168.1.104 (zwei "entfernte" Hosts) sind:

Befehlsauflistung 2.2: distcc für die Nutzung dreier verfügbarer distcc Server konfigurieren

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Vergessen Sie bitte nicht, auch den distccd - Dämonen zu starten:

Befehlsauflistung 2.3: distcc Dämonen starten

# rc-update add distccd default
# /etc/init.d/distccd start

3.c. Caching Compilation

Über ccache

ccache ist ein schneller Compiler - Cache. Wenn Sie ein Programm kompilieren, werden Zwischenresultate gecacht, so dass bei einer Rekompilierung des Programms die Zeit zum Kompilieren viel kürzer ist. Wenn Sie ccache zum ersten Mal verwenden, wird es viel langsamer sein als eine normale Kompilierung. Darauffolgende Rekompilierungen sollten schneller sein. ccache ist nur hilfreich, wenn Sie die gleiche Applikation sehr oft rekompilieren müssen; es ist daher hauptsächlich nur für Softwareentwickler nützlich.

Falls Sie an den Vor- und Nachteilen von ccache interessiert sind, besuchen Sie bitte die ccache Homepage.

Warnung: ccache ist bekannt dafür, zahlreiche Kompilierungsfehler zu verursachen. Ab und zu behält ccache veraltete Codeobjekte oder korrupte Dateien bei, was dazu führt, dass Pakete sich nicht emergen lassen. Falls das passiert (wenn Sie Fehler wie z.B. "File not recognized: File truncated" erhalten), versuchen Sie die Applikation mit deaktiviertem ccache (FEATURES="-ccache" in der /etc/portage/make.conf) zu rekompilieren bevor Sie einen Bug eröffnen. Falls Sie keine Softwareentwicklung betreiben, aktivieren Sie ccache nicht.

ccache installieren

Zur Installation von ccache führen Sie emerge ccache aus:

Befehlsauflistung 3.1: ccache installieren

# emerge ccache

Unterstützung für Portage aktivieren

Öffnen Sie /etc/portage/make.conf und fügen Sie ccache zu FEATURES hinzu. Anschließend erstellen Sie eine neue Variable namens CCACHE_SIZE und setzen diese auf "2G":

Befehlsauflistung 3.2: CCACHE_SIZE in /etc/portage/make.conf editieren

CCACHE_SIZE="2G"

Um zu schauen ob ccache funktioniert, fragen Sie ccache nach seinen Statistiken. Weil Portage ein anderes Home-Verzeichnis verwendet, müssen Sie auch die CCACHE_DIR Variable setzen:

Befehlsauflistung 3.3: Ccache - Statistiken anschauen

# CCACHE_DIR="/var/tmp/ccache" ccache -s

Der /var/tmp/ccache Pfad ist das Standard ccache Home-Verzeichnis von Portage. Wenn Sie diese Einstellungen ändern möchten, können Sie die CCACHE_DIR Variable in /etc/portage/make.conf setzen.

Wenn Sie aber ccache ausführen würden, würde es den Standardpfad ${HOME}/.ccache verwenden. Deswegen mussten Sie auch die CCACHE_DIR Variable setzen, als Sie nach den (Portage) ccache-Statistiken fragten.

Nutzung von ccache außerhalb von Portage

Wenn Sie ccache für Kompilierungen außerhalb von Portage nutzen möchten fügen Sie /usr/lib/ccache/bin dem Beginn der PATH Variable hinzu (vor /usr/bin). Dies kann durch Editieren von .bash_profile in Ihrem Home-Verzeichnis erreicht werden. Die Verwendung von .bash_profile ist eine Möglichkeit Ihre PATH-Variable zu definieren.

Befehlsauflistung 3.4: Editieren von .bash_profile

PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"

3.d. Binäre Pakete

Binärpakete erstellen

Portage unterstützt die Installation von vorkompilierten Paketen. Obwohl Gentoo keine vorkompilierten Pakete anbietet (mit Ausnahme der GRP Schnappschüsse) ist die Funktion vollständig implementiert.

Um ein vorkompiliertes Paket zu erstellen können Sie quickpg benutzen, sofern das Programm bereits in Ihrem System installiert ist oder Sie benutzen die --buildpkg oder --buildpkgonly Optionen.

Falls Sie wollen, dass Portage dies standardmäßig macht, sollten Sie das Schlüsselword buildpkg in der FEATURES Variablen setzen.

Erweiterte Unterstützung zum Erstellen von vorkompilierten Paketen finden Sie in catalyst. Für weitere Informationen zu catalyst lesen Sie bitte die Catalyst FAQ.

Vorkompilierte Pakete Installieren

Auch wenn Gentoo keine anbietet, Sie können ein zentrales Repository anlegen, in dem Sie vorkompilierte Pakete ablegen. Wenn Sie dieses Repository nutzen möchten müssen Sie Portage mit der PORTAGE_BINHOST Variable den Ort des Repository bekannt machen. Wenn sich die Pakete zum Beispiel auf ftp://buildhost/gentoo befinden:

Befehlsauflistung 4.1: Setzen der PORTAGE_BINHOST Variable in /etc/portage/make.conf

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Wenn Sie vorkompilierte Pakete installieren wollen fügen Sie --getbinpkg Option an das entsprechende emerge Kommando (welches ebenfalls --usepkg enthalten muss) an. Die erste Option weist Portage an ein Binärpaket herunterzuladen, die zweite zuerst zu versuchen ein Binärpaket zu installieren, bevor Sourcen heruntergeladen und kompiliert werden.

Um zum Beispiel gnumeric mit vorkompilierten Paketen zu installieren:

Befehlsauflistung 4.2: Installation des vorkompilierten gnumeric Pakets

# emerge --usepkg --getbinpkg gnumeric

Weitere Informationen zur Binärpaket Funktionalität von emerge finden Sie in der emerge Manpage:

Befehlsauflistung 4.3: Lesen der emerge Manpage

$ man emerge

3.e. Dateien abrufen

Paralleler Abruf

Wenn Sie eine Serie von Paketen mit emerge isntallieren kann Portage die Quelldateien für das nächste Paket in der Liste schon herunterladen, während es noch ein anderes Paket kompiliert, und dadurch die Kompilierzeit reduzieren. Um von dieser Fähigkeit Gebrauch zu machen, fügen Sie "parallel-fetch" zu Ihren FEATURES hinzu. Beachten Sie, dass diese mittlerweile standardmäßig aktiv ist und Sie sie nicht ausdrücklich aktivieren müssen.

Userfetch

Wenn Portage als root ausgeführt wird, erlaubt FEATURES="userfetch" Portage das Senken der root-Privilegien während es Paketquellen abruft. Dies verbessert die Sicherheit ein wenig.

3.f. Beziehen von validierten Portage-Tree-Snapshots

Als Administrator können Sie sich dafür entscheiden, Ihren lokalen Portage-Tree nur mit einem vom Gentoo Infrastruktur-Team veröffentlichten, kryptographisch validierten Snapshot des Portage-Trees zu aktualisieren. Das stellt sicher, dass kein böswilliger rsync-Mirror ungewollten Code oder ungewollte Pakete zu dem Tree hinzufügt, den Sie herunterladen.

Um Portage zu konfigurieren, erstellen Sie zunächst einen Trust-Store, in den Sie die Schlüssel der Gentoo-Infrastruktur, die für das Signieren des Portage-Trees verantwortlich sind, herunterladen und akzeptieren. Wenn Sie möchten, können Sie diesen GPG-Schlüssel mit den entsprechenden Richtlinien validieren (z.B. durch Überprüfen des Schlüssel-Fingerabdrucks). Sie finden die Liste der vom Release-Engineering-Team verwendetn GPG-Schlüssel auf ihrer Projektseite.

Befehlsauflistung 6.1: Erstellen eines Trust-Stores für Portage

# mkdir -p /etc/portage/gpg
# chmod 0700 /etc/portage/gpg
(... Ersetzen Sie die Schlüssel mit denen von der Release-Engineering-Seite ...)
# gpg --homedir /etc/portage/gpg --keyserver subkeys.pgp.net --recv-keys 0x239C75C4 0x96D8BF6D
# gpg --homedir /etc/portage/gpg --edit-key 0x239C75C4 trust
# gpg --homedir /etc/portage/gpg --edit-key 0x96D8BF6D trust

Bearbeiten Sie nun /etc/portage/make.conf und aktivieren Sie die Unterstützung für das Validieren der signierten Snapshots des Portage-Trees (durch Verwendung von FEATURES="webrsync-gpg") und schalten Sie das Aktualisieren des Portage-Trees mit der regulären emerge --sync Methode ab.

Befehlsauflistung 6.2: Aktualisieren von Portage für Validierung signierter Trees

FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/etc/portage/gpg"
SYNC=""

Das wär's. Das nächste Mal, wenn Sie emerge-webrsync verwenden, werden nur die Snapshots mit einer gültigen Signatur auf Ihrem Dateisystem extrahiert.


[ << ] [ < ] [ Hauptseite ] [ > ] [ >> ]


Drucken

Alles ansehen

Seite aktualisiert 9. Februar 2013

Die Originalversion dieses Dokuments wurde zuletzt am 12. April 2014 aktualisiert

Zusammenfassung: Entdecken Sie die Funktionen von Portage, wie Unterstützung für verteilte Kompilierung, ccache und mehr.

Sven Vermeulen
Autor

Grant Goodyear
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Gentoo x86 Entwickler

Tavis Ormandy
Gentoo Alpha Entwickler

Jason Huebel
Gentoo AMD64 Entwickler

Guy Martin
Gentoo HPPA Entwickler

Pieter Van den Abeele
Gentoo PPC Entwickler

Joe Kallar
Gentoo SPARC Entwickler

John P. Davis
Bearbeiter

Pierre-Henri Jondot
Bearbeiter

Eric Stockbridge
Bearbeiter

Rajiv Manglani
Bearbeiter

Jungmin Seo
Bearbeiter

Stoyan Zhekov
Bearbeiter

Jared Hudson
Bearbeiter

Colin Morey
Bearbeiter

Jorge Paulo
Bearbeiter

Carl Anderson
Bearbeiter

Jon Portnoy
Bearbeiter

Zack Gilburd
Bearbeiter

Jack Morgan
Bearbeiter

Benny Chuang
Bearbeiter

Erwin
Bearbeiter

Joshua Kinard
Bearbeiter

Tobias Scherbaum
Bearbeiter

Xavier Neys
Bearbeiter

Joshua Saddler
Bearbeiter

Gerald J. Normandin Jr.
Korrektor

Donnie Berkholz
Korrektor

Ken Nowack
Korrektor

Lars Weiler
Mitarbeiter

Tobias Scherbaum
Übersetzer

Jens Schittenhelm
Übersetzer

Patrick Sudowe
Übersetzer

Torsten Veller
Übersetzer

Michael Frey
Übersetzer

Markus Nigbur
Übersetzer

Boris Ruppert
Übersetzer

Jan Hendrik Grahl
Übersetzer

Tobias Heinlein
Übersetzer

Christian Hartmann
Korrektor

Michael Imhof
Korrektor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.