Den Begriff alien übersetzen Sie am ehesten mit fremd, Fremdling oder
Ausländer. alien heißt jedoch 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:
deb
-Paketen und x86_64 bei
rpm
-Archiven.
Diese Bestandteile benötigt die Paketverwaltung von Debian GNU/Linux, um die umgewandelten Softwarepakete korrekt in den Paketbestand einordnen zu können. Ohne die Informationen besteht bspw. keine Möglichkeit, die Abhängigkeiten zu anderen Softwarepaketen zu prüfen und sicherzustellen, dass alle benötigten Komponenten verfügbar sind und ggf. installiert werden können.
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:
alien
ein Perl-Skript ist
rpm
bzw. yum
aus den gleichnamigen Debianpaketen für
die Konvertierung von rpm
-Paketen nach deb
([Debian-Paket-rpm] und
[Debian-Paket-yum])
dpkg
, dpkg-dev
und debhelper
aus den Paketen
[Debian-Paket-dpkg], [Debian-Paket-dpkg-dev] und
[Debian-Paket-debhelper] zur Erzeugung von Debianpaketen
gcc
und make
([Debian-Paket-gcc] und
[Debian-Paket-make]), sofern Software im Quellcode vorliegt und aus
diesem zu übersetzen ist
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 gehören nicht dazu und könnten somit noch fehlen. Falls
letzteres zutrifft, installieren Sie diese über die Paketverwaltung nach
(siehe „Pakete installieren“ in Abschnitt 8.38, „Pakete installieren“).
Die Umwandlung eines rpm
-Pakets in ein deb
-Paket erfolgt mit Hilfe
des Werkzeugs alien
, der Angabe des gewünschten Paketformats sowie
über die originale Paketdatei. Das Paketformat geben Sie über den
Schalter -d
(Langform --to-deb
) an. 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
diesen können Sie somit im Aufruf weglassen. Darüberhinaus unterstützt
alien
noch die folgenden, weiteren Schalter zur Umwandlung zwischen
anderen Formaten:
-r
(Langform --to-rpm
)
rpm
-Paket
-t
(Langform --to-tgz
)
gzip
komprimiertes
tar
-Archiv (Erweiterung .tar.gz
), bspw. von der Linux-Distribution
Slackware genutzt
--to-slp
.slp
). Zu diesem Schalter besteht keine Kurzform.
-p
(Langform --to-pkg
)
.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 den beiden Kommandos dpkg --info
Paketname
und grep Depends
sehen Sie, welche Paketabhängigkeiten für das
umgewandelte Paket bestehen und erfüllt sein müssen, damit dieses
korrekt in ihr System eingespielt werden kann.
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) #
Aus der obigen Ausgabe ersehen Sie, dass das Paket mc von den fünf Bibliotheken Libc, Glib2, Gpm2, Slang2 und Ssh2 abhängt.
Bei der Umwandlung des Paketformats bestehen mehrere Fallstricke. Diese führen regelmäßig dazu, dass die umgewandelte Software nicht wie erhofft funktioniert:
Desweiteren haben deb
-basierte Systeme zudem ihre Eigenheiten. Die
folgenden Schalter von alien
helfen Ihnen dabei, auch mit weiteren
Sonderfällen bei der Umwandlung von Paketen klarzukommen:
--bump=
Wert
--version
. Erhöhe die Versionsnummer
des neuen Softwarepakets nicht um 1, sondern um den von ihnen im Aufruf
angegebenen Wert.
--description=
Beschreibung
tar.gz
-Dateien sinnvoll,
da diese normalerweise noch keine Paketbeschreibung beinhalten.
--fixperms
--patch=
Dateiname, --anypatch
und --nopatch
--target=
Architektur
--version=
Versionsnummer
tar.gz
-Dateien
sinnvoll, da diese normalerweise noch keine Versionsnummer beinhalten.
--veryverbose
-v
bzw. --verbose
-c
(Langform --scripts
)
-g
(Langform --generate
) und --veryverbose
-g
(Langform --generate
)
-k
(Langform --keep-version
)
alien
diese bei der Umwandlung um
eins hoch
-s
(Langform --single
)
-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
)
lintian
[Debian-Paket-lintian] (siehe „Qualitätskontrolle“ in
Kapitel 37, Qualitätskontrolle).
-v
(Langform --verbose
)
alien
gibt damit Informationen zu jedem einzelnen Schritt bei der
Umwandlung eines Paketes an
-V
(Langform --version
)
alien
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 aptitude
finden Sie das
Paket später in der Kategorie "Veraltete und selbst erstellte Pakete".
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
(oder --fix-broken
als Langform). Mit dem Schritt löst
APT alle bestehenden Abhängigkeiten auf und installiert dabei fehlende Pakete
nach.
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 ... #
Nach der Installation des Paketes löscht alien
die lokal vorliegende
Paketdatei.
Das Werkzeug alien
hilft ihnen dabei, Software verfügbar zu machen,
die es nicht für deb
-basierte Systeme gibt. Wir raten ihnen dazu,
dafür die Version der Software zu benutzen, 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].