Alien: come convertire i pacchetti deb in rpm e viceversa

Oggi un post senza introduzione. Questo passa il convento! Ah, conosci Alien?

 

 

COSA SONO I PACCHETTI
Appena ci approcciamo al mondo Linux, ci troviamo inevitabilmente ad armeggiare con i pacchetti -- package. Il nome risulta strano e diverso dall'altra metà del cielo (windows) che non li utilizza e che, anzi, non ha una gestione del software così radicata all'interno del sistema operativo.
Per definizione i package in Linux sono lo strumento con cui viene installato, configurato e verificato il nuovo software, come esso viene rimosso e più in generale gestito.
Un pacchetto quindi conterrà i file che compongono il programma vero e proprio, i file di configurazione e tutto ciò che necessita per la localizzazione della lingua e infine gli script di installazione.

Nel panorama Linux troviamo principalmente due famiglie di pacchetti:

  • deb: sono i pacchetti che riguardano i sistemi basati su Debian.
  • rpm: che sta per Red hat Package Manager, ed è installabile sui sistemi derivati da Suse e Red Hat.

I pacchetti per essere gestiti appositamente, hanno bisogno del Package Manager ossia un programma che permette di installare, rimuovere e gestire in toto tutti i pacchetti, le relative dipendenze e eventuali conflitti.

 

 

COME MAI LINUX SI BASA A PACCHETTI
Tutta questa strutturazione è imposta in modo da raggiungere l'obiettivo dell'atomicità durante la gestione del software di sistema.
Dovete sapere che nell'informatica il concetto di atomicità è un parolone. Il concetto di per sé è molto semplice: per atomicità di un'operazione (es: installare un programma) si intende che la stessa venga eseguita come una singola operazione e quindi che, durante la sua esecuzione, sia priva di errori, che sia indivisibile (nessuna prelazione della CPU) e che il suo risultato sia uguale a partire dalle stesse condizioni iniziali.

Tutto quello che abbiamo detto in precedenza è vero. Ma non è l'unico motivo per cui Linux si basa sui pacchetti.
La seconda ragione sta nel concetto di dipendenza: due software sono dipendenti nel momento in cui uno dei due ha bisogno dell'altro per poter essere eseguito.
La strutturazione a pacchetti permette al sistema operativo di organizzare i package in modo gerarchico in base alle dipendenza, in modo da non avere più di una copia dello stesso software all'interno del sistema. Fate attenzione che quest'ultima caratteristica è una delle ragioni per cui mediamente Linux tende ad essere più leggero e a rallentarsi meno dopo ripetuti utilizzi rispetto al tradizionale Windows.

 

 

MP, DPKG, YUM, APT, DNF: I PACKAGE
Quante sigle! Cerchiamo di fare chiarezza.
Abbiamo detto che per gestire i pacchetti abbiamo bisogno di un package manager che si prenda la briga di gestire pacchetto, installazione, dipendenze e conflitti. E che magari faccia anche il caffè… no?
Capiamo appunto che non ci si è arrivati al primo colpo.
Innanzi tutto i Package Manager si distinguono in due categorie:

  • A basso livello: rpm e dpkg.
  • Ad alto livello: yum, apt, dnf.

Quelli a basso livello si occupano di implementare la definizione di Gestore dei Pacchetti che abbiamo detto qualche riga fa. Si occupano dell'installazione, rimozione, risoluzione delle dipendenze e dei conflitti.
Tutto il resto è a carico nostro. O… lo facciamo fare ai manager di alto livello: apt, yum e dnf.
Questi ultimi, oltre che effettuare tutte le operazioni di quelli di basso livello, si occupano del download, della gestione dei repository, dell'update, dell'upgrade e alcuni -- per ora solo dnf -- anche dell'aggiornamento del sistema operativo.

 

 
PACMAN: OSSIA COME FARE I BASTIAN CONTRARI FACENDO LE COSE BENE E CON ARROGANZA
Tranquilli! Giù i forconi! Non ci siamo dimenticati di lui!
In questo articolo abbiamo descritto due delle tre maggiori famiglie dei pacchetti Linux: Debian e Red Hat. L'ultima parte risulta essere quella che nel titolo chiamiamo Bastian Contrari.

Mentre in tutto il mondo Linux è lo sviluppatore che si occupa di compilare i programmi e li pacchettizza in package deb o rpm (con tutti i vantaggi che ne derivano: script, localizzazione ecc) che siano, gli utilizzatori di Arch Linux per installare un software si affidano a Pacman.

