Otrzymuję odpowiedzi takie jak:
yum list installed | grep bind
lub
rpm -qa | grep bind
Ale to nie jest dokładne, ponieważ otrzymuję listę kilku innych pakietów wiązania, takich jak te:
bind-utils-9.8.2-0.17.rc1.el6_4.5.x86_64
rpcbind-0.2.0-11.el6.x86_64
bind-libs-9.8.2-0.17.rc1.el6_4.5.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-winbind-clients-3.6.9-151.el6.x86_64
ypbind-1.20.4-30.el6.x86_64
Nie tego chciałem. Zamiast tego chciałbym dokładnie sprawdzić, czy pakiet powiązania rdzenia został zainstalowany. Na przykład.bind.x86_64 32:9.8.2-0.17.rc1.el6_4.6
Miałem nadzieję na coś takiego:
yum check installed bind
Ale mam nadzieję, że ktoś może rzucić światło.
yum
rpm
package-management
suma kontrolna
źródło
źródło
Error: No matching Packages to list
i$?
zwracam 1, a kiedy próbowałemyum list installed bind-libs
,$?
zwraca 0. Co powinno być jak dotąd poprawne. Czy mogę bezpiecznie stwierdzić, że twoje polecenie dokładnie określa, czy pakiet jest zainstalowany?rpm -q bind
Właśnie się dowiedziałem . Czy jest to również równoznaczne z twoim poleceniem?yum list installed bind*
yum -C list installed bind
uniknąć sieci. Dzięki temu wszystkie wtyczki są włączone (na wypadek, gdybyś miał coś egzotycznego, co wpływa na wyszukiwania w yumdb), a także informuje o repo, z którego pakiet został zainstalowanyJest o wiele łatwiejszy sposób na wydanie tego zapytania:
rpm -qa | grep bind
lubrpm -q bind
. To pierwsze jest najlepsze, jeśli nie jesteś całkowicie pewien nazwy pakietu.źródło
rpm -q $package
uważam, że jest to najszybsze i najszybsze rozwiązanie, ponieważ robienie czegokolwiekyum
może wymusić aktualizację pamięci podręcznej (zwykle powolne).rpm
) powinno być akceptowaną odpowiedzią, ponieważ zwraca czysty status wyjścia i nie wymaga wywoływania wielu zdalnych adresów URL, jakyum
rozwiązania.yum
irpm
wykonaj to samo zachowanie we wszystkich przykładach mogę myśleć (0 = zainstalowany, 1 = Nie zainstalowano / Error), więc dobrze byłoby wiedzieć, czy widzisz inny kod wyjścia. Proszę spojrzeć na moją odpowiedź powyżej dotyczącą używania pamięci podręcznej w celu uniknięcia dostępu do sieciyum -C
aby zapobiec spędzaniu przez yum całego dodatkowego czasu na kontaktowaniu się z hostami sieciowymi. Dziękuję, teraz widzę, jak można używać wymiennie yum i rpm tutaj !!Analiza wyników tego polecenia jest najbardziej kompletną odpowiedzią. Musisz znać dokładną nazwę pakietu.
źródło
bind
jest dostępny / ważny pakiet yum zamiast mówić mi, czy jest zainstalowane?Najlepszy linijka, jaką wymyśliłem, aby to zrobić (która jest świetna do szybkiego użycia w skryptach) to:
Na przykład: jeśli aktualnie
git
zainstalowałem:To wróci
installed
Jeśli aktualnie nie mam
git
zainstalowanej, ta sama poprzednia komenda zwróci:base/7/x86_64
która jest bieżącą dostępną instalacjągit
źródło
yum list installed
. Stamtąd możesz użyćgrep
polecenia, aby uzyskać dokładniejszą odpowiedź na to, czego szukasz. Również jeśli chcesz sprawdzić konkretny pakiet, możesz dodać go do swojego polecenia - npphp70w
. :yum list installed php70w
No matching Packages to list
Użyj kodu Python, aby sprawdzić, czy pakiet jest zainstalowany w Pythonie, używając yum:
źródło
not in
?Jeśli wynikiem jest 0 (zero), pakiet jest instalowany
źródło
rpm -q bind
rozwiązania pokazanego w odpowiedzi Johna.yum -C ...
byłoby szybkie.