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.