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

Как установить RPM на полностью изолированную машину?

Итак, у меня есть одна машина, на которой я установил CentOS Minimal и ничего больше. Он полностью изолирован. Это означает следующее:

Моя цель:

Поэтому я искал в Google, как загрузить пакет RPM и их зависимостей, а затем установить их в автономной системе.

Итак, я сделал это на своем ноутбуке с macOS:

$ docker run -v $PWD/pkg:/pkg centos:7
# mkdir /tmp/empty
# yum install -y \
  --installroot /tmp/empty \
  --releasever 7 \
  --downloadonly \
  --downloaddir /pkg \
  docker

Теперь у меня в папке много файлов RPM. Я помещаю эту папку на USB-накопитель и вставляю ее в свою изолированную машину CentOS. Потом бегу:

$ yum install /tmp/pkg/*
...
Error: Package: rpm-python-4.11.3-32.el7.x86_64 (installed)
           Requires: rpm = 4.11.3-32.el7
           Removing: rpm-4.11.3-32.el7.x86_64 (installed)
               rpm = 4.11.3-32.el7
           Updated By: rpm-4.11.3-35.el7.x86_64 (/rpm-4.11.3-35.el7.x86_64)
               rpm = 4.11.3-35.el7

Я также попытался превратить папку в репозиторий, запустив createrepo внутри него на моем Mac через докер (так как у меня нет createrepo на изолированной машине и не может на ней ничего установить). Но это дает мне ту же ошибку.

Итак, какие у меня здесь варианты? Мне кажется, что из-за ада зависимостей я должен фактически зеркалировать весь репозиторий CentOS. Если бы мне понадобился пакет от EPEL, мне бы пришлось отзеркалить и его. Это много гигабайт, которые нужно передать и сохранить только для установки докера на изолированной машине.

Есть ли какое-нибудь жизнеспособное решение для этого?

Дополнительный вопрос: что, если я запустил RHEL на изолированной машине вместо CentOS?

Лучше всего сохранить на этом USB-диске более полное зеркало. Ты можешь использовать reposync для зеркалирования удаленного репозитория на ваше хранилище. Регулярно запускайте его, чтобы поддерживать актуальность. Затем используйте createrepo для создания / обновления метаданных вашего репо. Наконец, на изолированном хосте настройте репозиторий yum для точки монтирования этого USB-диска.

[usb]
name=Airgaps Are Fun
baseurl=file:///mnt/usbdisk
enabled=1
gpgcheck=1
gpgkey=file:///mnt/usbdisk/gpgkey

Все остальное станет кошмаром при выходе из игры.

Я думаю ты можешь бежать rpm -q -R -p <package.rpm> (может быть эквивалент yum), чтобы просмотреть необходимые зависимости пакета. Вы можете передать этот вывод вызову для загрузки этих зависимостей. Очевидно, вам нужно будет сделать это на машине с подключением к сети, но вы можете переместить полученные файлы на отключенный компьютер и установить их итеративно. Я полагаю, их заказ может быть проблемой, но у вас будут все необходимые элементы, и если вы просто запустите установку несколько раз, вы в конечном итоге получите все.

Вы упомянули докер и CentOS, поэтому не уверены, видели ли вы этот вопрос уже: Установка Docker на изолированном (без интернета) компьютере Centos 7?