2012-10-09 13 views
14

Potrzebuję sprawdzić zainstalowane pakiety, a jeśli nie jest zainstalowane, zainstaluj je.Sprawdzanie zainstalowanych pakietów i jeśli nie zostanie znaleziony, zainstaluj

Przykład dla RHEL, CentOS, Fedora:

rpm -qa | grep glibc-static 
glibc-static-2.12-1.80.el6_3.5.i686 

Jak zrobić test w bash?

Czy robię coś takiego?

if [ "$(rpm -qa | grep glibc-static)" != "" ] ; then 

Co muszę użyć w innych dystrybucjach? apt-get?

+1

Dlaczego po prostu nie zrobić im wymagane przez swoich pakietów i mieć pakiet menedżer radzi sobie z tym wszystkim? –

+0

To tylko prosty skrypt instalacyjny bash do automatyzacji niektórych rzeczy. :) –

Odpowiedz

35

Wypróbuj poniższy kod:

if ! rpm -qa | grep -qw glibc-static; then 
    yum install glibc-static 
fi 

lub krótszy:

rpm -qa | grep -qw glibc-static || yum install glibc-static 

dla Debiana Lubi:

dpkg -l | grep -qw package || apt-get install package 

Dla ArchLinux:

pacman -Qq | grep -qw package || pasman -S package 
+0

co to znaczy ?qw? – RafaSashi

+0

Cicha + tylko całe słowa, nie tylko część słów –

+0

ok! dzięki stArdustͲ. całkiem użyteczne – RafaSashi

0

podstawie @GillesQuenot i @Kidbulra odpowiedzi, oto przykład jak pętla na wielu opakowaniach i zainstalować jeśli brakuje:

packageList="git gcc python-devel" 

for packageName in $packageList; do 
    rpm --quiet --query $packageName || sudo yum install -y $packageName 
done 
Powiązane problemy