я пытаюсь создать 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 не работает должным образом (он не разрешает все зависимости).
Я использую следующую процедуру:
процесс обновления с помощью yum делает две вещи
i) обновляет все версии моих rpms И
ii) разрешает все зависимости пакетов
затем
yumdownloader rpm -qa
--destdir = / путь / rpm_updates
Я не могу создать репозиторий на основе локальных файлов из каталога /path/rpm_updates
, поместите это на USB и обновите машину (в автономном режиме) из этого списка rpms.