Bekerja dengan dependensi paket di Red Hat Linux

Bekerja dengan dependensi paket di Red Hat Linux

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 RPM

Di 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?