Как убедиться, что установка yum прошла успешно в сценарии оболочки? - PullRequest
8 голосов
/ 09 декабря 2011

У меня есть сценарий оболочки, который проверяет, есть ли подключение к Интернету (с помощью pinging google), а затем вызывает

yum install packageA packageB --assumeyes

Как я могу подтвердить, что пакеты были установлены (или уже были установлены)?Сделаю ли я еще один вызов yum и проанализирую вывод (я предполагаю, что это становится очень сложным, если система на другом языке)?

Ответы [ 3 ]

12 голосов
/ 14 марта 2014

Я использовал следующий метод, который может быть не защищен от ошибок, но, кажется, работает:

Предполагая, что переменная PACKAGES содержит список пакетов, которые вы хотите установить, затем:

  1. Выполнить yum -y install $PACKAGES (я полагаю, если это скрипт, вы действительно хотите передать -y, чтобы избежать подсказок).
  2. Проверить состояние выхода для обнаружения некоторых условия отказа.
  3. Запуск rpm --query --queryformat "" $PACKAGES, который ничего не выдаст для каждого пакета, который был успешно установлен, и выдаст package <name> is not installed для каждого сбоя.
  4. Проверьте состояние выхода, котороеПохоже, это число пакетов, которые не были успешно установлены, т. е. при успешном выполнении будет равно 0.

Это будет работать, только если PACKAGES содержит простые имена пакетов, которые, как ожидается, yumнайти в репозитории, если он не содержит других вещей, которые yum принимает, например, URL-адреса, имена файлов или Provides: имен.

7 голосов
/ 09 декабря 2011

Исходя из этого случайного поста , похоже, что yum возвращает код ошибки в оболочку.Вы можете проверить это, выполнив команду, а затем сразу же (как следующая команда), выполнив:

echo $?

, которая выведет код возврата предыдущей команды.Успех должен быть 0, провал какой-то ненулевой.Но это только предположение, поскольку у меня нет коробки, доступной для меня на данный момент.:)

6 голосов
/ 09 декабря 2011

Пинг google.com не гарантирует доступность репозитория yum, к которому вы пытаетесь подключиться

Команда для проверки, установлен ли пакет: -

yum list installed PACKAGE_NAME
...