Dependency tracking saugt

OpenSource ist ja was feines.. jeder kann sich ueberall bedienen und Code aus allen moeglichen Projekten in seinen eigenen Entwicklungen benutzen, man braucht nichts mehr schreiben was es nicht schon vorgefertigt von anderen Leuten gibt. Alles supertoll – hat nur einen gravierenden Nachteil: man faengt sich damit Abhaengigkeiten in grauenhaften Ausmassen ein, wenn das eigene Projekt an Komplexitaet zunimmt – und diese Komplexitaet laedt man dem Enduser auf. Mittlerweile artet jegliche Softwareinstallation auf allen Unixen in einem Dependency-Chaos aus, das der vor Jahren mal (eigentlich fuer Windows-Software) gepraegte Ausdruck DLL Hell nur unzureichend beschreibt. Jetzt ists halt eine .SO Hell.

Aktueller Fall: Auf einer Solaris 10-Maschine wird Image Magick benoetigt um JPEG-Dateien auf Validitaet zu pruefen. Tool der Wahl ist Blastwave’s pkg-get, weil es dependency tracking kann.

pkg-get install imagemagick….

Eine Stunde spaeter schaue ich ins Installationslog, und stelle fest dass ich um 65 Packages reicher bin, von denen exakt eine ImageMagick im Namen hat. An dieser Stelle stelle man sich einen gepflegten Kotzanfall vor.

Analyse des Debakels:
ImageMagick kann Postscript-Files lesen, also wird Ghostscript nachinstalliert.
Ghostscript kann drucken, also wird CUPS nachinstalliert.
CUPS bringt ein grafisches Druckvorschautool oder irgendsowas mit, also wird GTK2 nachinstalliert.
GTK2 braucht diverse andere Bibliotheken (Pango, glade, weissderteufelwasnoch), also wird fast ein kompletter GNOME nachinstalliert.
Diverse Features in gtk/Pango koennen uebers Netzwerk reden, also wird der komplette OpenSSL-Developerkit nachinstalliert.
GTK2 kann Text darstellen, also wird Freetype/Fontconfig nachinstalliert.
Irgendein Teil von GTK kann Files lesen, also wird das GNOME Virtual File System nachinstalliert.
Das Gnome VFS kennt viele Wege, User zu authentifizieren, also wird der komplette Kerberos- und OpenLDAP-Developerkit nachinstalliert.
Irgendwer aus diesem ganzen Wust an Paketen kann offenbar xml-Files lesen, also wird ein gutes Dutzend xml/css/irgendwas-ml Parser mit saemtlichen Bindings in alle moeglichen Sprachen nachinstalliert.
… und einige mehr deren Abhaengigkeiten irgendwo im sechsten oder siebten Grad liegen und die ich nicht weiter nachverfolgen konnte.

Wir erinnern uns… ich brauche ein Grafiktool um JPEG-Files zu analysieren.. und habe auf dem Weg dorthin also einen umfassenden Crypto-Devkit, einen neuen Windowmanager, einen Filesystemtreiber, einen GUI-Devkit und jede Menge *ML-Parser gewonnen. Das ist doch toll![tm]

Eine Stunde spaeter waren 90% der Pakete wieder manuell deinstalliert, und ImageMagick funktioniert immer noch.

Veröffentlicht in Job. 2 Comments »

2 Antworten to “Dependency tracking saugt”

  1. Zarquod Says:

    Und eigentlich wolltest du sowieso GraphicsMagick installieren, oder?😉

    Da ich gerade keine Zeit habe, selbst zu googlen: Welche Paket- und Repository-Formate verwendet pkg-get denn? DEB, RPM, was eigenes?

    Zumindest bei DEB gibt es ja meiner Erinnerung nach nicht nur harte Abhängigkeiten, sondern auch Vorschläge. Das hier klingt ganz so, als wären da teilweise solche weichen Abhängigkeiten mit reingezogen worden.

  2. Woo Says:

    Graph..wasfuernding? Nee, sollte schon ImageMagick sein – ist auch nicht verhandelbar😉
    pkg-get verwendet das Solaris-eigene .pkg-Format, das kann prinzipiell eigentlich gar keine Abhaengigkeiten.. bzw. kanns zwar, aber Sun hat dafuer nie einen brauchbaren Paketmanager a la dselect/apt rausgebracht. pkg-get ist schlicht ein apt-Nachbau vom Community SoftWare-Projekt (CSW), der das dependency tracking anhand statischer Listen macht. Und genau da liegt die Crux.. fuer jede installierte Package werden automatisch alle Dependencies in die Merkliste aufgenommen, da gibts keine soft-/hard-Unterscheidung. Sonst waer mir vermutlich einiges erspart geblieben😉
    Mir wuerds ja fuer den Anfang schon reichen, wenn pkg-get zumindest eine Rekursionstiefe kennen wuerde.. die Pakete die ich drauflassen musste, waren alles First Level Dependencies.
    Ich fands nur generell rantenswert, dass *IX durch diesen Dependency-Wildwuchs inzwischen die Windows DLL Hell um Laengen in der Ekelhaftigkeit abgehaengt hat.


Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ă„ndern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ă„ndern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ă„ndern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ă„ndern )

Verbinde mit %s

%d Bloggern gefÀllt das: