Punto informatico Network

Canali
20091009080556_984618802_20091009080517_478970264_WinZip_spotlight.png

Come estrarre i singoli file da un rpm con Linux

01/07/2011
- A cura di
Zane.
Linux & Open Source - Avete la necessità di recuperare uno specifico file da un pacchetto rpm senza però installarlo? Niente paura: possiamo raggiungere l'obbiettivo con semplicità sia da interfaccia grafica, sia tramite linea di comando.

Tag

Passa qui con il mouse e visualizza le istruzioni per utilizzare i tag!

linux (1) , ubuntu (1) , file (1) , centos (1) , rpm (1) .

Valutazione

  •  
Voto complessivo 3.5 calcolato su 5 voti

I file RPM sono lo standard del mondo Linux per la distribuzione dei pacchetti software già compilati. Generalmente, è sufficiente aprirli con il relativo gestore per installare il software in questione. Ma... come fare se, invece di installare il pacchetto, siamo solamente interessati ad estrapolare da esso alcuni file?

L'operazione, fortunatamente, è molto semplice.

Nota: non è necessario che l'RPM in questione sia compatibile con il sistema corrente per estrapolarlo. Durante le prove, ho impiegato Ubuntu 32 bit per scompattare un rpm studiato per CentOS 64 bit senza problemi.

Lo faccio tramite interfaccia grafica

Se preferite lavorare tramite l'interfaccia grafica, potete agire direttamente dal menu contestuale del file rpm stesso: cliccate con il pulsante destro del mouse sull'rpm.

Sotto Ubuntu, selezionate Apri con Gestore archivi. In caso la voce non fosse presente, seguite Apri con altra applicazione... e quindi individuate il programma nella lista.

Se state lavorando con CentOS invece, selezionate Open with "Archive Manager". In caso la voce non fosse presente, il componente potrebbe non essere stato installato: potete risolvere facilmente impartendo sudo yum install unzip file-roller zip -y e digitando quindi la password di root. Riprovate quindi ad aprire l'rpm con il gestore d'archivi.

Indipententemente dalla distribuzione in uso dovreste ora poter accedere ai file contenuti ed estrapolare quelli di vostro interesse tramite un semplice trascinamento

MLINewShot_0667.jpg

Lo faccio da linea di comando

Procedere da linea di comando è un pochino meno immediato: dobbiamo infatti usare uno strumento chiamato rpm2cpio.

Se state operando sotto CentOS, potete saltare direttamente al prossimo paragrafo: rpm2cpio è infatti parte integrante del pacchetto base e, quindi, è già disponibile.

Se siete su Ubuntu, invece, dovete installarlo: aprite il terminale (Applicazioni -> Accessori -> Terminale), lanciate sudo apt-get install rpm2cpio -y, digitate la password di root ed il gioco è fatto.

Panoramica di rpm2cpio

La funzione base di rpm2cpio è quella di trasformare un RPM in un file binario di tipo cpio. Il risultato viene quindi mostrato a terminale.

Lanciando semplicemente rpm2cpio miofile.rpm, il programma vi mostrerà a video una serie di informazioni binarie indecifrabili.

Per ottenere il risultato voluto, dobbiamo passare l'output generato al programma incaricato di gestire i file cpio, specificando a quest'ultimo che vogliamo estrarre uno o più file.

Un esempio pratico

Vediamo ora un esempio pratico.

Diciamo di voler estrarre tutti i file dall'rpm chiamato miofile.rpm, salvato all'interno della cartella /root/temporanea/ (vi raccomando di creare sempre una directory dedicata a contenere i file estratti o potreste creare un bel po' di confusione sull'hard disk!).

Impartite quindi innanzitutto cd /root/temporanea/ per entrare in tale directory.

A questo punto, siamo pronti a scompattare l'rpm: il comando da impartire è il seguente:

rpm2cpio miofile.rpm | cpio -ivd

MLINewShot_0664.jpg

Se tutto è andato per il verso giusto, dentro a /root/temporanea/ dovreste ritrovarvi una copia di tutti i file contenuti nell'rpm.

Estrarre un file specifico

Se volete solamente estrapolare uno specifico file dall'archivio senza scompattarlo interamente, dovete muovervi in due passi.

Per prima cosa, lanciate rpm2cpio miofile.rpm | cpio -t per ottenere una lista di tutti i file contenuti (se ne state cercando uno in particolare, potete aiutarvi filtrando con grep: lancerete quindi qualcosa di simile a rpm2cpio miofile.rpm | cpio -t | grep nome_file_che_sto_cercando).

MLINewShot_0665.jpg

A questo punto, copiate l'intero percorso del file desiderato che desiderate scompattare ed accodatelo alla chiamata per scompattare l'intero archivio vista in precedenza: facendo finta che il file desiderato sia stato mostrato come ./usr/lib64/httpd/modules/mod_expires.so, andremo a lanciare:

rpm2cpio miofile.rpm | cpio -ivd ./usr/lib64/httpd/modules/mod_expires.so

MLINewShot_0666.jpg

Ad operazione terminata, verrà creata la gerarchia di cartelle nella directory corrente: discendetela fino all'ultimo livello di profondità e vi troverete il vostro file.

Per saperne di più

La pagina ufficiale di rpm2cpio contiene altri esempi ed alcuni dettagli in più sul programma e sui parametri accettati.

Iscriviti gratuitamente alla newsletter, e ti segnaleremo settimanalmente tutti i nuovi contenuti pubblicati su MegaLab.it!

 

Segnala ad un amico

Tuo nome Tuo indirizzo e-mail (opzionale)
Invia a:
    Aggiungi indirizzo email
    Testo

    megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2017 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising

    • Gen. pagina: 0.24 sec.
    •  | Utenti conn.: 34
    •  | Revisione 2.0.1
    •  | Numero query: 18
    •  | Tempo totale query: 0.11