У меня есть машина CentOS, на которой я уже установил openssl-devel, используя
$ yum install openssl-devel
Он загрузил и установил все пакеты зависимостей. Теперь мне нужны все эти пакеты RPM. Можно ли загружать только пакеты RPM? Когда я это сделаю:
$ yum install openssl-devel -y --downloadonly
Это говорит
Package 1:openssl-devel-1.0.1e-4.fc18.x86_64 already installed and latest version
поскольку он уже установлен.
Кто-нибудь знает, как загрузить эти пакеты RPM в той же системе?
Можно загрузить пакеты уже установленного RPM с помощью --downloadonly
переключатель. Я не уверен, почему yum не проверяет этот параметр, прежде чем проверять, установлен ли уже пакет, но я предполагаю, что это может быть вызвано базовой архитектурой инструмента.
В любом случае, все, что вам нужно сделать, это сказать ням переустановить посылка:
yum --downloadonly --downloaddir=/tmp/rpm_files/ reinstall package_name
Конечно, yum не будет знать, какие зависимости были установлены только для этого пакета, поэтому, если вы возьмете RPM и попытаетесь установить их в другой системе, некоторые зависимости могут отсутствовать. Есть способы исследовать весь граф зависимостей, и я уверен, что это уже было описано в другом месте на SE.
yumdownloader
в yum-utils
загрузит любые пакеты, которые вы ему передадите, или, при необходимости, сгенерирует URL-адреса, с которых можно загрузить пакеты.
Вы можете использовать пересматривать из пакета yum-utils. Он загрузит все дерево зависимостей - даже если он уже установлен.
Пример:
sudo yum install yum-utils # Install yum-utils
sudo repotrack openssl-devel # Download all dependencies for openssl-devel
Пример вывода:
[sbadra@rhel6 ~]$ sudo yum install openssl-devel
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Setting up Install Process
Package openssl-devel-1.0.1e-57.el6.x86_64 already installed and latest version
Nothing to do
[sbadra@rhel6 ~]$ sudo repotrack openssl-devel
Downloading audit-libs-2.4.5-6.el6.x86_64.rpm
Downloading audit-libs-2.4.5-6.el6.i686.rpm
Downloading basesystem-10.0-4.el6.noarch.rpm
Downloading bash-4.1.2-48.el6.x86_64.rpm
Downloading ca-certificates-2017.2.14-65.0.1.el6_9.noarch.rpm
Downloading chkconfig-1.3.49.5-1.el6.x86_64.rpm
Downloading coreutils-8.4-46.el6.x86_64.rpm
Downloading coreutils-libs-8.4-46.el6.x86_64.rpm
.... more packages ....
Downloading openssl-1.0.1e-57.el6.i686.rpm
Downloading openssl-1.0.1e-57.el6.x86_64.rpm
Downloading openssl-devel-1.0.1e-57.el6.i686.rpm
Downloading openssl-devel-1.0.1e-57.el6.x86_64.rpm
.... more packages ....
Downloading sed-4.2.1-10.el6.x86_64.rpm
Downloading setup-2.8.14-23.el6.noarch.rpm
Downloading tzdata-2018c-1.el6.noarch.rpm
Downloading zlib-1.2.3-29.el6.x86_64.rpm
Downloading zlib-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.x86_64.rpm
Одна из возможностей в долгосрочной перспективе может заключаться в том, чтобы назначить машину для загрузки из Интернета, а затем запустить на ней NFS (или веб-сервер), чтобы открыть / var / cache / yum для внутренних хостов.
Затем вам нужно будет обновить конфигурацию yum, чтобы добавить:
[main]
keepcache = 1
После того, как вы включили кеширование, каждая операция yum может загружать данные пакета из настроенных репозиториев.
В более практическом плане:
$ sudo yum install -y nginx
$ sudo find /var/cache/yum/ -type f -name '*.rpm'
<...snip....>
/var/cache/yum/x86_64/7/epel/packages/nginx-1.10.2-1.el7.x86_64.rpm
Другие ответы будут фактически решить вашу непосредственную проблему, где это поможет, только если вы запустите yum reinstall
для пакетов, которые у вас уже есть, и для которых нужны RPM.
Вот что я делаю:
sudo yum install --config=./yum.conf
--installroot=/tmp/f541Sdex
--downloadonly
--downloaddir /tmp/DL-e25xds
$(cat list-of-packages)