Bekerja dengan dependensi paket di Red Hat Linux
- 2476
- 321
- Dwayne Hackett
Objektif
Tujuan kami adalah membiasakan diri dengan alat yang tersedia untuk mengetahui informasi tentang dependensi paket pada sistem berbasis RPM.
Sistem Operasi dan Versi Perangkat Lunak
- Sistem operasi: Red Hat Enterprise Linux 7.5
- Perangkat lunak: RPM 4.11, yum 3.4.3
Persyaratan
Akses istimewa ke sistem.
Kesulitan
MUDAH
Konvensi
- # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan
sudo
memerintah - $ - Diberikan perintah linux untuk dieksekusi sebagai pengguna biasa
Perkenalan
RPM, yang merupakan singkatan dari Red Hat Package Manager, adalah manajer paket yang terkenal dan matang yang digunakan oleh semua distribusi rasa topi merah, serta SUSE. Dengan RPM, paket dapat mendefinisikan hubungan antar paket, dan bahkan dengan versi paket - misalnya, server Apache Tomcat membutuhkan lingkungan java yang tepat untuk dapat dijalankan.
Di sisi lain, untuk menginstal lingkungan Java, Anda tidak memerlukan server Tomcat - Anda dapat memutuskan untuk menjalankan beberapa aplikasi berbasis java yang berbeda, mungkin satu yang ditulis sendiri dimulai dengan tangan ketika diperlukan untuk melakukan pekerjaan itu. Dengan kata lain, server Tomcat bergantung di Java.
RPM dapat membuat kehidupan sysadmin jauh lebih mudah dengan menghadirkan ketergantungan ini - dan alat yang mengandalkan RPM seperti RPM
utilitas, atau yum
dapat secara otomatis menyelesaikan dependensi ini, dan menginstal semua paket tambahan yang diperlukan untuk komponen baru untuk berjalan dengan benar.
Mengumpulkan informasi
Untuk mengetahui daftar paket yang foo.Paket bar tergantung, cukup jalankan:
# Yum Deplist foo.batang
Dan untuk menemukan daftar paket yang membutuhkan (bergantung pada) paket foo.batang:
rpm -q --shatrequires foo.batang
Contoh kehidupan nyata dengan paket generik: pesta
. Mari kita lihat paket apa yang dibutuhkan oleh Paket Bash:
Paket Bash Deplist # Yum: Bash.x86_64 4.2.46-30.EL7 Dependency: libc.Jadi.6 () (64bit) Penyedia: GLIBC.x86_64 2.17-222.EL7 Dependency: libc.Jadi.6 (GLIBC_2.11) (64bit) Penyedia: GLIBC.x86_64 2.17-222.EL7 Dependency: libc.Jadi.6 (GLIBC_2.14) (64bit) Penyedia: GLIBC.x86_64 2.17-222.EL7 Dependency: libc.Jadi.6 (GLIBC_2.15) (64bit) Penyedia: GLIBC.x86_64 2.17-222.EL7 Dependency: libc.Jadi.6 (GLIBC_2.2.5) (64bit) Penyedia: GLIBC.x86_64 2.17-222.EL7 Dependency: libc.Jadi.6 (GLIBC_2.3) (64bit) Penyedia: GLIBC.x86_64 2.17-222.EL7 Dependency: libc.Jadi.6 (GLIBC_2.3.4) (64bit) Penyedia: GLIBC.x86_64 2.17-222.EL7 Dependency: libc.Jadi.6 (GLIBC_2.4) (64bit) Penyedia: GLIBC.x86_64 2.17-222.EL7 Dependency: libc.Jadi.6 (GLIBC_2.8) (64bit) Penyedia: GLIBC.x86_64 2.17-222.Ketergantungan El7: libdl.Jadi.2 () (64bit) Penyedia: GLIBC.x86_64 2.17-222.Ketergantungan El7: libdl.Jadi.2 (GLIBC_2.2.5) (64bit) Penyedia: GLIBC.x86_64 2.17-222.EL7 Ketergantungan: libtinfo.Jadi.5 () (64bit) penyedia: ncurses-libs.x86_64 5.9-14.20130511.EL7_4 Ketergantungan: Penyedia RTLD (GNU_HASH): GLIBC.x86_64 2.17-222.Penyedia EL7: GLIBC.I686 2.17-222.EL7
Menyalin Dari perspektif paket, pesta
adalah yang sangat umum, dan seperti yang terlihat di atas, tergantung pada beberapa paket inti. Tetapi jika kami ingin menginstal sesuatu yang jauh lebih tergantung, katakanlah, Konzole
Emulator Terminal KDE pada Linux Red Hat dengan Manajer Desktop GNOME, kami mungkin mendapatkan lebih dari satu halaman Daftar Ketergantungan Halaman. Dan dengan Konzole
, Kasingnya bahkan lebih rumit, karena bergantung pada paket QT dan KDE, jadi untuk menginstalnya, Anda perlu menginstal seluruh lingkungan KDE di samping Gnome (apa yang pasti dapat Anda lakukan) untuk menyediakan semuanya Konzole
kebutuhan.
Untuk mendapatkan lebih banyak wawasan tentang paket apa yang akan diinstal, periksa daftar yang disediakan oleh Yum sebelum memulai instalasi:
# yum instal Konsole Resolving Dependencies-> Running Transaction Check ---> Paket Konsole.x86_64 0: 4.10.5-4.EL7 akan diinstal-> Ketergantungan pemrosesan: Konsole-part = [… .]
Menyalin Dalam kasus sistem topi merah dengan gnome, mungkin perlu beberapa waktu untuk menyelesaikan dependensi aplikasi kDE untuk pertama kalinya, dan ketika itu selesai, yum akan menyajikan satu paket tunggal yang kami minta, dengan ukuran kecil yang bagus bagus. Diikuti oleh lebih dari seratus paket yang diinstal untuk dependensi:
[… .]-> Running Transaction Check ---> Paket Boost-System.x86_64 0: 1.53.0-27.EL7 akan diinstal ---> Paket Boost-Thread.x86_64 0: 1.53.0-27.EL7 akan diinstal -> dependensi resolusi ketergantungan jadi diselesaikan ======================================= ==================================================== ======================================= Paket Versi Arch Repositori ukuran ======= ==================================================== ==================================================== ==================== Menginstal: Konsole x86_64 4.10.5-4.EL7 RHEL-7-Server-RPMS 78 K menginstal untuk dependensi: OpenExr-libs [… .]
Menyalin Dan dalam ringkasan kita dapat melihat bahwa instalasi akan menggunakan lebih banyak ruang pada disk pada akhirnya, maka ukuran paket yang kita butuhkan:
[… .] Ringkasan transaksi ================================================= ==================================================== ============================== Instal 1 Paket (+120 Paket Dependen) Total Ukuran Unduh: 108 m Ukuran Terinstal: 307 m
Menyalin Ini banyak, tetapi kami mendapat informasi yang berguna tentang berapa banyak ruang yang akan digunakan. Ini sangat berguna jika kami memasang banyak paket dalam satu transaksi.
Sementara dalam hal ini transaksi boros, tujuan dependensi pada akhirnya adalah tentang menghemat sumber daya: jika seseorang mengimplementasikan beberapa fungsi dalam kodenya, dan itu dapat dipanggil pada sistem, pengembang berikutnya mungkin tidak perlu menerapkan fungsionalitas yang sama Sekali lagi, tetapi gunakan implementasi yang sudah ada. Untuk Konzole
contoh, jika Anda ingin menginstal akregator
Lain kali, sistem akan memiliki banyak dependensi sudah terpecahkan, seperti kdepim
Paket berisi akregator
juga mengandalkan qt
, Kdelibs
, dan seperti.
Kita bisa gunakan RPM
utilitas mendapatkan informasi sebaliknya: mari kita daftarkan paket yang diinstal yang memerlukan pesta
kemasan:
# rpm -q --shatrequires bash dracut-033-535.EL7.x86_64 initscripts-9.49.41-1.EL7.x86_64 AutoFS-5.0.7-83.EL7.x86_64 lvm2-2.02.177-4.EL7.x86_64 rsyslog-8.24.0-16.EL7.x86_64
Menyalin Membersihkan paket yang tidak dibutuhkan
Jika kita menjaga sistem kita tetap up to date, dan mengubah atau memperluas peran mereka, paket "sampah" pasti akan muncul. Dalam paket Sense Junk berarti tidak lagi dibutuhkan dan/atau paket yang sudah usang. Untuk mengikuti contoh di atas, kami tidak perlu lagi akregator
, Karena kami memindahkan "layanan" penanganan RSS ke konsentrator RSS sentral hipotetis dalam sistem kami, jadi setelah memigrasi feed kami ke tempat pusat, kami menghapus instalasi aplikasi penanganan RSS lokal. Yang tidak akan menghapus semua paket KDE, karena banyak paket lain mungkin bergantung padanya. Tetapi jika tidak, paket -paket itu sampah, dan akan mengkonsumsi sumber daya, termasuk waktu pembaruan yang lebih lama, seperti yum
Secara default akan memperbarui semuanya secara membabi.
Menghabiskan sumber daya untuk meningkatkan beberapa paket yang tidak dibutuhkan pada laptop dengan koneksi broadband dan SSD mungkin tidak menjadi masalah, tetapi bayangkan pusat data dengan ratusan atau ribuan komputer, dan Anda mendapatkan gambarnya. Secara umum merupakan ide yang baik untuk menjaga semua sistem tetap sederhana, dan manajemen sumber daya hanya satu poin. Semakin kompleks sistem, semakin rentan kesalahan. Lebih banyak komponen berarti lebih banyak bug.
Untuk mendapatkan ikhtisar pada paket yang tidak dibutuhkan yang diinstal pada sistem, kami dapat menggunakan yum dan paket-pembersihan dengan cara yang sama seperti pada centos, atau fitur lain dari yum, Autoremove
:
yum autoremove
Paket -paket yang ditandai alat -alat ini karena tidak dibutuhkan tidak identik.
Saat menggunakan salah satu dari alat ini, disarankan untuk memeriksa ulang apa yum
akan menghapus, dan mungkin menguji apa yang akan menghasilkan mesin pengujian dengan konten paket yang identik sebelum membersihkan sistem produksi.
Alat-alat ini memang pintar, tetapi tidak semua tahu: misalnya, tidak akan ada entri dalam database RPM tentang aplikasi PHP khusus yang berjalan di atas server web yang menelepon cangkir
untuk mencetak pesanan yang masuk pada printer yang terhubung ke server. Itu, disana Bisa menjadi entri jika aplikasi dikemas dengan dependensi yang tepat disertakan, dan diinstal dengan benar dengan RPM
atau yum
- Tapi itu membutuhkan upaya, dan semua layanan perlu dikemas dengan cara yang sama jika Anda ingin merasa aman dengan pembersihan otomatis berbasis yum.
Memecahkan masalah ketergantungan
Terutama di lingkungan yang besar, mungkin ada masalah ketergantungan saat menginstal atau meningkatkan sistem.
Tangkapan layar di bawah ini menunjukkan masalah sederhana:
Memecahkan dependensi dengan RPMDi layar terminal di atas kami mencoba menginstal nrpe
paket, klien perlu memantau banyak aspek sistem dengan nagios. Kami mengunduh klien untuk distribusi, tetapi keduanya RPM
Dan yum
gagal dengan kesalahan yang sama: nrpe
paket membutuhkan (tergantung) Nagios-Common
kemasan. Dalam contoh ini kita dapat memperoleh paket yang dibutuhkan dari sumber yang sama, dan saat menginstal keduanya RPM
Utilitas melihat bahwa ketergantungan yang kami gagal sebelumnya akan dipenuhi pada akhir transaksi dan menginstal kedua paket, keluar secara diam -diam dengan keberhasilan.
Kesimpulan
YUM dan RPM adalah alat penting saat bekerja dengan distribusi menggunakan RPM Package Manager. Dengan mengetahui toolset, itu jauh lebih mudah, dan biasanya lebih aman untuk menyelesaikan pemasangan, meningkatkan dan memodifikasi tugas pada lingkungan perangkat lunak dari sistem yang diberikan.
Tutorial Linux Terkait:
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
- File Konfigurasi Linux: 30 Teratas Paling Penting
- Unduh Linux
- Pengantar Otomatisasi Linux, Alat dan Teknik
- Can Linux mendapatkan virus? Menjelajahi kerentanan Linux…
- Cara menginstal yum di linux
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…
- Distro linux terbaik untuk pengembang
- Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
- « Cara Mengatur SSL/TLS Dengan Apache Httpd di Red Hat
- Cara Mengubah Kata Sandi di Ubuntu 18.04 Bionic Beaver Linux »