Ricerca nel sito web

Come convertire il pacchetto RPM in DEB e da DEB in RPM utilizzando Alien


Come sicuramente già saprai, ci sono molti modi per installare software in Linux: utilizzando il sistema di gestione dei pacchetti fornito dalla tua distribuzione (aptitude, yum o zypper, per citare alcuni esempi), compilando dal sorgente (anche se in qualche modo raro di questi tempi, era l'unico metodo disponibile agli albori di Linux), o utilizzando uno strumento di basso livello come dpkg o rpm con .deb< e .rpm pacchetti autonomi e precompilati, rispettivamente.

In questo articolo ti presenteremo alien, uno strumento che converte tra diversi formati di pacchetti Linux, da .rpm a .deb (e viceversa viceversa) essendo l'uso più comune.

Questo strumento, anche quando il suo autore non lo mantiene più e dichiara nel suo sito web che alien probabilmente rimarrà sempre in stato sperimentale, può tornare utile se hai bisogno di un certo tipo di pacchetto ma riesci a trovare quel programma solo in un altro formato di pacchetto.

Ad esempio, alien mi ha salvato la giornata una volta mentre cercavo un driver .deb per una stampante a getto d'inchiostro e non sono riuscito a trovarne nessuno: il il produttore ha fornito solo un pacchetto .rpm. Ho installato Alien, convertito il pacchetto e in breve tempo sono stato in grado di utilizzare la mia stampante senza problemi.

Detto questo, dobbiamo chiarire che questa utility non deve essere utilizzata per sostituire file e librerie di sistema importanti poiché sono impostati in modo diverso a seconda delle distribuzioni. Utilizzare alien solo come ultima risorsa se i metodi di installazione suggeriti all'inizio di questo articolo non sono adatti al programma richiesto.

Ultimo ma non meno importante, dobbiamo notare che anche se in questo articolo utilizzeremo CentOS e Debian, è noto che alien funziona anche in Slackware e anche in Solaris, oltre alle prime due distribuzioni e alle rispettive famiglie.

Passaggio 1: installazione di Alien e dipendenze

Per installare alien in CentOS/RHEL 7, dovrai abilitare EPEL e Nux Repository Dextop (sì, è Dextop, non Desktop), in questo ordine:

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

L'ultima versione del pacchetto che abilita questo repository è attualmente 0.5 (pubblicata il 10 agosto 2015). Dovresti controllare http://li.nux.ro/download/nux/dextop/el7/x86_64/ per vedere se esiste una versione più recente prima di procedere ulteriormente:

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

Quindi fa,

yum update && yum install alien

In Fedora, dovrai solo eseguire l'ultimo comando.

In Debian e derivati, fai semplicemente:

aptitude install alien

Passaggio 2: conversione dal pacchetto .deb a .rpm

Per questo test abbiamo scelto dateutils, che fornisce una serie di utilità di data e ora per gestire grandi quantità di dati finanziari. Scaricheremo il pacchetto .deb sul nostro box CentOS 7, lo convertiremo in .rpm e lo installeremo:

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

Importante: (nota come, per impostazione predefinita, alien aumenta il numero di versione minore del pacchetto di destinazione. Se desideri ignorare questo comportamento, aggiungi – flag keep-version).

Se proviamo a installare subito il pacchetto, ci imbatteremo in un piccolo problema:

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

Per risolvere questo problema, abiliteremo il repository epel-testing e installeremo l'utilità rpmrebuild per modificare le impostazioni del pacchetto da ricostruire:

yum --enablerepo=epel-testing install rpmrebuild

Allora corri,

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

Che aprirà il tuo editor di testo predefinito. Vai alla sezione %files ed elimina le righe che fanno riferimento alle directory menzionate nel messaggio di errore, quindi salva il file ed esci:

Quando esci dal file ti verrà chiesto di continuare con la ricostruzione. Se scegli Y, il file verrà ricostruito nella directory specificata (diversa dalla directory di lavoro corrente):

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

Ora puoi procedere con l'installazione del pacchetto e verificare come al solito:

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

Infine, puoi elencare i singoli strumenti inclusi con dateutils e in alternativa controllare le rispettive pagine man:

ls -l /usr/bin | grep dateutils

Passaggio 3: conversione dal pacchetto .rpm a .deb

In questa sezione illustreremo come convertire da .rpm a .deb. In un box Debian Wheezy a 32 bit, scarichiamo il pacchetto .rpm per la shell zsh dal sistema operativo CentOS 6 forte> repository. Tieni presente che questa shell non è disponibile per impostazione predefinita in Debian e derivati.

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

Puoi tranquillamente ignorare i messaggi relativi a una firma mancante:

Dopo alcuni istanti, il file .deb dovrebbe essere stato generato ed essere pronto per l'installazione:

dpkg -i zsh_4.3.11-5_i386.deb

Dopo l'installazione, puoi verificare che zsh sia aggiunto all'elenco delle shell valide:

cat /etc/shells

Riepilogo

In questo articolo abbiamo spiegato come convertire da .rpm a .deb e viceversa per installare pacchetti come ultima risorsa quando tali programmi non sono disponibili nei repository o come codice sorgente distribuibile. Ti consigliamo di aggiungere questo articolo ai segnalibri perché tutti noi avremo bisogno di un alieno prima o poi.

Sentiti libero di condividere le tue opinioni su questo articolo utilizzando il modulo sottostante.