Live-Ebuilds

Live-Ebuilds

Sogenannte live-ebuilds sind ebuilds die die aktuellen Entwicklerversionen von Programmen installieren. Sie holen sich den Quellcode direkt von den CVS- bzw. SVN-Repos. Live-ebuilds haben eine feste Versionsnummer, diese endet immer mit -9999 wie z.B. dev-libs/ecore-9999.

Alle zu installierenden live-ebuilds sowie deren Abhängigkeiten müssen in die /etc/portage/package.keywords eingetragen werden. Dieses muss auch bei ~testing-Systemen gemacht werden. Da diese Paketliste mitunter sehr lang werden kann empfiehlt sich die Verwendung von package.keywords als Verzeichnis mit separaten Dateien für die jeweiligen Paketlisten. Portage unterstützt dieses Feature. Für live-ebuilds von Enlightenment könnte man z.B. eine Datei /etc/portage/package.keywords/enlightenment-live anlegen.

Die Syntax für live-ebuilds in der package.keywords sieht wie folgt aus (Beispiel):

=dev-libs/ecore-9999 **

Das "=" am Anfang, die Versionsnummer (immer "-9999") sowie "**" am Ende sind zwingend erforderlich, ansonsten gibt emerge eine Fehlermeldung aus.

Manchmal ist in den jeweiligen Verzeichnissen der live-ebuilds eine Dokumentation mit einer vordefinierten package.keywords. So erspart man sich das mühsame Erstellen einer package.keywords über die Fehlermeldungen von emerge. Ein Blick darin kann sich lohnen.
Die vordefinierte package.keywords kann entweder nach /etc/portage/package.keywords/my_file kopiert werden oder ein Symlink zur Originaldatei angelegt werden.
Beispiel für enlightenment-niifaq (den Punkt am Ende beachten):

cd /etc/portage/package.keywords
ln -s /var/lib/layman/enlightenment-niifaq/Documentation/live-builds/package.keywords/enlightenment.live .

Update von live-ebuilds:

Da live-ebuilds eine feste Versionsnummer haben (-9999) werden sie bei einem "emerge --update world" nicht als zu aktualisierende Pakete erscheinen. Man muss also bei einem Update von live-ebuilds die ebuilds per emerge erneut installieren. Sie fragen dann bei den CVS- bzw. SVN-Repos ob eine aktuellere Revision vorhanden ist. Ist die Revison-Nr. identisch mit der installierten wird nichts weiter unternommen. Bei einer neuen Revison-Nr. wird der aktuelle Quellcode heruntergeladen, in /usr/portage/distfiles/svn-src gespeichert und das ebuild installiert das Paket.

Bei live-ebuilds von größeren Projekten mit vielen Paketen ist die Verwendung von sets empfehlenswert. Manche Overlays haben bereits vordefinierte sets enthalten. Ein Blick in den Ordner "Documentation" des jeweiligen Overlays sollte näheres enthalten. Möchte man sets verwenden muss >=portage-2.2 verwendet werden. Dieses ist momentan noch maskiert und muss deshalb erst per package.unmask demaskiert werden:

echo "sys-apps/portage" >> /etc/portage/package.unmask

Anschließend ein

emerge portage

Eine Liste der verfügbaren sets erhält man mit dem Kommando:

emerge --list-sets

Durch das voranstellen von "@" wird ein set installiert:

emerge -av @name_of_set

Portage-2.2 hat ein vordefiniertes set zum reinstallieren aller live-ebuilds, das set heißt "live-rebuild":

emerge -av @live-rebuild

Sollen nicht alle live-ebuilds aktualisiert werden (per emerge -av @live-rebuild) kann man sich ein set erstellen. Dieses muss eine Datei im Verzeichnis /etc/portage/sets sein. Der Name ist frei wählbar.
Die Syntax ist für live-ebuilds identisch mit der in der package.keywords, nur ohne die abschließenden "**" (Beispiel):

=media-libs/evas-9999
=dev-libs/ecore-9999

Wer z.B. nur die live-ebuilds eines bestimmten Overlays aktualisieren möchte kann alle Pakete aus der package.keywords dieses Overlays in die /etc/portage/sets/name_of_set eintragen (ohne "**"). Anschließend dieses set (re-)installieren:

emerge -av @name_of_set

Möchte man portage-2.2 nicht verwenden kann ein set mit folgendem Kommando installiert werden:

emerge -av $(cat /etc/portage/sets/name_of_set)