Bekerja dengan kebergantungan pakej pada Red Hat Linux

Bekerja dengan kebergantungan pakej pada Red Hat Linux

Objektif

Matlamat kami adalah untuk membiasakan diri dengan alat yang tersedia untuk mengetahui maklumat mengenai kebergantungan pakej pada sistem berasaskan RPM.

Sistem operasi dan versi perisian

  • Sistem operasi: Red Hat Enterprise Linux 7.5
  • Perisian: RPM 4.11, yum 3.4.3

Keperluan

Akses istimewa ke sistem.

Kesukaran

Mudah

Konvensyen

  • # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
  • $ - Memandangkan perintah Linux dilaksanakan sebagai pengguna yang tidak berkadar biasa

Pengenalan

RPM, yang bermaksud Pengurus Pakej Red Hat, adalah pengurus pakej yang terkenal dan matang yang digunakan oleh All Red Hat Flavor Distributions, serta SUSE. Dengan RPM pembungkus boleh menentukan hubungan antara pakej, dan walaupun dengan versi pakej - contohnya, pelayan Apache Tomcat memerlukan persekitaran Java yang betul untuk dapat dijalankan.

Sebaliknya, untuk memasang persekitaran Java, anda tidak memerlukan pelayan Tomcat - anda mungkin memutuskan untuk menjalankan beberapa aplikasi berasaskan Java yang berbeza, mungkin yang ditulis sendiri bermula dengan tangan apabila diperlukan untuk melakukan pekerjaan itu. Dengan kata lain, pelayan Tomcat bergantung di Java.

RPM boleh menjadikan kehidupan sysadmin lebih mudah dengan membentangkan kebergantungan ini - dan alat bergantung pada rpm seperti rpm utiliti, atau yum secara automatik dapat menyelesaikan kebergantungan ini, dan memasang semua pakej tambahan yang diperlukan untuk komponen baru untuk dijalankan dengan betul.



Mengumpulkan maklumat

Untuk mengetahui senarai pakej yang foo.Pakej bar bergantung pada, hanya lari:

# yum deplist foo.bar

Dan untuk mencari senarai pakej yang memerlukan (bergantung pada) pakej foo.bar:

RPM -Q -WhatWrequires Foo.bar

Contoh kehidupan sebenar dengan pakej generik: bash. Mari lihat pakej apa yang diperlukan oleh pakej bash:

# Yum Deplist Bash Pakej: Bash.x86_64 4.2.46-30.Ketergantungan EL7: libc.Jadi.6 () (64bit) Penyedia: GLIBC.x86_64 2.17-222.Ketergantungan EL7: libc.Jadi.6 (glibc_2.11) (64bit) Penyedia: GLIBC.x86_64 2.17-222.Ketergantungan EL7: libc.Jadi.6 (glibc_2.14) (64bit) Penyedia: glibc.x86_64 2.17-222.Ketergantungan EL7: libc.Jadi.6 (glibc_2.15) (64bit) Penyedia: glibc.x86_64 2.17-222.Ketergantungan EL7: libc.Jadi.6 (glibc_2.2.5) (64bit) Penyedia: glibc.x86_64 2.17-222.Ketergantungan EL7: libc.Jadi.6 (glibc_2.3) (64bit) Penyedia: glibc.x86_64 2.17-222.Ketergantungan EL7: libc.Jadi.6 (glibc_2.3.4) (64bit) Penyedia: glibc.x86_64 2.17-222.Ketergantungan EL7: libc.Jadi.6 (glibc_2.4) (64bit) Penyedia: glibc.x86_64 2.17-222.Ketergantungan EL7: 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.Ketergantungan EL7: Libtinfo.Jadi.5 () (64bit) Penyedia: NCURSES-LIBS.x86_64 5.9-14.20130511.EL7_4 Ketergantungan: RTLD (GNU_HASH) Penyedia: GLIBC.x86_64 2.17-222.Penyedia EL7: GLIBC.i686 2.17-222.EL7 
Salinan

