GNU/Linux >> Znalost Linux >  >> Linux

Jak extrahovat balíček RPM bez jeho instalace

Obvykle je nainstalován obsah souboru RPM. To znamená, že soubory RPM jsou zkopírovány na jejich správná umístění v systému souborů, aby mohly být použity. Například instalace binárního RPM bash umístí soubor „/bin/bash“ do jeho očekávaného umístění. Chcete-li nainstalovat RPM, použijte buď „-i “ nebo „-U ” přepínač:

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

Výpis souborů v balíčku RPM

Seznam souborů v RPM můžete získat provedením dotazu RPM a přidáním „-p ” přepínač:

$ 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
...

Jak extrahovat soubory ze souboru balíčku RPM

Někdy můžete chtít získat obsah nebo jeden soubor z balíčku RPM. K tomu můžete použít rpm2cpio konverzní nástroj. Nástroj rpm2cpio extrahuje obsah zdrojového nebo binárního RPM ve formě archivu CPIO, nikoli TAR. Výstup rpm2cpio se zapisuje na standardní výstup a obvykle se přenáší do příkazu cpio.

1. Výpis souborů v souboru balíčku

V tomto příkladu jsme použili -t možnost nasměrovat cpio k vytvoření „obsahu“ archivu vytvořeného pomocí rpm2cpio. To může výrazně usnadnit získání správného souboru a cesty, když chcete extrahovat soubor.

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

Všimněte si, že příkaz „rpm -qpl“ zobrazuje název souboru jako absolutní cestu „/bin/bash“, ale výstup „cpio -t“ místo toho používá relativní cestu „./bin/bash“. To je velmi užitečné, protože rpm2cpio můžete použít jako běžný uživatel k extrahování souborů, které by se normálně instalovaly do privilegovaných adresářů.

Následující příklad ukazuje, jak výstup vypadá:

$ 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. Extrahování jednoho nebo více souborů ze souboru balíčku

Pomocí rpm2cpio vygenerujte archiv CPIO a pomocí přepínače cpio „-i“ extrahujte požadované soubory:

$ 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

V tomto případě jsou možnosti „-i “, „-v “ a „-d ” přímé cpio na:
-i – Extrahujte jeden nebo více souborů z archivu. Požadovaný soubor(y) musí přesně odpovídat obsahu „cpio -t“ nebo vzoru zástupných znaků v shellu. Pokud cílový soubor již existuje, cpio jej odmítne přepsat, pokud není k příkazu přidán přepínač „-u“.
-d – Vytvořte všechny adresáře, které předcházejí názvu souboru zadanému v příkazu cpio. Pokud již adresáře existují, lze přepínač „-d“ vynechat, ale neškodí, pokud je vždy zadán.
-v – Zobrazte názvy všech zpracovaných souborů spolu s velikostí archivního souboru CPIO v 512bajtových blocích. Všimněte si, že tato velikost není velikostí RPM balíčku, který cpio nikdy přímo nevidí.

Pokud nejsou zadány žádné názvy souborů, budou extrahovány všechny soubory RPM.


Linux
  1. Jak vytvořit balíček RPM pro Linux

  2. Jak zkontrolovat integritu balíčku rpm v Linuxu

  3. Jak extrahuji obsah rpm?

  1. Jak otestovat balíček bez jeho instalace v Linuxu

  2. Jak zkontrolovat verzi balíčku Linux před jeho instalací

  3. RPM příkazy

  1. RPM:Chyba instalace balíčku:cpio:čtení se nezdařilo

  2. Jak mohu nainstalovat RPM, aniž bych byl root?

  3. Jak získat seznam závislostí neinstalovaného RPM balíčku?