Загрузите пакеты 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.