Programmpakete richtig konvertieren

Aus LinuxUser 01/2010

Programmpakete richtig konvertieren

© ddraw, 123rf.com

Gestaltwandler

Wenn sich eine aktuelle Software nur im Repository einer anderen Distribution findet, hilft Alien, das Paket sauber ins eigene System einzupassen.

Endlich beherrscht die neueste Version einer Software das gewünschte Feature – doch das Paket findet sich nur im Repository eines anderen Systems. Der Grund dafür liegt nicht selten in der Tatsache, dass sich der Maintainer der Software nur mit einem speziellen System gut auskennt und nur dafür ein Paket baut. Ansonsten überlässt er den Distributoren das Bereitstellen des Paketes. Möchten Sie nicht solange warten, nehmen Sie Alien [1] zur Hand.

Im Kern vieler Linux-Systeme sorgt ein Paketmanagement für Softwarekonsistenz (siehe Kasten “Pakete im Griff”). Debian und Ubuntu verwenden Dpkg [2]; das Suffix .deb kennzeichnet diese Programmpakete. Red Hat, Fedora, (Open-)Suse, Mandriva und andere Distributionen nutzen das RPM-Format [3], dessen Programmpakete analog auf .rpm enden.

Pakete im Griff

Die Existenz unterschiedlicher, nicht ganz kompatibler Paketmanagementsysteme [7] liegt in der Linux-Historie begründet. Grundsätzlich sprechen aber gute Gründe für ein Paketmanagement. Zum einen vereinfacht es die Installation eines Programms, wobei es meist auch die Abhängigkeiten (andere Programme oder Bibliotheken) berücksichtigt. Zum anderen fallen auch Aktualisierungen und das Entfernen nicht mehr benötigter Software leichter. Darüber hinaus bietet ein Paketmanagementsystem die Möglichkeit, temporär Platz auf der Festplatte zu schaffen. Außerdem hilft es beim Analysieren von Fehlern: Behebt das Entfernen eines Programms das Problem? Falls nicht, dann kann man die Software beruhigt wieder installieren.

Der Parallelbetrieb mehrerer Paketverwaltungen auf einem System mündet in einem völligen Chaos, da unklar wäre, mit welcher davon Sie ein Programm installiert haben und ob das System nicht bereits die notwendigen Abhängigkeiten erfüllt. Versuchen Sie, ein RPM-Paket auf einem Debian-System zu installieren, erhalten Sie eine Meldung wie in Listing 1.

# rpm -i testprog-9.9.8-1.x86_64.rpm
rpm: please use alien to install rpm packages on Debian, if you are really sure use --force-debian switch. See README.Debian for more details.

Hier kommt das Werkzeug Alien (engl: “fremd, Fremdling, Ausländer”) ins Spiel. Es ermöglicht, Pakete aus dem einen in das jeweils andere System zu integrieren, indem es sie ins native Paketformat umwandelt. Zwar gilt Alien als experimentelle Software, doch setzen viele Nutzer das Programm schon länger erfolgreich ein.

Alien im Detail

Alien gibt es für die meisten Linux-Distributionen, es kommt vielfach aber nur auf Debian- oder Ubuntu-Systemen zum Einsatz. Sein Haupteinsatzgebiet liegt darin, ein Paketformat in ein anderes zu konvertieren. Das eigentliche Umwandeln verläuft vergleichsweise trivial (siehe Kasten “Unter der Haube”)

Hinter einem DEB-Paket verbirgt sich eigentlich ein Ar-Archiv [4], das sich aus der Beschreibung und Informationen über die Abhängigkeiten, verschiedenen Skripten sowie den eigentlichen Programmdateien zusammensetzt. Ähnlich verhält es sich mit RPM. Noch simpler ist das im Unix-Umfeld am weitesten verbreitete Tar-Format.

Weil es sich um freie und gut dokumentierte Format handelt, stehen die Chancen für das erfolgreiche Konvertieren gut. Beim Umwandeln sollten nach Möglichkeit folgende Bestandteile erhalten bleiben:

  • die Paketbeschreibungen, so dass Sie später im Paketmanagement erkennen, um was für eine Software es sich handelt, wer der Autor ist oder wo Sie die Homepage finden,
  • die Informationsdateien, die beschreiben, wie Sie das Paket wieder entfernen oder aktualisieren – und was dabei gegebenenfalls zu tun wäre,
  • die Informationen über Abhängigkeiten zu anderer Software,
  • die Angabe der Prozessorarchitektur im Dateinamen, wie etwa amd64 bei DEB-Paketen und x86_64 bei RPMs.

