Chcę, aby metoda skryptów powłoki testowała / raportowała, czy pakiet jest zainstalowany. Nie potrzebuję szczegółów, tylko powrót logiczny, aby ustawić przepływ logiki. Spojrzałem na Znajdź, czy pakiet jest zainstalowany , ale dpkg
zwraca złożone dane wyjściowe, a jego format zmienia się w zależności od tego, czy pakiet znajduje się w repozytorium Debiana, czy w Ubuntu PPA.
Odkryłem, że apt-cache
robi to całkiem niezłą robotę i wymyśliłem tę metodę:
is_installed=0
test_installed=( `apt-cache policy package-name | grep "Installed:" ` )
[ ! "${test_installed[1]}" == "(none)" ] && is_installed=1
Czy ktoś zna prostszy lub bardziej bezpośredni sposób?
dpkg-query -l "$package" | grep -q ^.i
jest to zwykle wystarczające (i łatwiejsze do zapamiętania).