Package.env
Aus Gentoo Linux Wiki
| Terminals / Shells • X • Portage • System • Dateisysteme • Kernel • Netzwerk• Sonstiges • alphabetischer Tipp Index |
Die Datei /etc/portage/bashrc ist die bashrc, die von Portage bei jedem Aufruf der Bash benutzt wird. Diese Datei kann man für eigene Ziele missbrauchen, im Folgenden wird das Paket net-misc/openssh als Beispiel benutzt.
Achtung: Der Autor dieser Anleitung übernimmt keine Haftung für Schäden, die durch die Anwendung des Tipps entstehen. Wer nicht weiß was hier gemacht wird, sollte im Sinne seines Systems darauf verzichten. Nichtsdestotrotz: Bei mir tut's der Tipp so wie er hier steht!
[Bearbeiten] Vorgehensweise:
/etc/portage/bashrc anlegen und Folgendes eintragen:
if [ -z "${CATEGORY}" ] || [ -z "${PN}" ]; then
PKG_ENV_FILE="/not/exits"
else
PKG_ENV_FILE="/etc/portage/package.env/${CATEGORY}/${PN}"
fi
if [ -r ${PKG_ENV_FILE}-${PV} ]; then
source ${PKG_ENV_FILE}-${PV}
elif [ -r ${PKG_ENV_FILE} ]; then
source ${PKG_ENV_FILE}
fi
Nun kann man im Verzeichnis /etc/portage/package.env Verzeichnisse für die Kategorie anlegen. Darin legt man eine neue Datei für net-misc/openssh an (/etc/portage/package.env/net-misc/openssh) und bearbeitet diese. In unserem Beispiel also:
mkdir -p /etc/portage/package.env/net-misc
${EDITOR} /etc/portage/package.env/net-misc/openssh
Inhalt (z.B.):
export VARIABLE="--schlagmichtod --irgendwastolles"
Bei einem emerge kdepim wird jetzt automatisch über die bashrc die Variable VARIABLE gesetzt und beim Bauen genutzt.
[Bearbeiten] Weitere Tipps
Die bashrc von oben unterstützt auch verschiedene Versionen eines Programms. z. B.: /etc/portage/package.env/kde-base/kdepim-3.1.5 Dateien mit Versionsnummern werden dabei gegenüber Dateien ohne Versionsnummern bevorzugt behandelt.
VARIABLE ist natürlich nur ein Beispiel, Im Prinzip ist alles möglich (CFLAGS, FEATURES etc.). Über Sinn und Unsinn möge jeder selbst entscheiden.
[Bearbeiten] FEATURES
Für die FEATURES sind kleine Hilfsfunktionen ganz nützlich:
function unset_feature {
if [ ! -z ${1} ]; then
FEATURES=${FEATURES/${1}/}
fi
}
function set_feature {
if [ ! -z ${1} ]; then
FEATURES="${FEATURES/${1}/} ${1}"
fi
}
Damit kann man in seinen package.env-Dateien ganz einfach FEATURES setzen und entfernen
set_feature noman unset_feature sandbox