Es empfiehlt sich, die Alien-Version der eigenen Distribution zum Import von Fremdformaten einzusetzen. Sie ist stets am besten angepasst, um weitere Software optimal in das eigene System zu integrieren und dabei dessen Eigenheiten zu berücksichtigen.

Unter der Haube

Da Alien in Perl geschrieben wurde, steht einem Blick in die Interna nichts im Wege. Sie können also jederzeit nachsehen, was es tut und wie es das anstellt. Weitere Informationen zu Alien finden Sie im Buch “Das Debian-System” von Martin F. Krafft [8] oder in Heike Jurziks Beitrag “Pakete umwandeln mit Alien” [9].

Schlichte Eleganz

Ein kleines Beispiel soll die Funktionsweise von Alien verdeutlichen: Von der Software testprog existiert nur ein RPM-Paket. Das passt nicht zu einem einem Debian-basiertes System. Der Aufruf alien testprog-9.9.8-1.x86_64.rpm konvertiert das RPM-Paket nach testprog_9.9.8-2_amd64.deb – ganz ohne weitere Optionen.

Das Quellformat ließ sich aufgrund der Endung .rpm eindeutig bestimmen, und als Zielformat verwendet Alien, wenn nicht anders angegeben, ein DEB-Paket (System des Hosts, auf dem die Software läuft). Das umgewandelte Paket installieren Sie danach wie üblich mit dpkg -i testprog_9.9.8-2_amd64.deb. Das Listing 2 zeigt den kompletten Ablauf. Beachten Sie, das Alien die Unterversionsnummern automatisch um eins hochzählt. Das Verhalten passen Sie mit der Option -k, oder --bump=Nummer an Ihre Bedürfnisse an.

$ cd /tmp
$ wget http://example.com/testprog-9.9.8-1.x86_64.rpm
$ su                                 # Root werden
# alien testprog-9.9.8-1.x86_64.rpm  # Paket umwandeln
# dpkg -i testprog_9.9.8-2_amd64.de  # Paket installieren
# exit                               # User wechseln
$ ./testprog                         # Prüfen, ob es läuft.
$ su                                 # Root werden
# mkdir /usr/src/testprog            # Verzeichnis erstellen
# mv testprog* $_                    # Daten verschieben
# exit                               # User wechseln

Optionen

Für die meisten Alien-Optionen gibt es eine schnell zu tippende Kurzform und eine selbsterklärende Langform. Die Option zum Erzeugen von TGZ-Archiven lautet -t>, die Langform dazu --to-tgz. Zum automatischen Anpassen von Startup-Skripten und Pfaden gemäß dem File Hierarchy Standard (FHS) [5] gibt es eine Reihe von Optionen (--patch=Datei, --anypatch und --nopatch).

Bestehende Pre- und Post-Install- sowie Remove-Skripte bleiben erhalten, sofern Sie im Aufruf die Option -c mit angeben. Weitere Optionen wie --test, --description="Beschreibung", --generate und --veryverbose dokumentiert das Handbuch zu Alien ausführlich. Die beiden letztgenannten Optionen helfen dabei, Problemen beim Umwandeln auf die Spur zu kommen.

Systemspezifische Modifikationen von Startup-Prozessen (/etc/init.d/ und entsprechende symbolische Links) nimmt Alien nicht vor – hier müssen Sie gegebenenfalls selbst Hand anlegen. Gewinnen Sie dabei allgemein verwertbare Erkenntnisse, stoßen Sie beim Projekt damit jederzeit auf offene Ohren.

Praktisches Beispiel

Überlegen Sie zum Beispiel Nmap, ein Werkzeug zur Netzwerkanalyse [6], auf einem System zu integrieren, bei dem es sich nicht in den Repositories findet, lohnt sich der Griff zu Alien. So haben Sie die Möglichkeit, das Programm im Einsatz zu sehen, bevor Sie es aufwändig aus den Quellen bauen.