Dari perspektif pakej, bash adalah yang sangat generik, dan seperti yang dilihat di atas, bergantung pada beberapa pakej teras. Tetapi jika kita ingin memasang sesuatu yang lebih bergantung, katakan, Konzole Emulator Terminal KDE Di Red Hat Linux Dengan Pengurus Desktop Gnome, kami mungkin mendapat lebih daripada satu senarai senarai ketergantungan panjang. Dan dengan Konzole, Kes ini lebih rumit, kerana ia bergantung pada pakej QT dan KDE, jadi untuk memasangnya, anda perlu memasang seluruh persekitaran KDE di samping gnome (apa yang anda pasti boleh lakukan) untuk menyediakan segala -galanya Konzole keperluan.

Untuk mendapatkan lebih banyak wawasan tentang pakej apa yang akan dipasang, periksa senarai yang disediakan oleh YUM sebelum memulakan pemasangan:

# yum Pasang Konsole Menyelesaikan Ketergantungan-> Memeriksa Transaksi ---> Pakej Konsole.x86_64 0: 4.10.5-4.EL7 akan dipasang-> Ketergantungan Pemprosesan: Konsole-Part = [.. .] 
Salinan

Dalam kes sistem topi merah dengan GNOME, mungkin mengambil sedikit masa untuk menyelesaikan kebergantungan aplikasi KDE untuk kali pertama, dan apabila selesai, YUM akan membentangkan satu pakej tunggal yang kami minta, dengan saiz kecil yang bagus. Diikuti oleh lebih daripada seratus pakej yang dipasang untuk kebergantungan:

[… .]-> pemeriksaan transaksi berjalan ---> sistem rangsangan pakej.x86_64 0: 1.53.0-27.EL7 akan dipasang ---> Pakej Boost-Thread.x86_64 0: 1.53.0-27.EL7 akan dipasang -> ketergantungan resolusi ketergantungan selesai ========================================= ================================================= =================================== Pakej Pakej Repositori Versi Size =========== ================================================= ================================================= ================== Pemasangan: Konsole x86_64 4.10.5-4.EL7 RHEL-7-SERVER-RPMS 78 K Memasang untuk Dependencies: OpenExr-libs [.. .] 
Salinan

Dan dalam ringkasan kita dapat melihat bahawa pemasangan akan menggunakan lebih banyak ruang pada cakera pada akhirnya, maka saiz pakej yang kita perlukan:

[… .] Ringkasan Transaksi ================================================= ================================================= =========================== Pasang 1 Pakej (+120 Pakej Bergantung) Jumlah Saiz Muat turun: 108 m Pasang Saiz: 307 m 
Salinan

Ini banyak, tetapi kami mendapat maklumat berguna mengenai berapa banyak ruang yang akan digunakan. Ini amat berguna jika kita memasang banyak pakej dalam satu transaksi.

Walaupun dalam kes ini, urus niaga itu membazir, matlamat kebergantungan akhirnya mengenai penjimatan sumber: jika seseorang melaksanakan beberapa fungsi dalam kodnya, dan itu boleh dipanggil pada sistem, pemaju seterusnya mungkin tidak perlu melaksanakan fungsi yang sama Sekali lagi, tetapi gunakan pelaksanaan yang sudah ada. Untuk Konzole Contohnya, jika anda mahu memasang Akregator Lain kali, sistem akan mempunyai banyak kebergantungan telah diselesaikan, seperti kdepim pakej yang mengandungi Akregator Juga bergantung pada qt, kdelibs, dan sebagainya.

Kita boleh guna rpm utiliti mendapatkan maklumat dengan cara yang lain: mari kita senaraikan pakej yang dipasang yang memerlukan bash Pakej:

# RPM -Q-WhatWrequires 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 
Salinan

Membersihkan pakej yang tidak diperlukan

