Ich muss nach installierten Paketen suchen und diese nicht installieren.
Beispiel für RHEL, CentOS, Fedora:
rpm -qa | grep glibc-static
glibc-static-2.12-1.80.el6_3.5.i686
Wie überprüfe ich BASH?
Mache ich so etwas?
if [ "$(rpm -qa | grep glibc-static)" != "" ] ; then
Und was muss ich für andere Distributionen verwenden? apt-get?
Versuchen Sie den folgenden Code:
if ! rpm -qa | grep -qw glibc-static; then
yum install glibc-static
fi
oder kürzer:
rpm -qa | grep -qw glibc-static || yum install glibc-static
Für Debian-Likes:
dpkg -l | grep -qw package || apt-get install package
Für archlinux:
pacman -Qq | grep -qw package || pacman -S package
Basierend auf den Antworten von @GillesQuenot und @Kidbulra wird hier ein Beispiel gezeigt, wie über mehrere Pakete gelooptet wird -/und falls fehlend installiert wird:
packageList="git gcc python-devel"
for packageName in $packageList; do
rpm --quiet --query $packageName || Sudo yum install -y $packageName
done
if [ $(yum list installed | cut -f1 -d" " | grep --extended '^full name of package being checked$' | wc -l) -eq 1 ]; then
echo "installed";
else
echo "missing"
fi
Ich verwende dies, weil es installiert/vermisst zurückgegeben wird, ohne auf einen Fehlerstatus angewiesen zu sein (was zu Problemen in Skripts führen kann, die einen "No Tolerance" -Ansatz für Fehler über verwenden
set -o errexit
zum Beispiel)
Wenn Sie dies gegen heruntergeladene RPMs tun. du kannst es durch.
rpm -Uvh package-name-version-tag.rpm