GNU/Linux >> Linux Esercitazione >  >> Linux

Come estrarre il pacchetto RPM senza installarlo

Il contenuto del file di un RPM viene solitamente installato. Ciò significa che i file RPM vengono copiati nelle posizioni appropriate nel file system in modo che possano essere utilizzati. Ad esempio, l'installazione dell'RPM binario bash posiziona il file "/bin/bash" nella posizione prevista. Per installare un RPM, utilizza "-i ” o “-U ” interruttore:

$ rpm -ivh bash-3.1-16.1.x86_64.rpm

Elenco dei file all'interno di un pacchetto RPM

Puoi ottenere un elenco dei file all'interno di un RPM eseguendo una query RPM e aggiungendo "-p ” interruttore:

$ rpm -q -l -p bash-3.1-16.1.x86_64.rpm
/bin/bash
/bin/sh
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc
...

Come estrarre file da un file di pacchetto RPM

A volte, potresti voler ottenere il contenuto o un singolo file da un pacchetto RPM. Per farlo, puoi utilizzare rpm2cpio strumento di conversione. Lo strumento rpm2cpio estrae il contenuto di un RPM sorgente o binario sotto forma di un archivio CPIO, non TAR. L'output rpm2cpio viene scritto nell'output standard e solitamente inviato tramite pipe al comando cpio.

1. Elencare i file in un file di pacchetto

In questo esempio, abbiamo utilizzato -t opzione per indirizzare cpio a produrre un "indice" dell'archivio creato da rpm2cpio. Questo può rendere molto più facile ottenere il nome file e il percorso corretti quando vuoi estrarre un file.

$ rpm2cpio bash-3.1-16.1.x86_64.rpm | cpio -t

Si noti che il comando "rpm -qpl" mostra il nome del file come percorso assoluto "/bin/bash" ma l'output "cpio -t" utilizza invece il nome del percorso relativo "./bin/bash". Questo è molto utile perché puoi usare rpm2cpio come un normale utente per estrarre file che normalmente verrebbero installati in directory privilegiate.

L'esempio seguente mostra come appare l'output:

$ rpm2cpio bash-3.1-16.1.x86_64.rpm | cpio -t
./bin/bash
./bin/sh
./etc/skel/.bash_logout
./etc/skel/.bash_profile
./etc/skel/.bashrc
...
10510 blocks

2. Estrarre uno o più file da un file di pacchetto

Usa rpm2cpio per generare l'archivio CPIO e usa l'opzione cpio “-i” per estrarre i file desiderati:

$ rpm2cpio bash-3.1-16.1.x86_64.rpm | cpio -ivd ./bin/bash
./bin/bash
10510 blocks
$ ls -l /home/user/bin/bash
total 744
-rwxr-xr-x 1 user user 753720 March  1 13:10 bash

In questo caso, le opzioni “-i “, “-v “ e “-d ” indirizza cpio a:
-i – Estrarre uno o più file da un archivio. I nomi dei file richiesti devono corrispondere esattamente al sommario "cpio -t" o a un modello di caratteri jolly simile a una shell. Se il file di destinazione esiste già, cpio rifiuterà di sovrascriverlo a meno che l'opzione "-u" non venga aggiunta al comando.
-d – Creare qualsiasi directory che preceda il nome file specificato nel comando cpio. Se le directory esistono già, l'opzione "-d" potrebbe essere omessa ma non danneggia se è sempre specificata.
-v – Visualizza i nomi di tutti i file elaborati, insieme alla dimensione del file di archivio CPIO, in blocchi da 512 byte. Nota che questa dimensione non è la dimensione del pacchetto RPM, che cpio non vede mai direttamente.

Se non vengono forniti nomi di file, tutti i file RPM verranno estratti.


Linux
  1. Come testare un pacchetto senza installarlo in Linux

  2. Come controllare la versione del pacchetto Linux prima di installarlo

  3. Come creare un pacchetto RPM Linux

  4. RPM:installazione del pacchetto Errore:cpio:lettura non riuscita

  5. Come controllare l'integrità del pacchetto rpm in Linux

Come installare RPM su CentOS

Come installare i pacchetti RPM su CentOS 8

Come creare un pacchetto RPM da un Tarball

Come scaricare i pacchetti usando APT senza installarli

Come visualizzare ed estrarre file da pacchetti rpm, deb, depot e msi

Come usare "yum downloadonly" per scaricare un pacchetto senza installarlo