GNU/Linux >> Belajar Linux >  >> Linux

Cara mengekstrak paket RPM tanpa menginstalnya

Konten file RPM biasanya diinstal. Ini berarti bahwa file RPM disalin ke lokasi yang tepat di sistem file sehingga dapat digunakan. Misalnya, menginstal RPM biner bash menempatkan file “/bin/bash” ke lokasi yang diharapkan. Untuk memasang RPM, gunakan salah satu dari "-i ” atau “-U ” beralih:

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

Daftar file di dalam paket RPM

Anda bisa mendapatkan daftar file di dalam RPM dengan melakukan kueri RPM dan menambahkan "-p ” beralih:

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

Cara Mengekstrak File dari File Paket RPM

Terkadang, Anda mungkin ingin mendapatkan konten dari, atau satu file dari, paket RPM. Untuk melakukannya, Anda dapat menggunakan rpm2cpio alat konversi. Alat rpm2cpio mengekstrak konten sumber atau RPM biner dalam bentuk arsip CPIO, bukan TAR. Output rpm2cpio ditulis ke output standar dan biasanya disalurkan ke perintah cpio.

1. Mencantumkan file dalam file paket

Dalam contoh ini, kami menggunakan -t opsi untuk mengarahkan cpio untuk menghasilkan "daftar isi" dari arsip yang dibuat oleh rpm2cpio. Hal ini dapat mempermudah untuk mendapatkan nama file dan jalur yang tepat saat Anda ingin mengekstrak file.

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

Perhatikan bahwa perintah “rpm -qpl” menunjukkan nama file sebagai path absolut “/bin/bash” tetapi output “cpio -t” menggunakan nama path relatif “./bin/bash” sebagai gantinya. Ini sangat berguna karena Anda dapat menggunakan rpm2cpio sebagai pengguna biasa untuk mengekstrak file yang biasanya diinstal ke direktori istimewa.

Contoh berikut menunjukkan bagaimana output muncul:

$ 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. Mengekstrak satu atau lebih file dari file paket

Gunakan rpm2cpio untuk menghasilkan arsip CPIO, dan gunakan tombol cpio “-i” untuk mengekstrak file yang diinginkan:

$ 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

Dalam hal ini, opsi “-i “, “-v “, dan “-d ” cpio langsung ke:
-i – Ekstrak satu atau lebih file dari arsip. Nama file yang diminta harus sama persis dengan daftar isi "cpio -t", atau pola wildcard seperti shell. Jika file tujuan sudah ada, cpio akan menolak untuk menimpanya kecuali tombol “-u” ditambahkan ke perintah.
-d – Buat direktori apa pun yang mendahului nama file yang ditentukan dalam perintah cpio. Jika direktori sudah ada, sakelar “-d” dapat dihilangkan tetapi tidak ada salahnya jika selalu ditentukan.
-v – Menampilkan nama file yang diproses, bersama dengan ukuran file arsip CPIO, dalam blok 512-byte. Perhatikan bahwa ukuran ini bukan ukuran paket RPM, yang tidak pernah dilihat secara langsung oleh cpio.

Jika tidak ada nama file yang diberikan, maka semua file RPM akan diekstrak.


Linux
  1. Cara Menguji Paket Tanpa Menginstalnya Di Linux

  2. Cara Memeriksa Versi Paket Linux Sebelum Menginstalnya

  3. Cara membuat paket RPM Linux

  1. Perintah RPM

  2. RPM:kesalahan instalasi paket:cpio:baca gagal

  3. Bagaimana cara mendapatkan daftar dependensi paket RPM yang tidak diinstal?

  1. Cara memeriksa integritas paket rpm di Linux

  2. Bagaimana cara mengekstrak isi rpm?

  3. Bagaimana saya bisa menginstal RPM tanpa menjadi root?