У меня есть пользовательский rpm, предоставленный мне поставщиком, у которого есть зависимости, которые извлекаются при установке. Мне нужно установить этот пакет в закрытой сетевой системе, поэтому я не могу получить доступ к Интернету для сбора зависимостей. Однако я могу получить доступ к промежуточному серверу, который может получить доступ к Интернету, но не будет разрешать трафик из закрытой сети.
Можно ли создать локальный сетевой репозиторий, к которому закрытая сеть может получить доступ для установки этого пакета? Я уже создал репо в своем локальном каталоге, используя:
createrepo .
Я также попытался получить список зависимостей, используя:
rpm -qpR *package*
Как мне вытащить rpms или другие данные установки из списка зависимостей в локальное хранилище?
У меня было такое же требование, но я не смог получить 100% информации, которая мне нужна для этого, из этих ответов. Надеюсь, это кому-то поможет.
Эти команды необходимо запускать на исходном компьютере, имеющем подключение к Интернету.
yum install -y createrepo
# Add a local temporary directory
mkdir packages
# Download whatever packages you need to the temporary directory
yum install --downloadonly --downloaddir=packages perl
# Now, create the repository. If you need to add more packages, be sure to execute this
# command again before you bundle it up
createrepo packages
# Compress the packages directory:
tar -zcf packages.tgz packages
Теперь перенесите это на ваш целевой компьютер, у которого нет подключения к Интернету, и распакуйте архив:
tar -zxf packages.tgz -C /opt/
Создайте /etc/yum.repos.d/local.repo
и добавьте это содержимое:
[local]
name=Local Repository
baseurl=file:///opt/packages
enabled=1
gpgcheck=1
protect=1
Если вы обновляете пакет пакетов, вам нужно сначала очистить кеш, иначе ваши новые пакеты не будут найдены:
yum clean all
Теперь вы можете установить желаемый пакет без подключения к Интернету:
yum --disablerepo='*' --enablerepo=local install perl
В gpgcheck
Параметр очень важен, это означает, что вы проверяете, что пакеты не были изменены с момента выхода из вашего исходного компьютера, поскольку они подписаны ключом Red Hat. Обычно этого достаточно для большинства команд информационной безопасности.
yum install yum-utils
чтобы получить полезные утилиты управления пакетами. repotrack package
скачает все зависимости. Поместите это в каталог и запустите createrepo /srv/my/repo
Это репозиторий, который вы можете добавить в /etc/yum.repos.d/ закрытой системы с помощью URI файла:
[myrepo]
name = This is my repo
baseurl = file:///srv/my/repo/
В любом случае вам также понадобится система обновлений. Загрузите обновления в систему, подключенную к Интернету, и таким же образом поместите их в репо. (Обновления можно получить с помощью продукта управления, такого как Satellite, но это не обязательно.)
Вам нужно будет настроить yum для доступа к вашему локальному репо. Видеть https://wiki.centos.org/HowTos/CreateLocalRepos