Завантажте пакети 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

yumdownloaderв yum-utilsзавантажить будь-які пакети , які ви пройти до нього, або при необхідності генерувати URL - пакети можуть бути завантажені з.


вона не вирішує залежності, вона просто завантажує openssl-devel.x86_64.rpm
abubacker

Ні, це не вирішує залежності. Але наскільки далеко ви хотіли б інструмент для вирішення залежностей? glibc? filesystem?
Ігнасіо Васкес-Абрамс

1
моя вимога проста, мені потрібно отримати список rpms, встановити його на іншій машині, яка знаходиться в офлайні
abubacker

Ви кажете "просто", але насправді це не так просто, як ви думаєте. Немає інструменту, який би вирішував залежності, задаючи лише перелік пакетів, які вже встановлені.
Ігнасіо Васкес-Абрамс

1
насправді це просто, yum install 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 config, щоб додати:

[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 $ (список котів пакетів)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.