Pkgsrc und Debian Gnu/Linux
Die Paketsammlung pkgsrc von NetBSD hat mehrere interessante Vorteile, die andere Paketverwaltungssysteme nicht haben. Wie ich weiter unten zu pkgsrc und Mac OS X bereits geschrieben habe, läuft die Paketverwaltung auf beinah allen Unix-artigen Betriebssystemen. Dabei ist sie auf kein bestimmtes Verzeichnis festgelegt und kann von einfachen Benutzern installiert werden, die nicht über Administrationsrechte verfügen. Diese Features bietet die Paketverwaltung APT von Debian zum Beispiel nicht.
Da Debian GNU/Linux aber zu der Gruppe der Unix-artigen Betriebssysteme gehört, kann man pkgsrc ganz leicht installieren. Vorher braucht man aber noch CVS für die Installation und, damit man später Quellcode kompilieren kann, das Meta-Paket build-essential
:
# aptitude install cvs build-essential
Danach besorgt man sich den CVS-Tree und kopiert ihn in das Heim-Verzeichnis:
$ export CVS_RSH=ssh $ export CVSROOT=anoncvs@anoncvs3.de.netbsd.org:/cvsroot $ cvs co -PA pkgsrc
Wie das Dollar-Zeichen im Terminalprompt zeigt, muss man dafür nicht Root sein. Das Kopieren des CVS-Trees kann jetzt eine Weile dauern, da etwa 370 MB geholt werden, Tendenz steigend, weil das Archiv permanent wächst. Sobald das Archiv vollständig geladen ist, wechselt man in den Verzeichnisbaum zum Bootstrap. Bootstrap installiert bmake, die BSD-Variante von make. Wenn man pkgsrc auf einem anderen System als NetBSD verwendet, muss man bmake nehmen, damit die Übersetzung des Quellcodes funktioniert.
$ cd pkgsrc/bootstrap $ sudo ./bootstrap
Hier kann man übrigens sehen, dass ich auf meinem System sudo aktiviert habe. Wer kein sudo benutzt muss stattdessen in die Root-Shell wechseln. Man kann pkgsrc auch ohne Administrationsrechte ausprobieren. Dazu wird der Befehl ohne „sudo“, das heißt als normaler Benutzer, und mit dem zusätzlichen Argument „--unprivileged“ eingegeben:
$ cd pkgsrc/bootstrap $ ./bootstrap --unprivileged
Es kann übrigens passieren, dass man beim Bootstrap auf folgende Fehlermeldung stößt:
$ cd pkgsrc/bootstrap $ sudo ./bootstrap Password: ERROR: Your shell's echo command is not BSD-compatible. ERROR: Please select another shell by setting the environment ERROR: variable SH.
Wenn das passiert, verwendet man vermutlich eine Ubuntu-Version, in der /bin/sh
ein symbolischer Link auf /bin/dash
ist. Der Echo-Befehl der Dash-Shell ist allerdings nicht BSD-kompatibel. Dash steht für Debian Almquist Shell und ist seit „Edgy Eft“ die Standard-Shell unter Ubuntu. Die Dash ist kleiner und schneller als die Bash, der Standard-Shell auf den meisten Linux-Systemen, und erfüllt dabei vollständig die POSIX-Spezifikation. Sie ist aber, wie gesagt, nicht BSD-kompatibel. Daher muss der symbolische Link von der Dash auf die Bash geändert werden.
Mit dem Befehl ls -l
findet man heraus, wo das Problem liegt:
$ ls -l /bin/sh lrwxrwxrwx 1 root root 4 2007-09-22 15:46 /bin/sh -> dash
Den Link ändert man, indem man zuerst eine Sicherheitskopie des alten Link anlegt, um dann einen neuen Link zu erzeugen:
$ sudo mv /bin/sh /bin/sh.old $ sudo ln -s /bin/bash /bin/sh
Wenn man das Kommando ls -l
wiederholt, dürfte der Link jetzt auf die Bash verweisen.
$ ls -l /bin/sh lrwxrwxrwx 1 root root 9 2007-09-23 18:19 /bin/sh -> /bin/bash
Ohne die Option „--unprivileged“ wird das neue Verzeichnis /usr/pkg/
angelegt. Verwendet man die Option, befindet sich der neue Ordner pkg
im Heim-Verzeichnis. Damit die Programme, die pkgsrc im Verzeichnis <dir>/pkg/bin/
installiert, aufgerufen werden können, ohne dass man ständig den ganzen Pfad zum Programm mit angeben muss, fügt man ihn der Umgebungsvariable PATH hinzu. Hat man sich für die Variante entschieden, pkgsrc ins Wurzelverzeichnis zu installieren, exportiert man den Pfad folgendermaßen:
export PATH=/usr/pkg/bin:$PATH
Soll der Pfad dauerhaft in die Umgebungsvariable PATH aufgenommen werden, kann man den Befehl zum Beispiel in die Datei .bash_profile
oder.bashrc
im Heim-Verzeichnis eintragen:
$ echo 'export PATH=/usr/pkg/bin:$PATH' >> ~/.bashrc
Für eine systemweite Änderung kann man stattdessen auch die Datei /etc/profile
anpassen.
Wenn man sich beim Bootstrap für die Variante entschieden hat, dass pkgsrc nur im eigenen Heim-Verzeichnis installiert wird, übergibt man folgenden Pfad an die Umgebungsvariable PATH:
$ echo 'export PATH=$HOME/pkg/bin:$PATH' >> ~/.bashrc
Um ein Programm mit pkgsrc zu installieren, wechselt man in das Verzeichnis mit dem Pkgsrc-Repository und führt bmake aus:
$ cd pkgsrc/misc/figlet $ sudo bmake install clean
Das Programm Figlet wird nun installiert. Wenn die Installation beendet ist, wird man am besten wieder normaler Benutzer und probiert es aus:
Zum weiterlesen gibt es die Dokumentation The pkgsrc guide auf der NetBSD-Homepage.
Geschrieben in Gnu/Linux