Per la classificazione che abbiamo fatto prima, questo manager rientra all'interno di quello che definiamo come Package Manager ad alto livello. Infatti si occupa del download, dell'aggiornamento, dell'installazione, dipendenze e così via.
La vera differenza risiede nell'uso del formato tar.xz e nell'integrazione del cosiddetto Arch Build System, che permette la compilazione automatica di quei programmi che non sono pacchettizzati tar.xz.
Questa struttura di Pacman tende a violare leggermente il concetto di package manager in quanto si occupa anche della eventuale compilazione, e non solo della sua installazione.
Nonostante ciò il manager funziona, e lo fa alla grande!

 

 

ALIEN: COME CONVERTIRE UN RPM IN DEB E VICEVERSA
Fatto tutto questo discorso sui pacchetti, arriviamo al punto. Che succede se dobbiamo installare un programma che però esiste solo pacchettizzato in un formato deb (o rpm) che non è quello riconosciuto dal nostro sistema operativo?

Se siamo su Debian o derivate installiamo Alien con il comando:

sudo apt-get install alien

e una volta scaricato il pacchetto rpm da convertire diamo:

alien prog.rpm

Ad esempio scarichiamo il programma nano in formato rpm con il seguente comando se siamo a 64 bit:

wget https://www.nano-editor.org/dist/v2.2/RPMS/nano-2.2.0-1.x86_64.rpm -O nano-2.2.0-1.rpm

o questo se siamo a 32 bit:

wget https://www.nano-editor.org/dist/v2.2/RPMS/nano-2.2.0-1.i386.rpm -O nano-2.2.0-1.rpm

e proviamo a convertire con:

alien nano-2.2.0-1.rpm

Ora il programma ci ha generato il pacchetto nano_2.2.0-2.XXX.deb, che installiamo dando:

sudo dpkg -i nano_2.2.0-2.XXX.deb

Proviamo se funziona il tutto con:

nano prova.txt

Viceversa se siamo su Fedora (o distribuzioni che utilizzano rpm), come prima installiamo il programma con:

sudo dnf install alien

e scarichiamo un pacchetto su cui sperimentare con:

wget http://ftp.it.debian.org/debian/pool/main/n/nano/nano_2.2.6-3_i386.deb -O nano_2.2.6-3.deb

o se siamo a 64 bit:

wget http://ftp.it.debian.org/debian/pool/main/n/nano/nano_2.2.6-3_amd64.deb -O nano_2.2.6-3.deb

e diamo il comando per convertire:

alien -O nano_2.2.6-3.deb

installiamo con:

sudo dnf install nano_2.2.3-4_XXX.rmp

e non ci resta che provare ad eseguire il programma nano.

Nel caso incontrassimo dei problemi con l'installazione… andiamo nella sezione successiva!

 

 

RISOLVERE I PROBLEMI DI INSTALLAZIONE
Gli errori che alien può dare sono quelli relativi agli script di installazione che non sono stati convertiti correttamente. Il sistema richiede quindi un aiuto da parte nostra.
Nel nostro esempio, durante l'installazione abbiamo ricevuto questo errore:

E come possiamo vedere abbiamo dei conflitti sulle cartelle riquadrate di rosso. Per poterle risolvere necessiteremo di installare il pacchetto rpmrebuild con il comando:

sudo dnf install rpmrebuild -y

e diamo:

sudo rpmrebuild -pe nano_2.2.3-4_XXX.rmp

che ci aprirà lo script di installazione con il nostro editor di testo predefinito:

Non ci resta che eliminare tutte le righe contenenti gli errori che abbiamo riscontrato prima.

A questo punto reinstalliamo il pacchetto con il comando di prima, ossia:

sudo dnf install nano_2.2.3-4_XXX.rmp

 

 

CONCLUSIONI
In questo post abbiamo affrontato una marea di argomenti. Abbiamo fatto un'introduzione a che cosa sono i pacchetti e quali sono i pro e i contro. Successivamente abbiamo anche distinto le tre principali classi di pacchetti che possiamo incontrare. Un veloce excursus sui programmi utili a gestirli e poi via, su come convertire i pacchetti con il tool Alien.

 

 

FONTI

Dottore in Informatica. Appassionato di computer fin dal primo PC Olivetti con Windows 95 e la bellezza di 8 MB di RAM.
Utilizzatore Linux da 5 anni, credo profondamente nella filosofia open source.
Dopo tante distro provate sul mio fidato Toshiba, uso Fedora per lo studio e il divertimento.

Lascia un commento