Итак, у меня есть одна машина, на которой я установил CentOS Minimal и ничего больше. Он полностью изолирован. Это означает следующее:
Моя цель:
yum install docker
на нем, чтобы он мог запускать контейнеры.Поэтому я искал в 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?