23.2. Fremdformate mit alien hinzufügen

23.2.1. Einführung

Den Begriff alien übersetzen Sie am ehesten mit fremd, Fremdling oder Ausländer. alien heißt auch das gleichnamige Debianpaket [Debian-Paket-alien]. Es hilft Ihnen, eine Software, welche nicht als deb-Paket vorliegt, entsprechend umzuwandeln und für Ihre Debian-Installation vorzubereiten.

Wie bereits in „Gestaltwandler. Programmpakete richtig konvertieren“ [Hofmann-Osterried-Alien-LinuxUser] beschrieben, sollten bei der Umwandlung des Pakets nach Möglichkeit die folgenden Bestandteile erhalten bleiben:

die Paketbeschreibungen
damit erkennen Sie später über die Paketverwaltung, um was für eine Software es sich handelt, wer der Autor ist oder wo sich die dazugehörige Homepage des Projekts befindet.
die Informationsdateien
diese beschreiben, wie Sie das Paket wieder entfernen oder aktualisieren. Häufig befinden sich auch Hinweise dabei, die benennen, was dabei gegebenenfalls zu beachten ist.
Paketabhängigkeiten
die Informationen über Abhängigkeiten zu anderer Software.
Architektur oder Plattform
die Angabe der Prozessorarchitektur im Dateinamen, wie etwa amd64 bei deb-Paketen und x86_64 bei rpm-Archiven.

Bei der Umwandlung des Paketformats bestehen mehrere Fallstricke. Diese führen regelmäßig dazu, dass die gewünschte Software nicht wie erhofft funktioniert:

  • die referenzierten Bibliotheken passen gar nicht, nicht mehr (sind bspw. veraltet) oder sind nicht auffindbar (sind bspw. nicht installiert oder haben einen anderen Paketnamen)
  • die angegebenen Pfade im Originalpaket stimmen nicht mit Ihrer lokalen Verzeichnisstruktur oder der von Debian genutzten Struktur überein
  • der Binärcode passt nicht zu Ihrer genutzten Plattform und Architektur
  • das Format der Konfiguration sorgt für Ärger, bspw. die verfügbaren Optionen und Schalter
  • es bestehen Konflikte mit anderer, bereits installierter Software

Verwenden Sie daher möglichst die Version der Software, die auch zu Ihrer Distribution und Architektur passt. Diese lässt sich i.d.R. am einfachsten in Ihren Softwarebestand integrieren. Weitere Informationen dazu finden auf der Projektwebseite von alien [alien].

23.2.2. Pakete umwandeln

Voraussetzungen

Damit Ihnen das Umwandeln von bestehenden Paketen in das deb-Format gelingt, müssen ein paar Voraussetzungen erfüllt sein. Für alien benötigen Sie:

Die beiden Pakete perl und dpkg gehören zu den essentiellen Paketen und sind somit stets bereits auf ihrer Debian-Installation vorhanden. Die anderen genannten Pakete könnten noch fehlen. Falls letzteres zutrifft, installieren Sie diese über die Paketverwaltung nach (siehe „Pakete installieren“ in Abschnitt 8.37, „Pakete installieren“).

Durchführung

Die Umwandlung eines rpm-Pakets in ein deb-Paket erfolgt mit Hilfe des Werkzeugs alien und der Angabe des Paketformats über den Schalter -d (Langform --to-deb). Nachfolgend demonstrieren wir Ihnen das anhand des Pakets mc für den Midnight Commander [mc]:

Umwandlung eines rpm-Pakets in ein deb-Paket. 

# alien -d mc-4.8.22-1.mga7.x86_64.rpm
mc_4.8.22-2_amd64.deb generated
#

Der Schalter -d ist der von alien angenommene Standardfall und kann im Aufruf weggelassen werden. alien unterstützt ebenso noch die folgenden, weiteren Schalter zur Umwandlung zwischen anderen Formaten:

-r (Langform --to-rpm)
Umwandlung in ein rpm-Paket
-t (Langform --to-tgz)
Umwandlung in ein mit gzip komprimiertes tar-Archiv (Erweiterung .tar.gz), bspw. von der Linux-Distribution Slackware genutzt
--to-slp
Umwandlung nach Paketen für Stampede Linux [stampedeLinux] (Erweiterung .slp). Zu diesem Schalter besteht keine Kurzform.
-p (Langform --to-pkg)
Umwandlung zu (Open)Solaris-Paketen mit der Erweiterung .pkg (siehe [Solaris] und [OpenSolaris]).

Am Ende überprüfen Sie das Paket, um sicherzugehen, dass es auch tatsächlich zu ihrer bestehenden Installation passt. Dabei hilft Ihnen der Schalter -c (Langform --contents) von dpkg, um zu erkennen, an welche Stellen in ihrer Installation die einzelnen Komponenten des neuen Pakets installiert werden.

Wohin wird der Paketinhalt installiert. 

