RPM adalah akronim rekursif untuk RPM Package Manager:ini adalah manajer paket tingkat rendah default di beberapa distribusi Linux yang paling terkenal dan paling banyak digunakan, seperti Fedora, Red Hat Enterprise Linux, CentOS, OpenSUSE dan turunannya. Perangkat lunak ini, seperti yang Anda harapkan, gratis dan open source; ketika dipanggil dengan -q
opsi ini dapat digunakan untuk paket kueri untuk mengambil informasi spesifik, seperti dependensi, rekomendasi, file, dll. Dalam tutorial ini kita mempelajari cara melakukan kueri semacam itu.
Dalam tutorial ini Anda akan belajar :
- Cara menjalankan rpm dalam mode “permintaan”
- Cara mendapatkan informasi umum tentang sebuah paket
- Cara membaca log perubahan paket
- Cara membuat daftar file yang disediakan oleh sebuah paket
- Cara membuat daftar skrip yang digunakan oleh sebuah paket
- Cara membuat daftar dependensi dan rekomendasi paket
- Cara membuat daftar paket yang dianggap usang oleh rpm
Persyaratan dan konvensi perangkat lunak yang digunakan
Kategori | Persyaratan, Konvensi, atau Versi Perangkat Lunak yang Digunakan |
---|---|
Sistem | Distribusi yang menggunakan manajer paket rpm |
Perangkat Lunak | Manajer paket rpm |
Lainnya | Tidak ada |
Konvensi | # – mengharuskan perintah-linux yang diberikan untuk dieksekusi dengan hak akses root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo command$ – mengharuskan perintah-linux yang diberikan untuk dieksekusi sebagai pengguna biasa yang tidak memiliki hak istimewa |
Memanggil rpm dalam mode kueri
Manajer paket rpm dapat digunakan untuk mengubah status sistem, karena dapat digunakan untuk menginstal, meningkatkan dan menghapus paket (ketika dipanggil dengan -i
, -U
dan e
opsi, masing-masing), atau dapat berjalan dalam mode "kueri", tanpa memerlukan hak administratif, ketika diluncurkan dengan -q
opsi, yang merupakan versi pendek dari --query
.
Jika sebuah paket sudah terinstal di sistem kami, yang perlu kami lakukan hanyalah menyebutkan namanya; jika tidak, dan kami ingin menanyakan .rpm
yang diunduh file, misalnya, kita harus menggunakan -p
(--package
) opsi, dan berikan jalur file sebagai argumen. Mari kita lihat beberapa contoh praktis tentang cara mengambil informasi tentang sebuah paket.
Mendapatkan informasi umum tentang sebuah paket
Salah satu hal dasar yang mungkin ingin kita lakukan ketika menangani paket rpm adalah menampilkan informasi umum tentangnya. Untuk menyelesaikan tugas ini, yang harus kita lakukan adalah menggunakan -i
(atau --info
) opsi saat menjalankan rpm dalam mode kueri. Demi contoh ini kami akan bekerja dengan paket "gimp", yang sudah diinstal di sistem. Dalam hal ini kita akan menjalankan:
$ rpm -qi gimp
Segera setelah kami menjalankan perintah, kami menerima output yang mirip dengan berikut ini, yang mencakup informasi, seperti deskripsi perangkat lunak, versinya, arsitektur, tanggal pemasangan, ukuran, dll:
Name : gimp Epoch : 2 Version : 2.10.24 Release : 1.fc34 Architecture: x86_64 Install Date: Mon 21 Jun 2021 11:26:33 AM CEST Group : Unspecified Size : 109267268 License : GPLv3+ and GPLv3 Signature : RSA/SHA256, Sat 03 Apr 2021 02:00:02 AM CEST, Key ID 1161ae6945719a39 Source RPM : gimp-2.10.24-1.fc34.src.rpm Build Date : Sat 03 Apr 2021 01:13:55 AM CEST Build Host : buildhw-x86-11.iad2.fedoraproject.org Packager : Fedora Project Vendor : Fedora Project URL : http://www.gimp.org/ Bug URL : https://bugz.fedoraproject.org/gimp Summary : GNU Image Manipulation Program Description : GIMP (GNU Image Manipulation Program) is a powerful image composition and editing program, which can be extremely useful for creating logos and other graphics for web pages. GIMP has many of the tools and filters you would expect to find in similar commercial offerings, and some interesting extras as well. GIMP provides a large image manipulation toolbox, including channel operations and layers, effects, sub-pixel imaging and anti-aliasing, and conversions, all with multi-level undo.
Membaca log perubahan paket
Seperti yang kita ketahui, changelog adalah log di mana semua perubahan yang dibuat pada proyek dilaporkan dan diurutkan secara kronologis. Jika yang ingin kita lakukan adalah membaca changelog dari sebuah paket rpm, kita harus memanggil manajer paket rpm dalam mode query dan menggunakan --changelog
pilihan. Mari kita lihat contohnya:
$ rpm -q --changelog gimp
Berikut adalah output (terpotong) dari perintah di atas pada Fedora versi terbaru (34):
[...] Thu Jan 09 2020 Josef Ridky <[email protected]> - 2:2.10.14-3 - Demodularizing of gimp (#1772469) * Mon Nov 18 2019 Kalev Lember <[email protected]> - 2:2.10.14-2 - Rebuild for libmypaint 1.4.0 * Mon Nov 04 2019 Kalev Lember <[email protected]> - 2:2.10.14-1 - Update to 2.10.14 * Tue Aug 20 2019 Josef Ridky <[email protected]> - 2:2.10.12-3 - Fix default configuration for font folders (#1706653) * Wed Jul 31 2019 Josef Ridky <[email protected]> - 2:2.10.12-2 - Fix issue with reading SVG files (#1715882) * Thu Jul 25 2019 Fedora Release Engineering <[email protected]> - 2:2.10.12-1.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild * Thu Jun 13 2019 Kalev Lember <[email protected]> - 2:2.10.12-1 - Update to 2.10.12 * Thu Apr 11 2019 Richard Shaw <[email protected]> - 2:2.10.10-2 - Rebuild for OpenEXR 2.3.0. * Mon Apr 08 2019 Josef Ridky <[email protected]> - 2:2.10.10-1 - New upstream release 2.10.10 (#1697119)
Mendaftar semua file yang disediakan oleh sebuah paket
Ketika kami menginstal sebuah paket di sistem kami, serangkaian file disalin di tempat yang sesuai, sebagaimana dimaksud oleh pengelolanya. Jika kita ingin membuat daftar file yang disediakan oleh sebuah paket yang sudah terinstal di sistem kita, kita dapat memanggil manajer paket
rpm dalam mode kueri dengan -l
opsi (kependekan dari --list
):
$ rpm -ql gimp
Seperti yang kami katakan sebelumnya, jika kami ingin menanyakan paket sebelum kita menginstalnya, sebagai gantinya, kita harus menambahkan -p
opsi, dan berikan jalur paket sebagai argumen:
$ rpm -qlp /path/to/package.rpm
Perintah di atas akan menghasilkan hasil sebagai berikut:
/etc/gimp /etc/gimp/2.0 /etc/gimp/2.0/controllerrc /etc/gimp/2.0/gimprc /etc/gimp/2.0/gtkrc /etc/gimp/2.0/menurc /etc/gimp/2.0/sessionrc /etc/gimp/2.0/templaterc /etc/gimp/2.0/toolrc /etc/gimp/2.0/unitrc /usr/bin/gimp /usr/bin/gimp-2.10 /usr/bin/gimp-console /usr/bin/gimp-console-2.10 /usr/bin/gimp-test-clipboard-2.0 [...]
Mendaftar skrip yang digunakan oleh sebuah paket
Beberapa .rpm
paket menggunakan serangkaian skrip atau "scriptlet" yang dijalankan sebagai bagian dari proses instalasi atau penghapusan. Jika kita ingin melihatnya, kita dapat melakukannya dengan memanggil rpm dalam mode query dengan --scripts
pilihan. Demi contoh ini, kami akan memeriksa skrip yang disertakan dalam systemd paket:
$ rpm -q --scripts systemd
Di bawah ini kita dapat melihat output (terpotong) dari perintah di atas, ketika diluncurkan pada Fedora 34. Seperti yang Anda lihat, sebelum skrip itu sendiri, kita dapat melihat konteks penggunaannya juga dilaporkan (misalnya "pra-instal" atau "pasca-instal" ”):
preinstall scriptlet (using /bin/sh): getent group cdrom &>/dev/null || groupadd -r -g 11 cdrom &>/dev/null || : getent group utmp &>/dev/null || groupadd -r -g 22 utmp &>/dev/null || : getent group tape &>/dev/null || groupadd -r -g 33 tape &>/dev/null || : getent group dialout &>/dev/null || groupadd -r -g 18 dialout &>/dev/null || : getent group input &>/dev/null || groupadd -r input &>/dev/null || : getent group kvm &>/dev/null || groupadd -r -g 36 kvm &>/dev/null || : getent group render &>/dev/null || groupadd -r render &>/dev/null || : getent group systemd-journal &>/dev/null || groupadd -r -g 190 systemd-journal 2>&1 || : [...]
Opsi serupa lainnya adalah --triggers
yang digunakan untuk menampilkan skrip pemicu terkandung dalam sebuah paket. Apa itu skrip pemicu? Mereka pada dasarnya adalah skrip yang dieksekusi (dipicu) ketika status paket lain
berubah:
$ rpm -q --triggers systemd
Dengan perintah di atas kita dapat memvisualisasikan skrip pemicu yang terdapat di systemd paket:
triggerun scriptlet (using /bin/sh) -- systemd < 246.1-1 # This is for upgrades from previous versions before systemd-resolved became the default. systemctl --no-reload preset systemd-resolved.service &>/dev/null || : if systemctl -q is-enabled systemd-resolved.service &>/dev/null; then systemctl -q is-enabled NetworkManager.service 2>/dev/null && \ ! test -L /etc/resolv.conf 2>/dev/null && \ ! mountpoint /etc/resolv.conf &>/dev/null && \ grep -q 'Generated by NetworkManager' /etc/resolv.conf 2>/dev/null && \ echo -e '/etc/resolv.conf was generated by NetworkManager.\nRemoving it to let systemd-resolved manage this file.' && \ mv -v /etc/resolv.conf /etc/resolv.conf.orig-with-nm && \ ln -sv ../run/systemd/resolve/stub-resolv.conf /etc/resolv.conf 2>/dev/null || : systemctl start systemd-resolved.service &>/dev/null || : fi triggerpostun scriptlet (using /bin/sh) -- systemd < 247.3-2 # This is for upgrades from previous versions before oomd-defaults is available. # We use %triggerpostun here because rpm doesn't allow a second %triggerun with # a different package version. systemctl --no-reload preset systemd-oomd.service &>/dev/null || :
Mencantumkan dependensi dan rekomendasi paket
Tugas umum lainnya yang mungkin ingin kita lakukan adalah menemukan dependensi dari paket rpm. Opsi yang memungkinkan kita menyelesaikan tugas adalah -R
(kependekan dari --requires
). Untuk memeriksa dependensi paket "gimp", misalnya, kita akan menjalankan perintah berikut:
$ rpm -qR gimp
Setelah kita menjalankan perintah, daftar dependensi perangkat lunak akan dilaporkan di layar:
/usr/bin/python2 babl(x86-64) >= 0.1.78 config(gimp) = 2:2.10.24-1.fc34 fontconfig >= 2.12.4 freetype >= 2.1.7 gegl04(x86-64) >= 0.4.30 gimp-libs(x86-64) = 2:2.10.24-1.fc34 glib2 >= 2.56.2 gtk2 >= 2.24.32 hicolor-icon-theme [...]
Jika alih-alih -R
opsi yang kami gunakan --recommends
kita dapat memperoleh daftar perangkat lunak yang tidak sepenuhnya dibutuhkan oleh paket yang kita minta, tetapi direkomendasikan olehnya:
$ rpm -q --recommends gimp
Mendaftarkan paket-paket yang dianggap usang oleh rpm
Dengan cara yang sama dari contoh di atas, kita dapat melihat paket apa yang diberikan usang oleh paket yang kita query. Yang harus kita lakukan adalah menggunakan --obsoletes
pilihan:
$ rpm -q --obsoletes gimp
Berikut adalah output dari perintah pada contoh:
gimp < 2:2.10.24-1.fc34 gimp-help-browser < 2:2.10.24-1.fc34 gimp-unstable < 2:2.10
Kesimpulan
Rpm adalah pengelola paket yang sangat kuat:dalam tutorial ini kita melihat cara menjalankannya dalam mode "permintaan". Kami melihat bagaimana mendapatkan informasi umum tentang sebuah paket, seperti versi dan arsitekturnya, cara membaca changelog paket, cara membuat daftar semua file yang akan diinstal oleh sebuah paket, cara melihat "scriptlet" yang digunakan sebagai bagian dari manajemen paket dan cara mendapatkan daftar dependensi dan rekomendasi paket.