Кажется, если пакет уже установлен, "yum install" попытается обновить его до последней версии. Это приведет к сбою "yum install", если в последней версии отсутствуют зависимости. Я знаю, что могу подавить это с помощью --skip-broken
, но я не хочу "пропускать сломанные" в случае пакетов, которые еще не установлены; в этом случае я хочу, чтобы он потерпел неудачу.
Я видел вэтот ответчто я могу сделать это с помощью оператора «if», если я устанавливаю только один пакет, но у меня есть оператор «yum install», содержащий около 15 пакетов, и я не хочу запускать его yum
несколько раз (по одному разу для каждого пакета), так как это добавляет много накладных расходов.
Как мне yum
установить только те пакеты, которые еще не установлены?
решение1
В конце концов я написал простой скрипт bash yum-install-if-missing.sh
на основе других ответов. Не уверен, есть ли более простой способ.
#!/bin/bash
yumcmd="yum install -y"
for var in "$@"
do
if ! rpm --quiet --query $var; then
yumcmd="$yumcmd $var"
fi
done
echo "ABOUT TO EXECUTE: $yumcmd"
eval $yumcmd
Затем его можно выполнить как: yum-install-if-missing.sh packageone packagetwo
и так далее.