Unduh paket RPM untuk perintah yang sudah diinstal

12

Saya memiliki mesin CentOS di mana saya telah menginstal openssl-devel menggunakan

$ yum install openssl-devel 

Itu mengunduh dan menginstal semua paket ketergantungan. Sekarang saya membutuhkan semua paket RPM itu. Apakah mungkin untuk mengunduh hanya paket RPM? Ketika saya melakukan ini:

 $ yum install  openssl-devel -y --downloadonly 

Ia mengatakan

Package 1:openssl-devel-1.0.1e-4.fc18.x86_64 already installed and latest version

karena sudah diinstal.

Adakah yang tahu cara mengunduh paket RPM tersebut pada sistem yang sama?

abubacker
sumber

Jawaban:

13

Dimungkinkan untuk mengunduh paket-paket RPM yang sudah diinstal menggunakan --downloadonlysakelar. Saya tidak yakin mengapa yum tidak memeriksa pengaturan ini sebelum memeriksa apakah paket sudah diinstal, tapi saya kira itu bisa disebabkan oleh arsitektur alat yang mendasarinya.

Bagaimanapun, yang perlu Anda lakukan adalah memberi tahu yum untuk menginstal ulang paket:

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

Tentu saja, yum tidak akan tahu dependensi mana yang diinstal hanya untuk paket ini, jadi jika Anda mengambil RPM dan mencoba menginstalnya pada sistem yang berbeda, beberapa dependensi mungkin hilang. Ada cara untuk menjelajahi seluruh grafik ketergantungan dan saya yakin ini sudah dijelaskan di tempat lain di SE.

JohnEye
sumber
7

yumdownloaderin yum-utilsakan mengunduh paket apa pun yang Anda lewati, atau secara opsional menghasilkan URL dari paket yang dapat diunduh.

Ignacio Vazquez-Abrams
sumber
tidak menyelesaikan dependensi, hanya mengunduh openssl-devel.x86_64.rpm
abubacker
Tidak, itu tidak menyelesaikan dependensi. Tetapi seberapa jauh Anda ingin alat untuk menyelesaikan dependensi? glibc? filesystem?
Ignacio Vazquez-Abrams
1
persyaratan saya sederhana, saya perlu mendapatkan daftar rpms, untuk menginstalnya di komputer lain, yang sedang offline
abubacker
Anda mengatakan "sederhana", tetapi sebenarnya tidak sesederhana yang Anda pikirkan. Tidak ada alat yang akan menyelesaikan dependensi yang diberikan hanya daftar paket mana yang sudah diinstal.
Ignacio Vazquez-Abrams
1
sebenarnya itu sederhana, yum instal openssl-devel -y --downloadonly jika saya melakukan perintah ini di komputer lain, itu akan menyelesaikan semua dependensi, tetapi pertanyaan saya adalah apakah mungkin untuk melakukan hal yang sama di mesin yang kami instal perintah itu sudah
abubacker
3

Anda dapat menggunakan perintah pemecahanrack dari paket yum-utils. Ini akan mengunduh seluruh pohon dependensi - bahkan jika sudah diinstal .

Contoh:

sudo yum install yum-utils      # Install yum-utils
sudo repotrack openssl-devel    # Download all dependencies for openssl-devel


Output sampel:

[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
Sami Badra
sumber
1
Saya menarik kembali catatan tentang bug arsitektur karena itu sebenarnya perilaku yang diharapkan. (x86_64 adalah superset dari i686, itulah sebabnya perintah ini juga mengunduh paket i686) Lihat ini dan artikel ini untuk info lebih lanjut.
Sami Badra
2

Salah satu kemungkinan dalam jangka panjang adalah menunjuk mesin sebagai yang diunduh dari internet, kemudian jalankan NFS (atau server web) di atasnya untuk mengekspos / var / cache / yum ke host internal.

Anda kemudian perlu memperbarui konfigurasi yum Anda, untuk menambahkan:

[main]
keepcache = 1

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

Setelah Anda mengaktifkan caching, setiap operasi yum dapat mengunduh data paket dari repositori yang dikonfigurasi.

Dalam istilah yang lebih praktis:

$ 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

Jawaban lain sebenarnya akan menyelesaikan masalah langsung Anda, di mana ini hanya akan membantu jika Anda menjalankan yum reinstalluntuk paket yang sudah Anda miliki, dan menginginkan RPM.

iwaseatenbyagrue
sumber
0

Inilah yang saya lakukan:

sudo yum install --config =. / yum.conf --installroot = / tmp / f541Sdex --downloadonly --downloaddir / tmp / DL-e25xds $ (daftar paket cat)

Jarang
sumber