Загрузите пакеты RPM для команды, которая уже установлена


12

У меня есть машина 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 в той же системе?

Ответы:


13

Можно загрузить пакеты RPM, который уже установлен, используя --downloadonlyкоммутатор. Я не уверен, почему yum не проверяет этот параметр, прежде чем проверять, установлен ли пакет, но я предполагаю, что это может быть вызвано базовой архитектурой инструмента.

В любом случае, все, что вам нужно сделать, это сказать yum переустановить пакет:

yum --downloadonly --downloaddir=/tmp/rpm_files/ reinstall package_name

Конечно, yum не будет знать, какие зависимости были установлены только для этого пакета, поэтому, если вы возьмете RPM и попытаетесь установить их в другой системе, некоторые зависимости могут отсутствовать. Есть способы исследовать весь граф зависимостей, и я уверен, что это уже было описано в SE.


7

yumdownloaderin yum-utilsзагрузит все пакеты, которые вы передадите ему, или при желании сгенерирует URL-адреса, с которых можно загрузить пакеты.


он не разрешает зависимости, он просто скачивает openssl-devel.x86_64.rpm
abubacker

Нет, это не разрешает зависимости. Но как далеко вы хотели бы использовать инструмент для разрешения зависимостей? glibc? filesystem?
Игнасио Васкес-Абрамс

1
Мое требование простое, мне нужно получить список rpms, установить его на другую машину, которая находится в автономном режиме
abubacker

Вы говорите «просто», но на самом деле все не так просто, как вы думаете. Не существует инструмента, который разрешает зависимости, учитывая только список пакетов, которые уже установлены.
Игнасио Васкес-Абрамс

1
на самом деле это просто, yum установить openssl-devel -y --downloadonly, если я делаю эту команду на другом компьютере, это разрешит все зависимости, но мой вопрос заключается в том, возможно ли сделать то же самое на компьютере, на котором мы установили эту команду уже
abubacker

3

Вы можете использовать команду repotrack из пакета 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

1
Я отозвал записку об ошибке архитектуры, так как на самом деле это ожидаемое поведение. (x86_64 - это расширенный набор i686, поэтому команда также загружает пакеты i686). Дополнительная информация приведена в этой и этой статьях.
Сами Бадра

2

В более долгосрочной перспективе одной из возможностей может быть назначение машины для загрузки из Интернета, а затем запуск на ней NFS (или веб-сервера) для предоставления / var / cache / yum внутренним хостам.

Затем вам нужно будет обновить конфигурацию yum, чтобы добавить:

[main]
keepcache = 1

По https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Working_with_Yum_Cache.html :

Как только вы включили кэширование, каждая операция 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 для них.


0

Вот что я делаю:

sudo yum install --config =. / yum.conf --installroot = / tmp / f541Sdex --downloadonly --downloaddir / tmp / DL-e25xds $ (список пакетов cat)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.