Die Paketverwaltung war bisher immer einer der großen Kritikpunkte in Solaris: Zwar gab es Pakete, die auch Abhängigkeite kannten, allerdings war pkgadd nicht in der Lage, aus einem Repository fehlende Pakete nachzuladen. Pkgrm konnte nur anzeigen, welche Pakete von einem zu entfernenden Paket benötigt werden. Einen ganzen Strang automatisch zu entfernen war somit ebenfalls nicht möglich.
OpenSolaris 2008.05 - genauer gesagt
Project Indiana enthält das neue Paketierungsverfahren
Image Pakaging System (IPS). Benutzer, die den
Nevada-Builds folgen, müssen IPS erstmal nachinstallieren. Das ist aber garnicht so schwer. Sun Mitarbeiter
Jyri Virkki hat dazu eine kleine
Zusamenfassung geschrieben (Englisch). Die eigentliche Installation sieht folgendermaßen aus:
% hg clone ssh://anon@hg.opensolaris.org/hg/pkg/gate
% cd gate/src
% make
% make install
% su
# make link
Danach steht auch dem Nevada-User der Befehl
pkg zur Verfügung.
pkg ist der zentrale Dreh- und Angelpunkt der Paketverwaltung, hier werden Repositories gepflegt, Pakete installiert, deinstalliert und aktualisiert.
ImagesDas
Image im Namen unterscheidet IPS dabei von anderen Systemen, die ich bisher gesehen habe. So ganz genau weiß ich auch noch nicht, was ich mir unter dem Begriff Image vorstellen soll, bzw. was man genau alles damit anfangen kann. Bevor man mit IPS arbeiten kann, muss man aber eines erstellen, z.B. via
# pkg image-create --full -a opensolaris.org=http://pkg.opensolaris.org /
In diesem Fall wurde ein
full image für das System erzeugt.
AuthoritiesJedes Image ist mit einem
Package Depot Server verknüpft, der auch als
Authority bezeichnet wird. Das -a im letzten Befehl hat eine solche Authority mit dem Namen
opensolaris.org erstellt, wobei
http://pkg.opensolaris.org der eigentliche Server ist. Die URL läßt sich übrigens auch im Browser aufrufen, man erhält dann eine Seite mit Status des Repositories sowie eine Liste der enthaltenen Pakete.
Man kann zusätzliche Authorities erstellen, im Falle von
opensolaris.org mittels
# pkg set-authority -O http://pkg.opensolaris.org opensolaris.org
Um zu sehen, welche Authorities man angelegt hat, reicht ein einfacher
# pkg authority
UTHORITY URL
opensolaris.org (preferred) http://pkg.opensolaris.org/
Pakete suchenWenn man erstmal soweit ist, geht in Richtung Paketinstallation. Interessant wäre es jetzt, das Repository durchsuchen zu können. In der Tat steht einem dafür der Befehl
pkg search zur Verfügung. Meine Erwartung wäre jetzt gewesen, dass der Befehl nach Paketnamen sucht. IPS durchsucht aber die Pakete nach dem Suchstring. Das kann irritierend sein.
Ausserdem kann pkg sowohl die lokal installierten Pakete durchsuchen, wie auch den entfernten Server. Ersteres ist übrigens die Voreinstellung. Wer also etwas zur Installation sucht, sollte entsprechend vorbereitet sein. Hier mal einige Beispiele:
# pkg search vim
# pkg search -r vim
INDEX ACTION VALUE PACKAGE
basename dir usr/demo/mercurial/vim pkg:/SUNWmercurial@0.9.5-0.86
basename dir usr/demo/mercurial/vim pkg:/SUNWmercurial@0.9.5-0.79
basename dir usr/demo/mercurial/vim pkg:/SUNWmercurial@0.9.3-0.75
basename dir usr/demo/mercurial/vim pkg:/SUNWmercurial@0.9.5-0.86
basename file usr/bin/vim pkg:/SUNWvim@7.1.145-0.86
basename file usr/bin/vim pkg:/SUNWvim@7.1.145-0.86
basename file usr/bin/vim pkg:/SUNWvim@7.1.145-0.79
basename dir usr/demo/mercurial/vim pkg:/SUNWmercurial@1.0-0.89
basename file usr/bin/vim pkg:/SUNWvim@7.1.284-0.89
basename dir usr/demo/mercurial/vim pkg:/SUNWmercurial@1.0-0.90
basename file usr/bin/vim pkg:/SUNWvim@7.1.284-0.90
basename dir usr/demo/mercurial/vim pkg:/SUNWmercurial@1.0-0.91
basename file usr/bin/vim pkg:/SUNWvim@7.1.284-0.91
Mit dem ersten Befehl habe ich nach vim gesucht, bin aber nicht fündig geworden. Mit -r sucht man im Repository des Servers ("remote"). Hier ist pkg direkt mehrmals fündig geworden. Dabei ist die letzte Spalte interessant: Hier findet sich die
FMRI, Fault Management Resource Identifier, ein eindeutige Identifizierung des Pakets mitsamt Namen und Versionsnummer. FMRIs findet man auch an anderer Stelle im Solaris, z.B. die Fehlercodes des SMFs.
Pakete listen
Der Suchbefehl taugt also nur wirklich, wenn man nach Paketinhalten sucht oder zufälligerweise nach Paketen sucht, wo der Paketname auch der Name des Binaries ist, das man eigentlich verwenden will. Bei großen Paketen wird das aber unübersichtlich, wer möchte, kann das gerne mit mit "firefox" als Suchbegriff probieren...
Alternativ kann man auch aber den Befehl
pkg list verwendet. In seiner Grundfunktion ist der dazu gedacht, die installierten Pakete aufzulisten. Das kann man schon als intuitiv bezeichnen. Die Option
-a zeigt dann auch alle Pakete an, und gibt einem somit die Möglichkeit nach dem gewünschten zu greppen:
# pkg list -a |grep vim
SUNWvim 7.1.145-0.79 known ----
SUNWvim 7.1.145-0.86 known ----
SUNWvim 7.1.145-0.86 known ----
SUNWvim 7.1.284-0.89 known ----
SUNWvim 7.1.284-0.90 known ----
SUNWvim 7.1.284-0.91 known -
Ist zumindest übersichtlicher.
Na endlich: Pakete installieren
Hat man sein Paket gefunden, reicht einfacherweise ein
pkg install aus, wobei die Option
-nv nützlich ist um zu schauen, was alles mit installiert wird:
# pkg install -nv SUNWvim
Before evaluation:
UNEVALUATED:
+pkg:/SUNWvim@7.1.284,5.11-0.91:20080613T180507Z
After evaluation:
None -> pkg:/SUNWvim@7.1.284,5.11-0.91:20080613T180507Z
None
# pkg install SUNWvim
DOWNLOAD PKGS FILES XFER (MB)
Completed 1/1 1300/1300 16.88/16.88
PHASE ACTIONS
Install Phase 1345/1345
pkg installiert also immer die aktuellste Version des Paketes.
Man kann übrigens alternativ auch die FMRI aus dem
pkg search-Ergebnis nehmen, um eine bestimmte Version zu installieren.
cptsalek - 2. Jul, 12:34