Пропустить уже установленные пакеты в «yum install»?

Пропустить уже установленные пакеты в «yum install»?

Кажется, если пакет уже установлен, "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и так далее.

Связанный контент