Sådan konverteres fra RPM til DEB og DEB til RPM-pakke ved hjælp af Alien


Som jeg er sikker på, at du allerede ved, er der mange måder at installere software i Linux: ved hjælp af pakkehåndteringssystemet leveret af din distribution (aptitude, yum eller zypper, for at nævne et par eksempler), kompilering fra kilde (dog noget sjældent i disse dage var det den eneste metode, der var tilgængelig i de tidlige dage af Linux) eller ved at bruge et lavt værktøj som f.eks. dpkg eller rpm med henholdsvis .deb og .rpm frittstående kompilerede pakker.

I denne artikel introducerer vi dig til alien, et værktøj, der konverterer mellem forskellige Linux-pakkeformater, hvor .rpm til .deb (og omvendt) er den mest almindelige anvendelse.

Dette værktøj, selv når dets forfatter ikke længere vedligeholder det og siger på sin hjemmeside, at udlænding altid sandsynligvis forbliver i eksperimentel status, kan komme til nytte, hvis du har brug for en bestemt type pakke, men kun kan finde det program i et andet pakkeformat.

For eksempel reddede alien min dag en gang, da jeg ledte efter en .deb-driver til en inkjetprinter og ikke kunne finde nogen - producenten leverede kun en .rpm-pakke. Jeg installerede alien, konverterede pakken, og inden længe var jeg i stand til at bruge min printer uden problemer.

Når det er sagt, skal vi præcisere, at dette værktøj ikke skal bruges til at erstatte vigtige systemfiler og biblioteker, da de er opsat forskelligt på tværs af distributioner. Brug kun rumvæsen som en sidste udvej, hvis de foreslåede installationsmetoder i begyndelsen af denne artikel er ude af spørgsmålet for det krævede program.

Sidst men ikke mindst skal vi bemærke, at selvom vi bruger CentOS og Debian i denne artikel, er alien også kendt for at arbejde i Slackware og endda i Solaris udover de første to distributioner og deres respektive familier.

Trin 1: Installation af fremmede og afhængigheder

For at installere rumvæsen i CentOS/RHEL 7 skal du aktivere EPEL- og Nux Dextop (ja, det er Dextop - ikke Desktop) -lagre i den rækkefølge:

# yum install epel-release
# rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

Den seneste version af pakken, der aktiverer dette lager, er i øjeblikket 0,5 (offentliggjort den 10. august 2015). Du bør tjekke http://li.nux.ro/download/nux/dextop/el7/x86_64/ for at se, om der er en nyere version, inden du fortsætter videre:

# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

så gør,

# yum update && yum install alien

I Fedora skal du kun køre den sidste kommando.

I Debian og derivater skal du blot:

# aptitude install alien

Trin 2: Konvertering fra .deb til .rpm-pakke

Til denne test har vi valgt dateutils, der giver et sæt dato- og tidsværktøjer til at håndtere store mængder økonomiske data. Vi downloader .deb-pakken til vores CentOS 7-boks, konverterer den til .rpm og installerer den:

# cat /etc/centos-release
# wget http://ftp.us.debian.org/debian/pool/main/d/dateutils/dateutils_0.3.1-1.1_amd64.deb
# alien --to-rpm --scripts dateutils_0.3.1-1.1_amd64.deb

Vigtigt: (Vær opmærksom på, hvordan alien som standard øger versionens mindre antal for målpakken. Hvis du vil tilsidesætte denne adfærd, skal du tilføje –keep-version flag).

Hvis vi prøver at installere pakken med det samme, får vi et lille problem:

# rpm -Uvh dateutils-0.3.1-2.1.x86_64.rpm 

For at løse dette problem vil vi aktivere epel-test repository og installere rpmrebuild-værktøjet til at redigere indstillingerne for pakken, der skal genopbygges:

# yum --enablerepo=epel-testing install rpmrebuild

Så løb,

# rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm

Hvilket åbner din standardteksteditor. Gå til sektionen % filer og slet de linjer, der refererer til de mapper, der er nævnt i fejlmeddelelsen, og gem derefter filen, og afslut:

Når du afslutter filen, bliver du bedt om at fortsætte med genopbygningen. Hvis du vælger Y, genopbygges filen til den angivne mappe (forskellig fra den aktuelle arbejdsmappe):

# rpmrebuild –pe dateutils-0.3.1-2.1.x86_64.rpm

Nu kan du fortsætte med at installere pakken og kontrollere som normalt:

# rpm -Uvh /root/rpmbuild/RPMS/x86_64/dateutils-0.3.1-2.1.x86_64.rpm
# rpm -qa | grep dateutils

Endelig kan du liste de enkelte værktøjer, der fulgte med dateutils og alternativt kontrollere deres respektive man-sider:

# ls -l /usr/bin | grep dateutils

Trin 3: Konvertering fra .rpm til .deb-pakke

I dette afsnit vil vi illustrere, hvordan man konverterer fra .rpm til .deb. I en 32-bit Debian Wheezy-boks, lad os downloade .rpm-pakken til zsh-skallen fra CentOS 6 OS-arkivet. Bemærk, at denne shell ikke er tilgængelig som standard i Debian og derivater.

# cat /etc/shells
# lsb_release -a | tail -n 4
# wget http://mirror.centos.org/centos/6/os/i386/Packages/zsh-4.3.11-4.el6.centos.i686.rpm
# alien --to-deb --scripts zsh-4.3.11-4.el6.centos.i686.rpm

Du kan sikkert se bort fra meddelelserne om en manglende signatur:

Efter et par øjeblikke skulle .deb-filen have været genereret og være klar til installation:

# dpkg -i zsh_4.3.11-5_i386.deb

Efter installationen kan du kontrollere, at zsh føjes til listen over gyldige skaller:

# cat /etc/shells

Resumé

I denne artikel har vi forklaret, hvordan man konverterer fra .rpm til .deb og omvendt for at installere pakker som en sidste udvej, når sådanne programmer ikke er tilgængelige i arkiverne eller som distribuerbar kildekode. Du vil gerne bogmærke denne artikel, fordi vi alle har brug for fremmede på et eller andet tidspunkt.

Del gerne dine tanker om denne artikel ved hjælp af nedenstående formular.