Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
Dies hier ist ein kleines Tutorial, wie ein ebuild das aus dem Internet kommt, aber nicht im Gentoo-Portage Tree vorhanden ist, installiert werden kann. Als Basis dient eine Demo-Ebuild-Datei - > Download hier
Das neue ebuild sollte im $(PORTDIR_OVERLAY)
Verzeichnis gespeichert werden. In diesem Verzeichnis liegen die eigenen Ebuilds.
Noch kein Portage overlay vorhanden? Ok, dann richten wir schnell eins ein:
In /etc/make.conf
ein Zeile hinzufügen:
und dann natürlich dieses Verzeichnis anlegen:
Der Name Verzeichnisname portage-overlay
ist willkürlich, das Verzeichnis kann also theoretisch auch weisswurst
oder klopapier
genannt werden, solange es auch so in die make.conf
eingetragen wird. Tests an Labormäusen haben aber ergeben, dass solche Verzeichnisnamen nicht sinnvoll sind.
Bei jedem emerge wird nun zusätzlich zu /usr/portage
auch alles aus /usr/portage-overlay
mit berücksichtigt. Allerdings erwartet emerge noch eine zusätzlich Verzeichnisebene für die Kategorien, genau wie sie im "echten" portage-tree /usr/portage/
auch existieren. Es muss also noch ein Unterverzeichnis angelegt werden. Das muss eines aus den in /usr/portage
existierenden sein, andere Kategorienamen werden nicht akzeptiert. Wir haben uns hier für app-misc
entschieden, das triffts am besten:
Das obige ebuild nun in /usr/portage-overlays/app-misc/EBuildDemo
speichern. Und das ganze testen mit:
Ausgabe:
>>> emerge (1 of 1) app-misc/EBuildDemo-0.1-r1 to /
!!! No package manifest found: /usr/portage-lla/app-misc/EBuildDemo/Manifest
Da mit *.ebuild Files Sourcecode automatisch aus dem Internet geholt werden kann, aber das Internet nicht so sicher ist wie viele glauben, gibt es zu jeder Datei eine Prüfsumme. Die Manifest
Datei enthält die Prüfsummen. Stimmen die Prüfsummen nicht, verweigert emerge
die Arbeit. Da wir aber eine eigene Datei haben und der vertrauen wollen und auch keine Manifest
Datei haben, gibt es einen Parameter 'digest
' für ebuild
um alle benötigten Prüfsummen zu erstellen. Das ginge aber auch von Hand viel Spaß dabei...
ebuild /usr/portage-overlay/app-misc/EBuildDemo/EBuildDemo-0.1.ebuild digest
Das erstellt jetzt alle Prüfsummen, so daß ebuild
damit arbeiten kann, da auch vom *.tar.gz die Prüfsumme gebraucht erstellt wird, wird geprüft ob die Datei schon im distfiles
Directory vorhanden ist und wenn nicht wird die Datei aus dem Internet geholt.
Jetzt ist die Manifest
Datei da, die Prüfsummen sind gebuildet und die *.tar.gz Datei ist im distfiles
Directory vorhanden
MyPC ~Iam # emerge -s EBuildDemo Searching... [ Results for search key : EBuildDemo ] [ Applications found : 1 ] * app-misc/EBuildDemo Latest version available: 0.1-r1 Latest version installed: 0.1 Size of downloaded files: 0 kB Homepage: http://www.elsniwiki.de/index.php/Main/EbuildDemo Description: EBuildDemo is a simple demonstration how to create an own ebuild. License: GPL-2
emerge EBuildDemo
packt das tar.gz aus, baut es und installiert es in /usr/bin/EBuildDemo
, ein EBuildDemo
aus der Shell aufrufen, voila.
MyPC EBuildDemo # EBuildDemo Hallo Stephan, little ebuild demonstration.
Wenn die Ausgabe erscheint, haben wir ein Overlay Directory, und können Prüfsummen für eigene ebuilds erstellen und diese per emerge
installieren.
Das EBuildDemo kann als kleines Projekt angesehen werden. Dafür soll ein ebuild erstellt werden, so daß andere es in Gentoo einfachst per emerge EBuildDemo
installieren können. Die EBuildDemo Sourcen bestehen aus einem Makefile
und einer C++ Datei hello.cc
Inhalt kurz: Ein kleines C++ Programm und ein Makefile, das Makefile kann mittels make
das C++ Programm übersetzen, der Text im Source stimmt nicht mit der Ausgabe überein, zur weiteren Demonstration ist im ebuild
ein Patch mittels sed
vorgenommen worden.
Die beiden eben genannten Dateien stehen jetzt z.B. in einem Projekt
-Verzeichnis, daraus machen wir ein *.tar.gz.
Gentoo ebuilds haben fast immer eine Revisionsnummer im Dateinamen. Ein
hätte sowas zwar auch, aber beim Auspacken mittels tar xzf *
wird in das Verzeichnis Projekt
entpackt, wir wollen aber unser Projekt nicht jedesmal umbenennen nur weil für andere eine neue Revision entsteht, also kann man mit einem Softlink arbeiten.
Ein Softlink erstellen mit ln -s Projekt EBuildDemo?-0.1
und beim packen den Parameter -h
nicht vergessen.
Sollte sich die Datei EbuildDemo-0.1.tar.gz
nicht richtig downloaden lassen, hat man in GENTOO_MIRRORS
vermutlich einen Server drin, der nicht nur eine Fehlernummer sondern auch eine Fehlermeldungsdatei liefert, den am besten gleich aus GENTOO_MIRRORS
entfernen. ftp.tu-clausthal.de ist so einer .
Das *.tar.gz file kann auch von Hand geholt, und nach /usr/portage/distfiles
kopiert werden.
md5sum -b liefert:
bf6f26c6aa12170d45d95e4476756b2b
Fragen?
ja, mir fehlt die Brücke vom ebuild-demo zu einem eigenen Projekt, z.B. wie definiere ich die Abhängigkeiten?
Wäre cool, wenn wir mal irgendwann mal eine seite machen könnten, die wie ein Tutorial beschreibt wie man unter Linux ein C++-Projekt erstellt (makefile, automake configure usw.), es in CVS bzw. Subversion verwaltet (als Referenz kann man dann immer noch auf die CVSBentzen? Seite linken) und daraus ein ebuild macht. Am besten an Hand eines Beispielprojektes, das mindestens eine Abhängigkeit hat, also z.B. ein kleines ncurses "Hallo-Welt" Programm oder so.
Machen wir.