Zunächst laden Sie das Nmap-Paket als RPM in ein vorbereitetes Verzeichnis. Danach rufen Sie Alien mit den Optionen --scripts und -g auf (Abbildung 1). Die erste Option versucht, die Skripte anzupassen, die Sie zur Installation und Deinstallation des Pakets benötigen. Es empfiehlt sich, sicherheitshalber die automatisch korrigierten Skripte vor dem Einsatz darauf zu prüfen, ob die enthaltenen Pfade stimmen. Die zweite Option legt ein temporäres Verzeichnis an, in dem Alien das Paket vor der Installation baut.

Abbildung 1: Nach dem Download geht es an die Testinstallation von Nmap.

Abbildung 1: Nach dem Download geht es an die Testinstallation von Nmap.

Danach prüfen Sie mittels ldd, ls und nachfolgender Versionsabfrage, ob sich die Software der Wahl mit Ihrem System verträgt. Sieht alles gut aus, erzeugen Sie ein Paket, das Sie wie gewohnt mittels dem vorhandenen Paketmanagement installieren.

Probleme beheben

Beim Einsatz von Alien treten mitunter Probleme auf, die ein Nachjustieren erforderlich machen: So gilt es manchmal, fehlende Abhängigkeiten von Hand nachzuziehen. Steht eine Bibliothek nicht bereit, hilft oft, die Dokumentation zur Software zu studieren: Oft führt diese auf, welche Versionen zum Einsatz kommen sollten und wo Sie diese finden. Manchmal steht die Library direkt auf der Homepage eines Projekts zum Herunterladen bereit.

Bei Programmen, die in einer Skriptsprache geschrieben sind, treten zwar generell weniger Probleme auf. Aber auch hier gilt: Falls es Abhängigkeiten gibt (zum Beispiel ein fehlendes Perl-Modul), heißt es auch hier nachinstallieren.

Generell läuft 64-Bit-Software nicht ohne Weiteres auf 32-Bit-Systemen – daran ändert auch Alien nichts. Dateinamensbezeichner wie _all (Debian-Notation) oder .noarch (bei RPM-Paketen) kommen in der Regel bei Skriptsprachen oder Dateien aus /usr/include/ zum Einsatz. Hier stehen die Chancen gut, dass diese ohne Korrekturen auf dem Zielsystem laufen.

Sicherheit

Verständlicherweise geht durch das Konvertieren vom Quellpaket ins Zielpaket eine vorhandene digitale Signatur verloren. Seien Sie deshalb wählerisch bei der Auswahl der Programme. Investieren Sie ein paar Minuten in die Recherche und suchen Sie im Netz die Originalquelle. Oft haben Maintainer die Programme mit einer GPG-Signatur versehen, gegen die Sie sie prüfen können.

Sorgfältige Arbeit vermeidet nicht nur mögliche Angriffe auf ein System, sondern spart auch Zeit: Manchmal ist das Original schon ein paar Versionen weiter als der zunächst gewählte, vermeintlich aktuelle Mirror.

Infos

[1] Alien: http://kitenet.net/~joey/code/alien/

[2] Dpkg, Apt & Co.: Christian Meyer, “Urgestein”, LinuxUser 01/2010, S. 56, https://www.linux-community.de/artikel/20085/

[3] RPM-Grundlagen: Thorsten Scherf, “Gut sortiert”, LinuxUser 01/2010, S. 42, https://www.linux-community.de/artikel/20085/

[4] Archivformat Ar: http://de.wikipedia.org/wiki/Ar_(Unix)

[5] Filesystem Hierarchy Standard: http://www.pathname.com/fhs/

[6] NMAP: http://nmap.org/download.html

[7] Paketverwaltung: http://de.wikipedia.org/wiki/Paketverwaltung

[8] Debian-Buch: Martin F. Krafft, “Das Debian-System – Konzepte und Methoden”, Open Source Press, ISBN 978-3-937514-17-8, http://debiansystem.infohttps://www.opensourcepress.de/index.php?26&backPID=15&tt_products=52

[9] Alien-Workshop: Heike Jurzik, “Pakete umwandeln mit Alien”, LinuxUser 07/2006, S. 56, http://www.linux-user.de/ausgabe/2006/07/056-alien/

LinuxUser 01/2010 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben