Handbuch:IA64/Portage/Dateien
Portage Dateien
Konfigurationsanweisungen
Portage bringt eine Standardkonfiguration mit, die unter /usr/share/portage/config/make.globals gespeichert ist. Jede Konfiguration von Portage findet über Variablen statt. Welche Variablen das sind und was sie bedeuten, wird später beschrieben.
Da viele Konfigurationsanweisungen je nach Architektur unterschiedlich sind, hat Portage auch dafür Standardkonfigurationsdateien, die Teil des Systemprofils sind. Auf dieses Profil wird über den Symlink /etc/portage/make.profile verwiesen. Portages Konfigurationen werden über die make.defaults-Dateien des Profils und all seiner Parent-Profile gesetzt. Später wird mehr auf Profile und das /etc/portage/make.profile-Verzeichnis eingegangen.
Über /etc/portage/make.conf lassen sich die Defaultvariablen übersteuern. Wenn also eine Konfigurationsvariable geändert werden soll, dann in /etc/portage/make.conf und nicht via /usr/share/portage/config/make.globals oder make.defaults. Unter /usr/share/portage/config/make.conf.example findet sich eine Beispiel-make.conf mit weiterführenden Erklärungen. Diese dient jedoch lediglich als Beispiel und wird von Portage nicht ausgewertet.
Es ist ebenfalls möglich eine Portage-Konfigurationsvariable über eine Umgebungsvariable festzulegen, dies wird jedoch nicht empfohlen.
Profil-spezifische Informationen
Es wurde bereits auf das /etc/portage/make.profile-Verzeichnis eingegangen. Dabei handelt es sich um einen symbolischen Link zu einem Profil. Dies ist standardmäßig eines aus /var/db/repos/gentoo/profiles/. Jedoch kann man auch ein eigenes Profil an anderem Ort erstellen und auf dieses verweisen. Das Profil, auf das dieser Symlink zeigt, ist das Profil, dass das komplette System beschreibt.
Ein Profil enthält architekturspezifische Informationen für Portage, wie z.B. eine Liste von Paketen die zu dem jeweiligen System gehören, eine Liste von nicht-funktionierenden (oder maskierten) Paketen, etc.
Nutzer-spezifische Konfiguration
Wenn das Verhalten von Portage bezüglich der Installation von Software geändert werden soll, müssen bestimmte Dateien innerhalb von /etc/portage/ geändert werden. Es wird dringend davon abgeraten, dieses Verhalten über Umgebungsvariablen anzupassen.
Unter /etc/portage/ können Nutzer folgende Dateien erstellen:
- package.mask in der Pakete aufgelistet werden, die von Portage nie in Betracht gezogen werden sollen für eine Installation.
- package.unmask in der Pakete aufgelistet werden, die Portage installieren können soll, obwohl diese von den Gentoo-Entwicklern explizit nicht für die Installation empfohlen werden.
- package.accept_keywords in der Pakete aufgelistet werden, die Portage installieren können soll, obwohl das Paket (noch) nicht für das System oder die Architektur als passend befunden wurde.
- package.use in der die USE-Flags für bestimmte Pakete aufgelistet werden, ohne dass diese für alle Pakete des Systems wirksam werden.
Diese Dateien können auch als Verzeichnisse angelegt werden, die pro Paket eine Datei enthalten. Weitere Informationen über das /etc/portage/-Verzeichnis und eine komplette Liste möglicher Dateien, die darin erstellt werden können, kann man in der Portage-Manpage finden:
user $
man portage
Speicherorte für Portage-Dateien ändern
Die vorhergehenden Konfigurationsdateien können nicht an anderer Stelle gespeichert werden - Portage wird immer an genau diesen Speicherorten nach diesen Dateien suchen. Allerdings nutzt Portage viele andere Speicherorte für verschiedene Zwecke: Build-Ordner, Source Code, Gentoo Repository, ...
All diese Zwecke haben wohlbekannte Standartspeicherorte, können aber nach eigenen Belieben über /etc/portage/make.conf angepasst werden. Der Rest dieses Kapitels erklärt, welche speziellen Speicherorte Portage verwendet und wie diese Orte im Dateisystem geändert werden können.
Dieses Dokument ist allerdings nicht als Referenz gedacht. Eine 100%-Abdeckung liefern nur die Portage- und make.conf-Manpages:
user $
man portage
user $
man make.conf
Speicherorte
Gentoo Ebuild-Repositorium
Der Standardspeicherort für das Gentoo ebuild-Repository ist /var/db/repos/gentoo. Dieser ist definiert von der Standard-repos.conf-Datei unter /usr/share/portage/config/repos.conf. Zum Ändern wird diese Datei nach /etc/portage/repos.conf/gentoo.conf kopiert und unter location angepasst. Wenn das Gentoo ebuild-Repository wo anders gespeichert wird, muss der Symlink unter /etc/portage/make.profile entsprechend mit angepasst werden.
Nachdem der Pfad unter location in /etc/portage/repos.conf/gentoo.conf geändert wurde, wird empfohlen, dass die folgenden Variablen in /etc/portage/make.conf ebenfalls angepasst werden, da diese nicht automatisch durch die location-Änderung mitgeändert werden. Das hat etwas damit zu tun, wie Portage Variablen verarbeitet: PKGDIR, DISTDIR und RPMDIR.
Vorkompilierte Binärdateien
Obwohl Portage standardmäßig keine Binärpakete verwendet, unterstützt es diese. Wenn Portage dafür konfiguriert wird, mit Binärpaketen zu arbeiten, wird es in /var/cache/binpkgs danach suchen. Dieser Pfad über die PKGDIR-Variable definiert.
Quellcode
Der Source Code von Anwendungen wird standardmäßig in /var/cache/distfiles gespeichert. Dieser Pfad wird über die DISTDIR-Variable definiert.
Portage-Datenbank
Portage speichert den Stand des Systems (welche Pakete installiert sind, welche Dateien zu welchen Paket gehören, ...) in /var/db/pkg.
Diese Dateien dürfen nicht manuell geändert werden! Dies könnte dazu führen, dass Portage den Zustand des Systems nicht mehr korrekt auswerten kann.
Portage Cache
Der Portage-Cache (mit Änderungszeiten, virtuelle Pakete, Abhängikeiten, ...) ist in /var/cache/edb gespeichert. Dieser Speicherort ist ein Cache im üblichen Sinne, d.h. man kann den Inhalt jederzeit löschen, solange keine Portage-bezogene Operation läuft.
Bauen von Software
Temporäre Portage-Dateien
Portages temporäre Dateien werden standardmäßig in /var/tmp/ gespeichert. Dieser Pfad wird durch die PORTAGE_TMPDIR-Variable konfiguriert.
Build-Verzeichnis
Portage erstellt für jedes Paket, dass durch emerge installiert wird ein eigenes Build-Verzeichnis innerhalb von /var/tmp/portage/. Dieser Pfad wird durch die PORTAGE_TMPDIR-Variable definiert woran portage/ angehangen wird.
Pfad des Root-Dateisystems
Standardmäßig installiert Portage alle Dateien in das aktuelle Dateisystem (/). Dies kann durch Anpassen der ROOT-Umgebundvariable geändert werden. Dies ist dann sinnvoll, wenn man neue Build-Images erstellt.
Logging-Funktionalitäten
Ebuild-Logging
Portage kann pro ebuild Logdateien erstellen. Dies funktioniert nur, wenn die Variable PORT_LOGDIR einen Pfad angibt, in den von Portage geschrieben werden kann (über den Portage-User). Standardmäßig ist diese Variable nicht gesetzt. Wenn die PORT_LOGDIR nicht gesetzt ist, gibt es keine Build-Logs im aktuellen Logging-System, obwohl Nutzer einige Logs erhalten können über den neuen elog-Support.
Wenn die PORT_LOGDIR-Variable nicht gesetzt ist und elog benutzt wird, werden die Build-Logs und alle anderen von elog erstellten Logs zur Verfügung gestellt, wie folgend beschrieben.
Portage bietet eine feingranulare Kontrolle über das Logging mithilfe von elog:
- PORTAGE_ELOG_CLASSES: Darin können Nutzer bestimmen, welche Art von Nachrichten geloggt werden sollen. Dies kann jede durch Leerzeichen getrennte Kombination von info, warn, error, log und qa sein.
- info: Loggt die "einfo"-Nachrichten, die von ebuilds geschrieben werden
- warn: Loggt die "ewarn"-Nachrichten, die von ebuilds geschrieben werden
- error: Loggt die "eerror"-Nachrichten, die von ebuilds geschrieben werden
- log: Loggt die "elog"-Nachrichten, die in manchen ebuilds verwendet werden
- qa: Loggt die "QA Notice"-Nachrichten, die von ebuilds ausgegeben werden
- PORTAGE_ELOG_SYSTEM: Darüber wird das Modul (oder die Module) ausgewählt, dass die Log-Nachrichten verarbeitet. Wenn dies leer ist, ist das Logging deaktiviert. Jede durch Leerzeichen getrennte Kombination von save, custom, syslog, mail, save_summary und mail_summary kann hier gesetzt werden. Mindestens ein Modul muss ausgewählt werden werden, um elog zu verwenden.
- save: Damit wird ein Log pro Paket in $PORT_LOGDIR/elog oder /var/log/portage/elog, wenn $PORT_LOGDIR nicht gesetzt ist, gespeichert.
- custom: Damit werden alle Nachrichten zu einem eigenen Befehl weitergeleitet, der über $PORTAGE_ELOG_COMMAND definiert wird; dazu später mehr.
- syslog: Sendet alle Nachrichten an den installierten System Logger.
- mail: Leitet alle Nachrichten zu einem Nutzer-definierten Mailserver via $PORTAGE_ELOG_MAILURI weiter; dazu später mehr. Das Mail-Feature von elog ist verfügbar ab >=portage-2.1.1.
- save_summary: Ähnlich wie save, nur dass hier die Nachrichten zusammengefasst gespeichert werden unter $PORT_LOGDIR/elog/summary.log oder /var/log/portage/elog/summary.log, wenn $PORT_LOGDIR nicht definiert ist.
- mail_summary: Ähnlich wie mail, nur dass alle Nachrichten in einer einzigen Mail gesendet werden, wenn emerge fertig ist.
- PORTAGE_ELOG_COMMAND: Dies wird nur ausgewertet, wenn das custom-Modul aktiviert ist. Nutzer können damit einen Befehl definieren, der die Nachrichten verarbeitet. Beachte, dass dem Befehl zwei Variablen zur Verfügung stehen: ${PACKAGE} enthält den Paketnamen mit Version und ${LOGFILE} enthält den absoluten Pfad zu der Logdatei. Zum Beispiel:
PORTAGE_ELOG_COMMAND="/path/to/logger -p '\${PACKAGE}' -f '\${LOGFILE}'"
- PORTAGE_ELOG_MAILURI: Darin enthalten sind Einstellungen für das mail-Modul, wie z.B. Adresse, Nutzername, Passwort, Mailserver und Portnummer. Der Standard ist "root@localhost localhost". Im folgenden ein Beispiel für einen SMTP-Server der eine Nutzernamen- und Passwort-basierte Authentifizierung auf einem bestimmten Port (Standard ist 25) verlangt:
PORTAGE_ELOG_MAILURI="user@some.domain username:password@smtp.some.domain:995"
- PORTAGE_ELOG_MAILFROM: Darüber kann die "from"-Adresse der Log-Mails gesetzt werden, wenn nicht gesetzt, ist dies defaultmäßig "Portage".
- PORTAGE_ELOG_MAILSUBJECT: Darüber kann der Betreff der Log-Mail bestimmt werden. Es stehen hier die beiden Variablen ${PACKAGE} und ${HOST} zur Verfügung, die den Paketnamen mit Version und den Fully Qualified Domain Name des Portage-Hosts enthält.
Zum Beispiel:
PORTAGE_ELOG_MAILSUBJECT="package \${PACKAGE} was merged on \${HOST} with some messages"
Nutzer die enotice mit Portage-2.0.* benutzt haben müssen enotice komplett entferten, da dies nicht mit elog kompatibel ist.