# dpkg --contents mc_4.8.22-2_amd64.deb
drwxr-xr-x root/root         0 2019-11-16 12:11 ./
drwxr-xr-x root/root         0 2019-11-16 12:11 ./etc/
drwxr-xr-x root/root         0 2019-11-16 12:11 ./etc/profile.d/
-rw-r--r-- root/root       153 2019-01-01 18:36 ./etc/profile.d/20mc.sh
-rw-r--r-- root/root        49 2019-01-01 18:36 ./etc/profile.d/20mc.csh
drwxr-xr-x root/root         0 2019-11-16 12:11 ./etc/mc/
-rw-r--r-- root/root     21874 2019-01-01 18:35 ./etc/mc/mc.ext
-rwxr-xr-x root/root       791 2018-12-28 20:35 ./etc/mc/edit.indent.rc
...
#

Mit einer Kombination aus dpkg --info ` 'Pakename' und `grep Depends sehen Sie, welche Paketabhängigkeiten bestehen und erfüllt sein müssen.

Abhängigkeiten von einem umgewandelten Paket. 

# dpkg --info mc_4.8.22-2_amd64.deb | grep Depends
 Depends: libc6 (>= 2.15), libglib2.0-0 (>= 2.35.9), libgpm2 (>= 1.20.4), libslang2 (>= 2.2.4), libssh2-1 (>= 1.2.8)
#

Besonderheiten bei der Umwandlung

deb-basierte Systeme haben ihre Eigenheiten. Die folgenden Schalter von alien helfen Ihnen, auch mit Sonderfällen bei der Umwandlung von Paketen klarzukommen:

--bump=Wert
ähnlich zu --version. Erhöhe die Versionsnummer nicht um 1, sondern um den angegebenen Wert.
--description=Beschreibung
Füge dem neuen Paket die genannte Beschreibung hinzu. Das ist insbesondere bei tar.gz-Dateien sinnvoll, da diese normalerweise noch keine Paketbeschreibung beinhalten.
--fixperms
bringe alle Angaben zu den Berechtigungen und den Eigentümern in Ordnung
--patch=Dateiname, --anypatch und --nopatch
automatisches Anpassen von Startup-Skripten und Pfaden gemäß dem File Hierarchy Standard (FHS)
--target=Architektur
setze die Plattform für das Paket auf den angegebenen Wert. Siehe Abschnitt 1.2, „Debian-Architekturen“ zu weiteren Angaben zur Plattform bzw. Architektur eines Paketes
--version=Versionsnummer
Füge dem neuen Paket die angegebene Versionsnummer hinzu. Das ist insbesondere bei tar.gz-Dateien sinnvoll, da diese normalerweise noch keine Versionsnummer beinhalten.
--veryverbose
noch ausführlicher als -v bzw. --verbose
-c (Langform --scripts)
bestehende Pre- und Post-Install- sowie Remove-Skripte eines Paketes erhalten
-g (Langform --generate) und --veryverbose
erweitern der Fehlersuche
-g (Langform --generate)
das Paket vor der Umwandlung noch bearbeiten. Der Schalter erzeugt ein Verzeichnis mit dem Paketinhalt und ermöglicht Ihnen damit die Ergänzung und Korrektur des Paketinhalts, bevor daraus ein neues Paket gebaut wird.
-k (Langform --keep-version)
die Versionsnummer des Paketes beibehalten. Normalerweise zählt alien diese bei der Umwandlung um eins hoch
-s (Langform --single)
wie -g, aber ohne das Verzeichnis packagename.orig zu erstellen. Der Schalter ist nützlich, wenn Sie ein Debianpaket erstellen möchten und zu wenig Speicherplatz zur Verfügung haben.
-T (Langform --test)
teste das erzeugte Debianpaket mit lintian [Debian-Paket-lintian] (siehe „Qualitätskontrolle“ in Kapitel 37, Qualitätskontrolle).
-v (Langform --verbose)
aktiviere die ausführliche Ausgabe. alien gibt damit Informationen zu jedem einzelnen Schritt bei der Umwandlung eines Paketes an
-V (Langform --version)
Ausgabe der Version von alien

23.2.3. Umgewandelte Pakete einspielen

Haben Sie das Paket erfolgreich in das deb-Format umgewandelt, spielen Sie dieses mittels dpkg -i paketname.deb ein. APT und aptitude bekommen von der Aktion erstmal nichts mit, stören sich aber nicht daran, dass das Paket eingespielt ist.

Bei diesem Schritt können mehrere Ergebnisse eintreten — alles geht glatt und die eingespielte Software funktioniert, alles geht glatt und Software funktioniert nicht, oder das Einspielen geht komplett schief. Da bleibt nur manuelle Nacharbeitung. Ursache dafür sind in der Regel Abhängigkeitsprobleme zu anderen Paketen. Diese Probleme beheben Sie mit dem Aufruf von apt-get install -f. Mit dem Schritt löst APT alle bestehenden Abhängigkeiten auf und installiert dabei fehlende Pakete nach.

23.2.4. Pakete umwandeln und einspielen

In den obigen Schritten in „Durchführung“ und Abschnitt 23.2.3, „Umgewandelte Pakete einspielen“ haben Sie zuerst ein Paket umgewandelt und danach installiert. alien kann jedoch auch beide Schritte in einem Rutsch durchführen — ein Paket von rpm nach deb umwandeln und danach gleich auf ihrem System einspielen. Dazu benutzen Sie den Schalter -i (Langform --install).

Das Paket paket.rpm mit alien umwandeln und einspielen. 

# alien -i paket.rpm
...
#

Anmerkung

Nach der Installation des Paketes löscht alien die lokal vorliegende Paketdatei.