Difference between revisions 141395457 and 141395587 on dewiki

{{Importartikel}}

{{Infobox Software
| name                   = Portage
| logo                   =
| screenshot             = [[image:Portage-oppdatering.png|250px]]
| caption                = Portage in action
| author                 =
(contracted; show full)irrors]]. New and updated ebuilds can be obtained by synchronizing the local ebuild repository with the mirrors. This is done by executing the command <tt>emerge --sync</tt>. Historically, Gentoo has provided pre-compiled binary packages for many common programs, especially those which are lengthy to compile, such as [[Mozilla Firefox]] and [[OpenOffice.org]]. These are still installed with emerge, just by appending a "-bin" to the package name to instead install the binary version.


Ein '''Ebuild''' ist ein [[Skriptsprache|Skript]], das Informationen über ein Programmpaket enthält und dessen [[Installation (Computer)|Installation]] steuert. Das Ebuild-Format ist eine [[domänenspezifische Sprache]], die [[Bourne-again shell|bash]] als Grundlage hat. Es wird in [[Gentoo Linux]] für die [[Paketverwaltung]] verwendet, z.&nbsp;B. vom Paketmanager [[Gentoo Linux#Portage|Portage]].

==== Aufbau ====
Ebuilds definieren zunächst einen festgelegten Satz von [[Variable (Programmierung)|Variablen]]. Diese enthalten zum einen Informationen für den Benutzer, wie etwa eine Kurzbeschreibung des Pakets oder den [[Uniform Resource Identifier|URI]] der [[Homepage]]. Andere Variablen werden vom Paketmanager ausgewertet, beispielsweise die Information, von wo der [[Quelltext]] [[Download|heruntergeladen]] werden kann, die [[Lizenz]] des Pakets oder für welche [[Rechnerarchitektur]]en es unterstützt wird. Auch Abhängigkeiten von anderen Paketen wie [[Programmbibliothek]]en, die für das Programm benötigt werden, können durch Variablen spezifiziert werden.

Danach werden in der Regel mehrere [[Funktion (Programmierung)|Funktionen]] definiert, die Anweisungen zum [[Archiver|Auspacken]], [[Patch (Software)|Patchen]], [[Compiler|Kompilieren]] und [[Installation (Computer)|Installieren]] der Software enthalten. Für die meisten Funktionen gibt es einen vom Paketmanager vorgegebenen [[Voreinstellung|Default]], so dass nicht jedes Ebuild alle Funktionen definieren muss. Wenn ein Programmpaket beispielsweise nach dem Auspacken nur mit der Standard-Befehlssequenz ''./[[configure]], [[make]]'' und ''make install'' kompiliert und installiert werden kann, so käme das zugehörige Ebuild ganz ohne die Definition spezieller Funktionen aus.

==== Benennung ====
Die Benennung von ebuilds erfolgt nach einem strengen 4-teiligen Schema:
# Der Allgemeine Paketname, wie z.&nbsp;B. [[KDE|''kde'']] oder ''[[mod_php]]'' sollte nur aus Kleinbuchstaben, Ziffern und einer beliebigen Anzahl von einzelnen Bindestrichen ('-') oder Unterstrichen ('_') bestehen
# Die Version des Paketes sollte übereinstimmen mit der Version des Archives, das zur Installation genutzt wird. Heißt das Archiv also programm-2.5.9.tar.gz, so sollte die angegebene Version im ebuild auch 2.5.9 lauten.
# Der letzte Teil ist optional und beinhaltet [[Suffix]]e wie [[Alpha-Version|alpha]], [[Beta-Version|beta]], pre oder [[Release Candidate|rc]] und bestimmt somit die angegebene Version im 2. Teil näher.
# Die Revisionsnummer ist optional und wird nur verwendet, wenn das ebuild verbessert wurde (z.&nbsp;B. wenn zusätzliche [[Patch (Software)|Fehlerbereinigungen]] hinzugefügt werden, aber das Ebuild weiterhin dieselbe Software-Version installiert (sogenannter "revisionbump")).
# Zwar kein Teil des ebuilds, dennoch sehr wichtig ist die Dateiendung '.ebuild'.

Beispiel:
make-3.82-r4.ebuild

==== Eclass ====
Um das Schreiben von ebuilds für die Entwickler zu vereinfachen, gibt es sogenannte eclasses. In diesen werden Funktionen für immer wiederkehrende Aufgaben eingetragen, wie z.B. das Erstellen eines [[Concurrent Versions System|CVS]]-Ebuilds oder Funktionen zur Installation eines [[Linux (Kernel)|Linux-Kernels]].

===Binary packages===
Gentoo does have a binary packaging format, which is a ''.tbz2'' file ([[tar (file format)|tar]] with [[bzip2]] compression) with additional [[metadata]]. This feature enables the building of binary packages on one system (using Portage's <tt>buildpkg</tt> or <tt>quickpkg</tt>) followed by quick installation on other, identical systems (with Portage's <tt>getbinpkg</tt> or <tt>emerge -K</tt>). See [http://www(contracted; show full)
* [http://forums.gentoo.org/viewtopic.php?t=125553 Installing portage on other Linux distros]
; Similar software
* [http://freaknet.org/alpt/Emerde/ Emerde, portage-like project for Slackware]
* [https://code.google.com/p/pkgcore/ Pkgcore], bsd re-implementation of portage
* [http://paludis.exherbo.org/ Paludis], another package manager that uses ebuilds
* [https://wiki.archlinux.org/index.php/Arch_Build_System Arch Build System] a ports-like system for [http://www.archlinux.org/ Arch Linux]


Ein '''Ebuild''' ist ein [[Skriptsprache|Skript]], das Informationen über ein Programmpaket enthält und dessen [[Installation (Computer)|Installation]] steuert. Das Ebuild-Format ist eine [[domänenspezifische Sprache]], die [[Bourne-again shell|bash]] als Grundlage hat. Es wird in [[Gentoo Linux]] für die [[Paketverwaltung]] verwendet, z.&nbsp;B. vom Paketmanager [[Gentoo Linux#Portage|Portage]].

== Aufbau ==
Ebuilds definieren zunächst einen festgelegten Satz von [[Variable (Programmierung)|Variablen]]. Diese enthalten zum einen Informationen für den Benutzer, wie etwa eine Kurzbeschreibung des Pakets oder den [[Uniform Resource Identifier|URI]] der [[Homepage]]. Andere Variablen werden vom Paketmanager ausgewertet, beispielsweise die Information, von wo der [[Quelltext]] [[Download|heruntergeladen]] werden kann, die [[Lizenz]] des Pakets oder für welche [[Rechnerarchitektur]]en es unterstützt wird. Auch Abhängigkeiten von anderen Paketen wie [[Programmbibliothek]]en, die für das Programm benötigt werden, können durch Variablen spezifiziert werden.

Danach werden in der Regel mehrere [[Funktion (Programmierung)|Funktionen]] definiert, die Anweisungen zum [[Archiver|Auspacken]], [[Patch (Software)|Patchen]], [[Compiler|Kompilieren]] und [[Installation (Computer)|Installieren]] der Software enthalten. Für die meisten Funktionen gibt es einen vom Paketmanager vorgegebenen [[Voreinstellung|Default]], so dass nicht jedes Ebuild alle Funktionen definieren muss. Wenn ein Programmpaket beispielsweise nach dem Auspacken nur mit der Standard-Befehlssequenz ''./[[configure]], [[make]]'' und ''make install'' kompiliert und installiert werden kann, so käme das zugehörige Ebuild ganz ohne die Definition spezieller Funktionen aus.

== Benennung ==
Die Benennung von ebuilds erfolgt nach einem strengen 4-teiligen Schema:
# Der Allgemeine Paketname, wie z.&nbsp;B. [[KDE|''kde'']] oder ''[[mod_php]]'' sollte nur aus Kleinbuchstaben, Ziffern und einer beliebigen Anzahl von einzelnen Bindestrichen ('-') oder Unterstrichen ('_') bestehen
# Die Version des Paketes sollte übereinstimmen mit der Version des Archives, das zur Installation genutzt wird. Heißt das Archiv also programm-2.5.9.tar.gz, so sollte die angegebene Version im ebuild auch 2.5.9 lauten.
# Der letzte Teil ist optional und beinhaltet [[Suffix]]e wie [[Alpha-Version|alpha]], [[Beta-Version|beta]], pre oder [[Release Candidate|rc]] und bestimmt somit die angegebene Version im 2. Teil näher.
# Die Revisionsnummer ist optional und wird nur verwendet, wenn das ebuild verbessert wurde (z.&nbsp;B. wenn zusätzliche [[Patch (Software)|Fehlerbereinigungen]] hinzugefügt werden, aber das Ebuild weiterhin dieselbe Software-Version installiert (sogenannter "revisionbump")).
# Zwar kein Teil des ebuilds, dennoch sehr wichtig ist die Dateiendung '.ebuild'.

Beispiel:
make-3.82-r4.ebuild

== Eclass ==
Um das Schreiben von ebuilds für die Entwickler zu vereinfachen, gibt es sogenannte eclasses. In diesen werden Funktionen für immer wiederkehrende Aufgaben eingetragen, wie z.B. das Erstellen eines [[Concurrent Versions System|CVS]]-Ebuilds oder Funktionen zur Installation eines [[Linux (Kernel)|Linux-Kernels]].

== Literatur ==
* Tobias Scherbaum: ''Gentoo Linux: Die Metadistribution.'' 2. Auflage. Mitp-Verlag, Heidelberg 2008, ISBN 978-3-8266-5941-6.
* Christoph Junghans, Andreas K. Hüttel, Ulrich Müller: ''Maßarbeit – Gentoo Linux: Quelltexte und Rolling Releases.'' In: ''[[c’t|c’t – Magazin für Computertechnik]].'' Jg. 2012, Nr. 16. [[Heise Zeitschriften Verlag]], {{ISSN|0724-8679}}, S. 162–164.

== Weblinks ==
* [http://devmanual.gentoo.org/ Gentoo Development Guide] (englisch), umfasst u.&nbsp;a. eine ausführliche Referenz zum Ebuild-Scripting.
* [http://distfiles.gentoo.org/distfiles/pms-5.pdf Package Manager Specification] (englisch), genaue Spezifikation des Ebuild-Formats.