Sekiranya kita mengekalkan sistem kita sehingga kini, dan menukar atau memperluaskan peranan mereka, pakej "sampah" tidak dapat dielakkan akan muncul. Dalam pakej sampah bermaksud tidak lagi diperlukan dan/atau pakej yang tidak ditetapkan. Untuk mengikuti contoh di atas, kita tidak lagi memerlukan Akregator, Kerana kami memindahkan "perkhidmatan" pengendalian RSS ke konsentrator RSS pusat hipotetikal dalam sistem kami, jadi setelah memindahkan suapan kami ke tempat utama, kami menyahpasang aplikasi pengendalian RSS tempatan. Itu tidak akan mengeluarkan semua pakej KDE, kerana banyak pakej lain mungkin bergantung kepada mereka. Tetapi jika tidak, pakej tersebut adalah sampah, dan akan menggunakan sumber, termasuk masa kemas kini yang lebih lama, sebagai yum Secara lalai akan mengemas kini semuanya secara membabi buta ia menemui pakej baru/errata untuk.

Sumber perbelanjaan untuk menaik taraf beberapa pakej yang tidak diperlukan pada komputer riba dengan sambungan jalur lebar dan SSD mungkin tidak menjadi masalah, tetapi bayangkan pusat data dengan beratus -ratus atau ribuan komputer, dan anda mendapat gambar. Secara amnya adalah idea yang baik untuk memastikan semua sistem mudah, dan pengurusan sumber hanya satu titik. Sistem yang lebih kompleks, semakin banyak kesilapan yang terdedah. Lebih banyak komponen bermaksud lebih banyak pepijat.

Untuk mendapatkan gambaran keseluruhan mengenai pakej yang tidak diperlukan yang dipasang pada sistem, kita boleh menggunakan yum dan bungkusan-pembersihan dengan cara yang sama seperti pada centos, atau ciri lain yum, Autoremove:

Yum Autoremove


Pakej alat ini menandakan tidak diperlukan.

Semasa menggunakan mana-mana alat ini, dinasihatkan untuk menyemak semula apa yum akan dikeluarkan, dan mungkin menguji apa pembersihan akan menghasilkan mesin ujian dengan kandungan pakej yang sama sebelum membersihkan sistem pengeluaran.

Alat ini memang pandai, tetapi tidak semua tahu: contohnya, tidak akan ada entri dalam pangkalan data RPM mengenai aplikasi PHP tersuai yang berjalan di atas pelayan yang memanggil cawan untuk mencetak pesanan masuk pada pencetak yang disambungkan ke pelayan. Itu, di sana boleh menjadi entri jika aplikasi itu dibungkus dengan kebergantungan yang betul termasuk, dan dipasang dengan betul rpm atau yum - Tetapi itu memerlukan usaha, dan semua perkhidmatan perlu dibungkus dengan cara yang sama jika anda ingin merasa selamat dengan pembersihan automatik berasaskan yum.

Menyelesaikan masalah ketergantungan

Terutama dalam persekitaran yang besar, terdapat masalah ketergantungan semasa memasang atau menaik taraf sistem.

Tangkapan skrin di bawah menunjukkan isu mudah:

Menyelesaikan kebergantungan dengan rpm

Di skrin terminal di atas, kami cuba memasang nrpe pakej, pelanggan perlu memantau banyak aspek sistem dengan Nagios. Kami memuat turun pelanggan untuk pengedaran, tetapi kedua -duanya rpm dan yum gagal dengan ralat yang sama: nrpe pakej memerlukan (bergantung pada) Nagios-Common pakej. Dalam contoh ini, kita dapat memperoleh pakej yang diperlukan dari sumber yang sama, dan ketika memasang kedua -dua mereka rpm Utiliti melihat bahawa kebergantungan yang kita gagal pada awal akan dipenuhi oleh akhir transaksi dan memasang kedua -dua pakej, keluar dengan senyap dengan kejayaan.

Kesimpulan

Yum dan RPM adalah alat penting semasa bekerja dengan pengagihan menggunakan Pengurus Pakej RPM. Dengan mengetahui toolset itu lebih mudah, dan biasanya lebih selamat untuk menyelesaikan pemasangan, menaik taraf dan mengubahsuai tugas -tugas pada persekitaran perisian sistem tertentu.

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Fail Konfigurasi Linux: 30 teratas yang paling penting
  • Muat turun linux
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Bolehkah linux mendapat virus? Meneroka kelemahan Linux ..
  • Cara memasang yum di linux
  • Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..
  • Distro linux terbaik untuk pemaju
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?