Saya mencoba menginstal paket RPM pihak ke-3 di RHEL5 yang tergantung pada versi 3.4 dari sqlite. Menurut Yum saya sudah menginstal 3.3.6.
Apakah ada cara untuk mendaftar paket yang diinstal yang bergantung pada sqlite 3.3.6?
package-management
rhel
yum
Kaya
sumber
sumber
repoquery
dapat digunakan untuk menghasilkan struktur seperti pohon semua paket yang memerlukan paket tertentu, misalnya:repoquery --pkgnarrow=installed --tree-whatrequires sqlite
--installed
adalah opsi untukrepoquery
tetapi tidak valid untukrpm
.Menjawab
Penjelasan
rpm -q --whatrequires sqlite
hanya melaporkan ketergantungan pada nama paket.Sebaliknya,
repoquery
bertindak sebagai berikut (dari halaman manual):Contoh
Ayo ambil paket
libdb
.Tidak ada paket yang tergantung
libdb
, jadi kita harus bisa menghapusnya dengan lancar. Namun...Seperti yang Anda lihat, beberapa paket lainnya tidak tergantung langsung pada paket tersebut, tetapi pada file yang
libdb-5.3.so()(64bit)
disediakannya.Akhirnya, inilah daftar paket yang sebenarnya tergantung pada
libdb
:sumber
Untuk dnf (versi baru yum), Anda dapat mencoba dengan perintah pembungkus repoquery:
Jika tidak tersedia, Anda dapat menginstalnya dengan perintah:
sumber
--installed --recursive
pada akhirnya sehingga hanya mengembalikan apa yang sebenarnya diinstal dan tidak menarik dari repositoriAnda juga dapat mencoba perintah ini.
Saya mendapat perintah ini dari ServerFault dan juga dari Forum Fedora.
sumber
Saya pikir apa yang benar-benar ingin Anda ketahui adalah "paket apa saja yang membutuhkan sqlite-3.3.6, tetapi tidak akan senang dengan sqlite-3.4.z" ... dan satu-satunya cara yang baik untuk mengetahuinya, adalah dengan Cobalah. Suka:
sumber
Seperti yang dikatakan Wes Hardaker , metode bawaan yang baik adalah dengan menggunakan
rpm -q --whatrequires <package>
. Masalahnya,rpm
beroperasi pada kemampuan untuk resolusi dependensi, tidak hanya pada paket, seperti misalnyadpkg
dalam distribusi Linux keluarga Debian / Ubuntu. Seperti yang telah dicatat oleh orang lain, sekadar melakukanrpm -q --whatrequires sqlite
tidak menceritakan keseluruhan cerita, karenanya mengapa beberapa orang menyarankan untuk menggunakanrepoquery
.repoquery
Namun, tidak diinstal secara default di RHEL / CentOS 7 minimal (mungkin desktop juga?), jadi mungkin tidak tersedia untuk semua orang.Seorang pengguna dapat melakukan
rpm -q --provides <pkgname>
untuk melihat semua kemampuan yang disediakan paket, lalu gunakanrpm -q --whatrequires <capability>
untuk melihat paket apa yang diinstal memerlukan kemampuan itu. Info ini dapat dengan singkat ditanyakan menggunakan BASH one-liner (dipisahkan di sini menjadi dua baris):Ini hanya menggunakan opsi bawaan untuk
rpm
dirinya sendiri, sehingga tidak perlu menginstal paket tambahan apa pun (mis.yum-utils
Dalam CentOS 7, yang merupakan paket yang berisirepoquery
).sumber