Home / LinuxUser / 2005 / 10 / Einfach Handhabung und volle Flexibilität in einer Distribution vereint

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Von Grund auf

Einfach Handhabung und volle Flexibilität in einer Distribution vereint

Pakete verändern

Angenommen, Sie starten den Textbrowser Links im Grafikmodus und der zuständige Aufruf links -g führt zu Fehlermeldung: Graphics not enabled when compiling. In diesem Fall bauen Sie einfach das Paket mit der entsprechenden Unterstützung neu. Sie erzeugen das Verzeichnis /var/abs/local/links, wechseln nach dort und kopieren aus dem Build Tree die Datei /var/abs/network/links/PKGBUILD.

Wenn Sie sich diese Datei ansehen, finden Sie in der Funktion build() beim Aufruf von configure die Parameter --disable-graphics --without-x. Wenn Sie die Zeile in --enable-graphics --with-x abändern, lädt makepkg -c das Quelltextpaket herunter, erzeugt ein binäres Paket mit der Endung .pkg.tar.gz, das Sie mit pacman -U links-2.1pre17-1.pkg.tar.gz als root installieren. Der Schalter -c erledigt die Aufräumarbeiten nach der Installation. Jetzt funktioniert links -g, wie Abbildung 1 zeigt.

Abbildung 1: Links im Grafikmodus mit der deutschen Arch-Linux-Homepage.

Pakete erzeugen

Wer lieber mit schlanken Fenstermanagern wie Windowmaker, Fluxbox, Blackbox oder ähnlichen arbeitet, lernt sicher schnell die sogenannten Dockapps schätzen (bei Dockapps.org [6] finden Sie diese gleich serienweise). Die kleine Progrämmchen heften sich am Desktop-Rand an und stehen dann immer zur Verfügung.

Ein schönes Beispiel ist das Programm Mount.app, mit dessen Hilfe Sie grafisch das Mounten und Unmounten von Partitionen bewerkstelligen, sofern diese in /etc/fstab eingetragen sind. Den Quelltext finden Sie unter http://mountapp.sourceforge.net/mountapp-3.0.tar.gz

Mit dieser Information allein kommen Sie schon weiter. Sie legen also – wieder nicht als root – ein Verzeichnis /var/abs/local/mountapp an, wechseln in dieses hinein und kopieren den Prototyp /var/abs/PKGBUILD.proto nach PKGBUILD. Diese Datei sieht aus wie in Listing 1.

Listing 1

PKGBUILD.proto

pkgname=NAME
pkgver=VERSION
pkgrel=1
pkgdesc=""
url=""
license=""
depends=()
makedepends=()
conflicts=()
replaces=()
backup=()
install=
source=($pkgname-$pkgver.tar.gz)
md5sums=()
build() {
  cd $startdir/src/$pkgname-$pkgver
  ./configure --prefix=/usr
  make || return 1
  make DESTDIR=$startdir/pkg install
}

Hier könnten Sie pkgname=mountapp, pkgver=3.0, url="http://mountapp.sourceforge.net" und source=($url/$pkgname-$pkgversion.tar.gz) sofort ausfüllen. Mehr brauchen Sie zunächst auch nicht.

Der Aufruf von Makepkg in diesem Verzeichnis würde im vorliegenden Fall funktionieren, ebenso wie bei den meisten mit dem klassischen Dreischritt erzeugten Pakete. Wir wollen aber systematisch vorgehen, kommentieren die gesamte build() Funktion aus und erzeugen mit export STARTDIR=$(pwd) eine externe Kopie der internen startdir Variablen.

Makepkg erzeugt jetzt wegen der fehlenden Funktion build() einen Fehler, trotzdem lädt die Software das Quellpaket herunter und entpackt es an den richtigen Ort. So erhalten Sie eine Möglichkeit sich die Dateien README und INSTALL anzusehen.

Die Idee ist nun, jeden Befehl der Funktion build() von Hand auszutesten und – wenn nötig – abzuändern. Am kritischsten ist dabei der letzte Befehl. Beachten Sie, dass die Variable DESTDIR den Wert des Root-Verzeichnisses übrnimmt. Daher speichert Makepkg die Dateien bei der Installation zunächst unterhalb von DESTDIR ab.

Es sind also eventuell diverse Verzeichnisse zu erstellen, die der Programmautor nicht vorgesehen hat. Manchmal fehlt das Configure-Skript komplett. Dann können Sie das Makefile entweder patchen oder mit Sed ändern. Und schließlich hat das Quellverzeichnis unter $startdir/src/ gelegentlich einen anderen Namen, was aber leicht zu korrigieren wäre.

Im vorliegenden Fall funktioniert jeder einzelne Befehl so wie er soll, was wir nach dem Studium der README-Datei auch erwartet haben. Wir können also zu $STARTDIR zurückspringen, die build() Funktion entkommentieren und unser Paket mit makepkg bauen.

Allerdings sollten wir danach noch ein paar Verbesserungen vornehmen, insbesondere die Felder md5sums und depends ausfüllen. Das scheint schwierig zu sein, es gibt aber ein einfach zu benutzendes Werkzeug, das Ihnen dabei hilft: Namcap. Es vollführt die Rolle rückwärts von Pacman. Das Resultat von namcap PKGBUILD mountapp-3.0-1.pkg.tar.gz sehen Sie in Listing 2.

Listing 2

Namcap-Ausgabe

PKGBUILD (mountapp)  E: Missing md5sums
PKGBUILD (mountapp)  W: Missing Maintainer tag
PKGBUILD (mountapp)  W: Missing CVS Id tag
mountapp   E: Dependency detected and not included (libtiff) from files ['usr/bin/mount.conf', 'usr/bin/mount.app']
mountapp   E: Dependency detected and not included (gtk) from files ['usr/bin/mount.conf']
mountapp   E: Dependency detected and not included (xorg) from files ['usr/bin/mount.conf', 'usr/bin/mount.app']

Zunächst hängen Sie mit makepkg -g >> PKGBUILD die MD5-Summe ans Ende von PKGBUILD an, von wo Sie diese nur noch umzukopieren brauchen. Anschliessend tragen Sie die Abhängigkeiten nach, also depends=(libtiff gtk xorg). Erneutes Bauen – diesmal mit makepkg -fc um aufzuräumen – führt zu einem wesentlich verbesserten Paket, das auch auf anderen Rechnern brauchbar ist.

Hätten Sie x-server statt xorg eingetragen, wäre das Paket auch unter XFree86-Systemen installierbar. Die eigentliche Installation besorgt jetzt pacman -U mountapp-3.0-1.pkg.tar.gz. Ein Aufruf des neu installierten Progrämmchens mount.app zeigt Abbildung 2.

Abbildung 2: Die Anwendung Mount.app gibt eine Übersicht über die eingehängten Dateisysteme.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 110 Punkte (2 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...