2012-10-09 38 views
14

Tôi cần kiểm tra các gói đã cài đặt và nếu chưa cài đặt chúng.Kiểm tra các gói đã cài đặt và nếu không tìm thấy cài đặt

Ví dụ cho RHEL, CentOS, Fedora:

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

Làm thế nào để làm một kiểm tra trong BASH?

Tôi có làm gì đó không?

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

Và tôi cần sử dụng gì cho các bản phân phối khác? apt-get?

+1

Tại sao không chỉ làm cho họ theo yêu cầu của gói của bạn và có các gói quản lý đối phó với tất cả những điều đó? –

+0

Nó chỉ là một kịch bản cài đặt bash đơn giản để tự động hóa một số thứ. :) –

Trả lời

35

Hãy thử đoạn mã sau:

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

hoặc ngắn hơn:

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

Đối với debian thích:

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

Đối archlinux:

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

có nghĩa là gì? – RafaSashi

+0

Im lặng + chỉ toàn bộ từ, không chỉ là một phần của các từ –

+0

ok! cảm ơn stArdustͲ. khá hữu ích – RafaSashi

0

Dựa trên @GillesQuenot và @Kidbulra câu trả lời, đây là một ví dụ làm thế nào để vòng lặp trên nhiều gói, và cài đặt nếu thiếu:

packageList="git gcc python-devel" 

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