Назад | Перейти на главную страницу

локальный репозиторий rpm, содержащий все пакеты, установленные в системе

я пытаюсь создать USB-диск с локальным репозиторием / каталогом для автономной установки (или обновления) серверов Linux. Зачем !? Просто, я работаю над обслуживанием огромного кластера IP-АТС звездочки, звездочка (и дахди, и ...) построена на исходных кодах ядра, и если версия ядра изменена (отличается от той, к которой я привык) build), то катастрофа ждет своего часа. Теперь моя идея состоит в том, чтобы разместить все rpm / srpm, которые установлены на одном сервере (разработка), и установить / обновить все остальные серверы до той же версии rpm. Легкий способ сделать это - заставить YUM загрузить все установленные пакеты rpm в какой-либо каталог, затем скопировать их на usb-flash_disk и сделать на всех остальных серверах «yum install ./*.rpm»!? Итак, у меня все системы одной версии!

Вопрос: как указать YUM загружать (только) все установленные пакеты rpm ???

Есть 2 варианта

Либо используйте rpm (Red Hat Package Manager), либо yum (Yellowdog Updater / Modifier)

1) об / мин

rpm -qa > to_be_installed; while read -r package; do yum -y install "$package"; done < to_be_installed

2) НЯМ

yum list installed | awk 'NR>1{print $1}' > to_be_installed; while read -r line; do yum -y install "$line"; done < to_be_installed

Надеюсь, это даст вам несколько идей, как это сделать.

Вы можете получить список установленных пакетов с помощью yum list installed, вы можете немного очистить его с помощью

yum list installed | awk 'NR >2 {print $1}' >installed.pkg

Когда у вас есть список, вы можете использовать yumdownloader утилита для загрузки пакетов

for file in $(cat installed.pkg)
do
    yumdownloader "$file"
done

это загрузит все rpms в текущий каталог.

Я считаю, что два приведенных выше ответа дадут разные результаты:

Случай A) [как показано выше]

rpm -qa > to_be_installed; while read -r package; do yum -y install "$package"; done < to_be_installed

Случай B) [как показано выше]

yum list installed | awk '{print $1}' > to_be_installed; while read -r line; do yum -y install "$line"; done < to_be_installed

В случае A) rpm -qa вернет "полное" имя rpm, включая информацию о версии.
В случае B) имя пакета (с суффиксом архитектуры) находится в первом столбце, версия - во втором столбце.

Итак, в случае A) вы получите все установленные в настоящий момент пакеты RPM.
В случае B) вы получите все САМЫЕ ПОСЛЕДНИЕ версии пакетов (для вашего выпуска).

Другая серьезная проблема при попытке запустить автономные обновления заключается в том, что переключатель --resolve в yumdownloader не работает должным образом (он не разрешает все зависимости).

Я использую следующую процедуру:

  1. получить машину с моими фактическими установленными пакетами, подключенными к Интернету
  2. если я собираюсь обновить, то я ням обновляю эту машину из Интернета
  3. процесс обновления с помощью yum делает две вещи

    i) обновляет все версии моих rpms И

    ii) разрешает все зависимости пакетов

  4. затем

    yumdownloader rpm -qa --destdir = / путь / rpm_updates

Я не могу создать репозиторий на основе локальных файлов из каталога /path/rpm_updates, поместите это на USB и обновите машину (в автономном режиме) из этого списка rpms.