Daten|teiler
Kopieren als Kulturtechnik

Mac OS X Tiger for Unix-Geeks – Fehlende Kapitel 1: Working with Packages. NetBSD Pkgsrc

9. September 2007 von Christian Imhorst

In dem Buch Mac OS X Tiger for Unix Geeks gibt es zwar ein Kapitel zu Fink und eins zu den DarwinPorts (die jetzt wohl MacPorts heißen), es fehlt aber ein Kapitel zu pkgsrc, der Paketverwaltung von NetBSD. Dabei hat pkgsrc ein paar interessante Features, die andere Paketverwaltungen nicht haben: Es läuft auf beinah allen Unix-artigen Betriebssystemen, es ist auf kein bestimmtes Verzeichnis festgelegt und es kann von Benutzern installiert werden, die nicht über Administrationsrechte verfügen.
Um pkgsrc unter Mac OS X benutzen zu können, braucht man allerdings das Versionsverwaltungssystem CVS. Um CVS wiederum benutzen zu können, muss man vorher Xcode als Administrator installiert haben. Xcode befindet sich z.B. auf der zweiten Installations-CD von „Tiger“ oder kann von Apple direkt heruntergeladen werden. Dafür muss man allerdings eine kostenlose Mitgliedschaft in der Apple Developer Connection (ADC) erwerben.
Im Wiki der NetBSD Community gibt es eine sehr gute Anleitung auf Englisch, um pkgsrc unter Mac OS X zu installieren. Im Prinzip folge ich dieser Anleitung, wenn auch mit einigen kleinen Abweichungen.

Nachdem man also CVS mit Hilfe von Xcode installiert hat, kann man loslegen, indem man sich den Verzeichnisbaum von pkgsrc herunterlädt:

$ export CVS_RSH=ssh
$ export CVSROOT=anoncvs@anoncvs3.de.netbsd.org:/cvsroot
$ cvs co -PA pkgsrc

Das $-Zeichen steht dabei für den Terminal-Prompt und bedeutet, dass man das als normaler Benutzer machen kann. Das Herunterladen des Verzeichnisbaums kann jetzt einige Minuten dauern, da etwa 370 MB gezogen werden. Es können aber auch mehr sein, da das Archiv ständig wächst.

Mac OS X benutzt normalerweise das Dateisystem HFS+, das in der Standardeinstellung case insensitive ist. Für case insensitive gibt es noch keine deutsche Entsprechung, lässt sich aber laut Wikipedia mit „schreibungsunabhängig“ übersetzen. Case insensitive bedeutet, dass das Betriebssystem nicht zwischen Groß- und Kleinschreibung unterscheidet. Unix-Systeme sind im Normalfall case sensitive, d.h., dass Datei.txt und datei.txt zwei verschiedene Dateien darstellen, die eine mit großem D und die andere mit kleinem. Auch daTei.txt und Datei.txt sind verschiedene Dateien. Auf Windows-Systemen wird auch nicht zwischen Klein- und Großschreibung unterschieden, sie sind ebenfalls case insensitive.

Pkgsrc benötigt ein Dateisystem, das case sensitive ist. Wenn man eine neue Partition anlegt, kann man HFS+ auch mit der entsprechenden Option als case sensitive darauf installieren. Alternativ kann man pkgsrc mit der Option „–ignore-case-check“ mitteilen, dass es keine Überprüfung auf case sensitive oder case insensitive durchführen soll. Dann kann es aber sein, dass einige wenige Pakete, die mit pkgsrc installiert wurden, nicht funktionieren. Da es aber extrem wenige Pakete betrifft, habe ich mich für diesen Weg entschieden:

$ cd pkgsrc/bootstrap
$ sudo ./bootstrap --ignore-case-check

Wenn man pkgsrc ohne Administrationsrechte ausprobieren will, gibt man den Befehl ohne „sudo“ und mit dem zusätzlichen Argument „–unprivileged“ ein:

$ cd pkgsrc/bootstrap
$ ./bootstrap --ignore-case-check --unprivileged

Dabei wird im ersten Fall das neue Verzeichnis „/usr/pkg/“ und im zweiten Fall „/Users/<Benutzername>/pkg/“ angelegt. 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:

$ echo 'export PATH=/usr/pkg/bin:$PATH' >> ~/.bash_profile

oder

$ echo 'export PATH=$HOME/pkg/bin:$PATH' >> ~/.bash_profile

Das Terminal muss neu gestartet werden, damit die Datei „.bash_profile“ geladen wird. Alternativ reicht auch ein „export PATH=/usr/pkg/bin:$PATH“ aus, um die Umgebungsvariable schon für die aktuelle Sitzung zu erweitern.

Nach einem erfolgreichen Bootstrap hat man nun alle Programme, die man braucht, um Programmpakete zu installieren. Um das zu testen, kann man im Terminal „bmake“ eingeben. Wenn die Ausgabe „bmake: no target to make.“ ist, kann man loslegen. Wenn die Ausgabe aber sagt, dass der Befehl „bmake“ nicht gefunden wird, sollte man nochmal den Pfad seiner Umgebungsvariable überprüfen.

Um nun ein Programm mit pkgsrc zu installieren, wechselt man in das Verzeichnis mit dem pkgsrc repository und führt „bmake“ aus. Wenn man pkgsrc auf einem anderen System als NetBSD verwendet, muss man „bmake“ anstelle von „make“ verwenden, damit das Programm korrekt installiert wird, da „bmake“ die BSD-Variante von „make“ ist.

$ cd pkgsrc/misc/figlet
$ sudo bmake install clean

Wenn man sich für die Variante ohne Administrationsrechte entschieden hat, lässt man „sudo“ natürlich weg.

Pkgsrc

Und so sieht es dann aus, wenn man nach der Installation „figlet Mac OS X“ aufruft.

Geschrieben in MacOS X und iPhone