Próbuję zainstalować pakiet RPM innej firmy na RHEL5, który zależy od wersji sqlite 3.4. Według Yum mam już zainstalowaną wersję 3.3.6.
Czy istnieje sposób na wyświetlenie listy zainstalowanych pakietów, które zależą od sqlite 3.3.6?
package-management
rhel
yum
Bogaty
źródło
źródło
repoquery
można go użyć do wygenerowania ładnej, drzewiastej struktury wszystkich pakietów wymagających określonego pakietu, na przykład:repoquery --pkgnarrow=installed --tree-whatrequires sqlite
--installed
jest opcją,repoquery
ale jest nieważna dlarpm
.Odpowiedź
Objaśnienia
rpm -q --whatrequires sqlite
zgłasza tylko zależności od nazw pakietów.Przeciwnie,
repoquery
działa w następujący sposób (ze stron podręcznika):Przykład
Weźmy paczkę
libdb
.Żadne opakowanie nie zależy od tego
libdb
, więc powinniśmy być w stanie go płynnie usunąć. Jednak...Jak widać niektóre inne pakiety nie były bezpośrednio w zależności od pakietu, ale w aktach
libdb-5.3.so()(64bit)
przekazanych przez niego.Wreszcie, oto prawdziwa lista pakietów w zależności od
libdb
:źródło
W przypadku dnf (nowa wersja yum) możesz spróbować za pomocą polecenia otoki repoquery:
Jeśli nie jest dostępny, możesz zainstalować go za pomocą polecenia:
źródło
--installed --recursive
na końcu, więc zwraca tylko to, co jest faktycznie zainstalowane i nie pobiera z repozytoriówMożesz także wypróbować to polecenie.
Otrzymałem to polecenie z ServerFault, a także z forów Fedory.
źródło
Myślę, że tak naprawdę chcesz wiedzieć, „jakie są pakiety, które wymagają narzędzia sqlite-3.3.6, ale nie będą zadowolone z narzędzia sqlite-3.4.z” ... a jedynym dobrym sposobem na znalezienie tego jest: Spróbuj. Lubić:
źródło
Jak powiedział Wes Hardaker , dobrą wbudowaną metodą jest użycie
rpm -q --whatrequires <package>
. Chodzi o to, żerpm
działa na możliwościach rozwiązywania zależności, a nie tylko na pakietach, jak np.dpkg
W rodzinie dystrybucji Linuksa Debian / Ubuntu. Jak zauważyli inni, samo robienierpm -q --whatrequires sqlite
nie mówi całej historii, dlatego niektórzy sugerowali użycierepoquery
.repoquery
, jednak nie jest domyślnie instalowany w RHEL / CentOS 7 minimal (może też na komputerze?), więc może nie być dostępny dla wszystkich.Użytkownik może zrobić,
rpm -q --provides <pkgname>
aby zobaczyć wszystkie możliwości oferowane przez pakiet, a następnie użyć,rpm -q --whatrequires <capability>
aby zobaczyć, jakie zainstalowane pakiety wymagają takiej możliwości. Ta informacja może być zwięźle przeszukana za pomocą jedno-liniowej BASH (podzielonej tutaj na dwie linie dla długości):Używa tylko opcji wbudowanych w
rpm
siebie, więc nie wymaga instalowania żadnych dodatkowych pakietów (np.yum-utils
W CentOS 7, który zawiera pakietrepoquery
).źródło