[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


17. Conversione ed estrazione

Quando si utilizza una distribuzione GNU/Linux, è quantomeno fastidioso dover mescolare applicazioni installate a partire da archivi in formato diverso da quello che si usa normalmente. Ciò proprio perché non è più possibile tenere traccia, in un modo univoco, della posizione dei file appartenenti a ogni pacchetto (senza contare le altre conseguenze).

Fortunatamente vengono in aiuto i programmi di conversione che permettono di trasformare un archivio da un formato a un altro, anche se non sempre funzionano perfettamente. A questi si affiancano poi degli applicativi che permettono di ispezionare il contenuto di file impacchettati in vari formati, e di estrarne quello che si desidera.

Questi programmi utilizzano gli applicativi delle varie distribuzioni che si occupano di espandere i pacchetti e di generare gli stessi. In pratica, di solito, per convertire da Debian a Red Hat e viceversa, o per ispezionare i loro contenuti, occorrono sia `dpkg' (assieme a `dpkg-deb') che `rpm'.

L'utilizzo di pacchetti di altre distribuzioni (a seguito di conversione o meno) richiede un'ottima pratica nella gestione degli archivi relativi. Due pacchetti che dal nome sembrano uguali possono essere diversi nel contenuto, a seguito delle diverse strategie adottate dalle distribuzioni. Questo vale naturalmente anche per pacchetti che utilizzano la stessa tecnica di confezionamento (archiviazione), ma appartengono a distribuzioni differenti.

17.1 Alien

Alien è un programma che consente di convertire un pacchetto archiviato in un altro formato di archiviazione. Precisamente, è in grado di generare archivi in formato Debian, Red Hat, Stampede e Slackware, a partire da questi formati e anche da un semplice archivio tar+gzip. Non è in grado di gestire i pacchetti sorgenti.

L'eseguibile che compie tutto il lavoro è `alien', e la sintassi per il suo utilizzo è mostrata nello schema seguente:

alien --to-deb [<opzioni>] <file-da-convertire>...

alien --to-rpm [<opzioni>] <file-da-convertire>...

alien --to-tgz [<opzioni>] <file-da-convertire>...

alien --to-slp [<opzioni>] <file-da-convertire>...

Alien ha la necessità di conoscere soltanto in quale formato finale occorre produrre la conversione. Il tipo di archivio sorgente viene individuato automaticamente, probabilmente in base all'estensione usata nel nome del file. Se con le opzioni non si specifica in quale formato convertire, si ottiene un archivio Debian.

In linea di massima, la conversione genera il risultato nella directory corrente, a parte il caso della trasformazione in formato RPM, per cui si ottiene il file a partire dalla directory `/usr/src/redhat/' (di solito, per gli archivi di architettura i386, si tratta precisamente di `/usr/src/redhat/RPMS/i386/'). *1*

La conversione di un archivio Slackware o semplicemente tar+gzip in uno più sofisticato come RPM o Debian, non è conveniente in generale, perché in questo modo mancano molte informazioni che sono importanti per questi formati.

Alcuni pacchetti contengono degli script che devono essere eseguiti per sistemare ciò che è necessario (come l'aggiunta di un utente di sistema, o cose simili). La conversione in un altro formato tende a perdere questi script.

Alcune opzioni

-d | --to-deb

Specifica che si vuole ottenere la conversione in formato Debian.

-r | --to-rpm

Specifica che si vuole ottenere la conversione in formato RPM.

-t | --to-tgz

Specifica che si vuole ottenere la conversione in formato Slackware.

--to-slp

Specifica che si vuole ottenere la conversione in formato Stampede.

--description=<descrizione>

Specifica una descrizione per il pacchetto, da utilizzare esclusivamente per una conversione in cui l'origine sia un archivio Slackware o tar+gzip. Infatti, in questi casi, mancherebbe qualunque descrizione del contenuto del pacchetto.

-c | --scripts

Tenta di convertire gli script. Si deve usare questa opzione con molta prudenza, perché questi script dipendono dalla struttura della distribuzione per cui sono stati fatti, e l'utilizzo in un'altra distribuzione potrebbe essere incompatibile.

Esempi

alien --to-rpm dpkg_1.4.0.23.2-1.i386.deb

Converte l'archivio `dpkg_1.4.0.23.2-1.i386.deb' in formato RPM, generando il file `/usr/src/redhat/RPMS/i386/dpkg-1.4.0.23.2-2.i386.rpm'.

alien --to-deb pine-4.04-1.i386.rpm

Converte l'archivio `pine-4.04-1.i386.rpm' in formato Debian, generando il file `pine_4.04-1_i386.deb' nella directory corrente.

17.2 RPM2targz

La distribuzione Slackware prevede la possibilità di acquisire pacchetti RPM, attraverso uno script di conversione specifico: `rpm2targz'.

17.3 Midnight Commander

Midnight Commander (corrispondente all'eseguibile `mc') è un applicativo integrato per la navigazione all'interno delle directory di filesystem reali o virtuali. In questo senso, permette anche di accedere ad archivi (normali o compressi), inclusi quelli delle applicazioni GNU/Linux, purché sia presente il rispettivo sistema di gestione.

+<-/tmp/ash-0.2-17.i386.rpm#rpm------v>++<-/tmp/ash_0.3.4-6.deb#deb----------v>+
|       Name      | Size  |   MTime    ||       Name      | Size  |   MTime    |
|/..              |   1024|Aug 13 13:49||/..              |   1024|Aug 13 13:47|
|/INFO            |      0|Mar 21 00:00||/CONTENTS        |      0|Aug 13 13:47|
|/bin             |      0|Aug 13 13:47||/DEBIAN          |      0|Aug 13 13:47|
|/usr             |      0|Aug 13 13:47|| INFO            |    806|Aug 13 13:47|
| HEADER          |    890|Mar 21 00:00||*INSTALL         |    424|Aug 13 13:47|
|*INSTALL         |     39|Mar 21 00:00||                 |       |            |
|*UPGRADE         |     39|Mar 21 00:00||                 |       |            |
|                 |       |            ||                 |       |            |
|                 |       |            ||                 |       |            |
|                 |       |            ||                 |       |            |
|                 |       |            ||                 |       |            |
|                 |       |            ||                 |       |            |
|                 |       |            ||                 |       |            |
|                 |       |            ||                 |       |            |
|                 |       |            ||                 |       |            |
|                 |       |            ||                 |       |            |
|                 |       |            ||                 |       |            |
|                 |       |            ||                 |       |            |
+--------------------------------------++--------------------------------------+
|/..         |root   root   |drwxrwxrwt||/..         |root   root   |drwxrwxrwt|
+--------------------------------------++--------------------------------------+
tizio@dinkel:/tmp$
1Help   2Menu   3View   4Edit   5Copy   6RenMov 7Mkdir  8Delete 9PullDn 10Quit

Figura 17.1: Nel lato sinistro si vede il contenuto dell'archivio `ash-0.2-17.i386.rpm', mentre nel lato destro di vede il contenuto dell'archivio `ash_0.3.4-6.deb'.

Nella figura 17.1 si vede l'apertura virtuale di un pacchetto RPM, a sinistra, e Debian a destra. Nel caso del pacchetto Debian, basta entrare nella directory `CONTENTS/' per raggiungere i file che compongono il pacchetto, mentre gli script e gli altri file di contorno sono contenuti nella directory `DEBIAN/'. Nel caso del pacchetto RPM, la directory `INFO/' contiene tutte le informazioni sul pacchetto, compresi gli script.

Midnight Commander è descritto meglio nel capitolo 68.

---------------------------

Appunti Linux 2000.04.12 --- Copyright © 1997-2000 Daniele Giacomini --  daniele @ pluto.linux.it


1.) A questo proposito, è bene tenere presente che la directory `/usr/src/redhat/RPMS/i386/' deve esistere perché possa funzionare la conversione in RPM per l'architettura i386. Se l'archivio che si genera non fa riferimento a un'architettura particolare, allora si deve avere pronta anche la directory `/usr/src/redhat/RPMS/noarch/'. In generale, per questo genere di problemi basta osservare i messaggi di errore di Alien.


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]