From Mageia wiki
Jump to: navigation, search


Drakconf multiflag.png
Andere Sprachen
Deutsch ; English
Einleitung:
alien ist eine Anwendung welche zu Red Hat rpm, Debian deb, Stampede slp, Slackware tgz und Solaris pkg Dateiformaten konvertiert. Falls Sie ein Paket von einer anderen Linux Distribution, welche Sie nicht auf Ihrem System installiert haben, verwenden möchten, können Sie alien verwenden um dieses in Ihr gewünschtes Paketformat umzuwandeln und zu installieren. Es unterstützt auch LSB Pakete.

Diese Seite behandelt auch Umwandlungen, welche nicht erfolgreich abgeschlossen wurden.

Betrachtung

Wir werden im ~/tmp Verzeichnis arbeiten, in welchem die .rpm und .deb Dateien für dieses Beispiel gespeichert wurden. Sie können auch ein anderes Verzeichnis verwenden.

Führen Sie fakeroot vor alien aus, damit alien ohne root-Rechte funktioniert.

rpm zu deb

Dies funktionierte seit den Mageia 8 tagen nicht sofort mga#28607, jedoch seit Mageia 9 und neuer, seitdem die aktualisierten Pakete zur Verfügung stehen, können wir einen Schritt aufführen, welche uns die Durchführung ermöglicht.

Die Umwandlung kann wie folgt fehlschlagen:

$ fakeroot alien --to-deb mc-4.8.29-1.mga9.x86_64.rpm

Package build failed. Here's the log: dh binary dh_update_autotools_config dh_autoreconf create-stamp debian/debhelper-build-stamp dh_testroot dh_prep debian/rules override_dh_auto_install make[1]: Entering directory '/home/katnatek/tmp/mc-4.8.29' mkdir -p debian/mc # Copy the packages's files. find . -maxdepth 1 -mindepth 1 -not -name debian -print0 | \ sed -e s#'./'##g | \ xargs -0 -r -i cp -a ./{} debian/mc/{} make[1]: Leaving directory '/home/katnatek/tmp/mc-4.8.29' dh_installdocs dh_installchangelogs dh_installman dh_installman: error: mv debian/mc/usr/share/man/es/man1/mc.1.xz.dh-new debian/mc/usr/share/man/es/man1/mc.1.xz: No such file or directory dh_installman: error: Aborting due to earlier error make: *** [debian/rules:7: binary] Error 25

Lösung:

$ fakeroot alien --to-deb mc-4.8.29-1.mga9.x86_64.rpm -s

Directory mc-4.8.29 prepared.

Bearbeiten Sie die Datei mc-4.8.29/debian/rules

Fügen Sie nach der Zeile 26 folgendes ein: override_dh_installman: und speichern Sie diese Änderung.

cd mc-4.8.29

fakeroot dh binary

Am Ende des Vorgangs werden Sie etwas ähnliches wie folgt sehen:

dpkg-gencontrol: warning: Depends field of package mc: substitution variable ${shlibs:Depends} used, but is not defined dpkg-gencontrol: warning: package mc: substitution variable ${perl:Depends} unused, but is defined dh_md5sums dh_builddeb dpkg-deb: building package 'mc' in '../mc_4.8.29-2_amd64.deb'.

deb zu rpm

Dieser Vorgang funktioniert für gewöhnlich sofort, wie bei deb von Debian:

fakeroot alien --to-rpm bash_5.2.15-2+b7_amd64.deb

Jedoch kann es bei manchen deb Dateien fehlschlagen.

$ fakeroot alien --to-rpm schildichat-desktop-alpha_1.11.97-sc.0.test.0_amd64.deb

Warning: Skipping conversion of scripts in package schildichat-desktop-alpha: postinst postrm Warning: Use the --scripts parameter to include the scripts. Package build failed. Here's the log of the command (cd schildichat-desktop-alpha-1.11.97~sc.0.test.0; rpmbuild --buildroot='/home/katnatek/tmp/schildichat-desktop-alpha-1.11.97~sc.0.test.0' -bb --target x86_64 'schildichat-desktop-alpha-1.11.97~sc.0.test.0-2.spec'): error: line 5: Empty tag: Summary: Building target platforms: x86_64 Building for target x86_64

Lösung:

$ fakeroot alien --to-rpm schildichat-desktop-alpha_1.11.97-sc.0.test.0_amd64.deb -s

Warning: Skipping conversion of scripts in package schildichat-desktop-alpha: postinst postrm Warning: Use the --scripts parameter to include the scripts. Directory schildichat-desktop-alpha-1.11.97~sc.0.test.0 prepared.

cd schildichat-desktop-alpha-1.11.97~sc.0.test.0

Bearbeiten Sie die spec Datei, fügen Sie die Informationen nach der Summary: Zeile ein und speichern Sie die Änderung.

rpmbuild -bb schildichat-desktop-alpha-1.11.97~sc.0.test.0-2.spec --define "_topdir $(pwd)"

Dies verursacht eine Menge an Fehlermeldung, wie:

File not found: /home/user/tmp/schildichat-desktop-alpha-1.11.97~sc.0.test.0/BUILDROOT/schildichat-desktop-alpha-1.11.97~sc.0.test.0-2.x86_64/opt/SchildiChatAlpha/v8_context_snapshot.bin

mkdir -p BUILDROOT/schildichat-desktop-alpha-1.11.97~sc.0.test.0-2.x86_64

Verschieben Sie das Verzeichnis oder die Verzeichnisse, welche nicht für die rpm Erstellung nötig sind (BUILD,BUILDROOT,SRPMS) nach BUILDROOT/schildichat-desktop-alpha-1.11.97~sc.0.test.0-2.x86_64

In diesem Fall opt und usr.

Kehren Sie, falls nötig, zurück zu ~/tmp/schildichat-desktop-alpha-1.11.97~sc.0.test.0

Führen Sie den Befehl erneut aus

rpmbuild -bb schildichat-desktop-alpha-1.11.97~sc.0.test.0-2.spec --define "_topdir $(pwd)"

Bitte beachten!
Im deb zu rpm Fall können Sie sehen, das es komplex ist diese per Hand zu beheben, da wir die Schritte für jede Umwandlung lernen und anpassen müssen.

Der Schlüssel ist das Verzeichnis BUILDROOT und der String zwischen dem ersten "/" und dem zweiten "/".