Scarica i pacchetti RPM per il comando che è già installato


12

Ho una macchina CentOS in cui ho già installato openssl-devel usando

$ yum install openssl-devel 

Ha scaricato e installato tutti i pacchetti di dipendenza. Ora ho bisogno di tutti quei pacchetti RPM. È possibile scaricare solo i pacchetti RPM? Quando faccio questo:

 $ yum install  openssl-devel -y --downloadonly 

Dice

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

poiché è già installato.

Qualcuno sa come scaricare quei pacchetti RPM sullo stesso sistema?

Risposte:


13

È possibile scaricare i pacchetti di un RPM che è già installato utilizzando lo --downloadonlyswitch. Non sono sicuro del motivo per cui yum non controlla questa impostazione prima di verificare se il pacchetto è già installato, ma immagino che potrebbe essere causato dall'architettura sottostante dello strumento.

Ad ogni modo, tutto ciò che devi fare è dire a yum di reinstallare il pacchetto:

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

Naturalmente, yum non saprà quali dipendenze sono state installate solo per questo pacchetto, quindi se si prendono gli RPM e si tenta di installarli su un sistema diverso, alcune dipendenze potrebbero mancare. Esistono modi per esplorare l'intero grafico delle dipendenze e sono sicuro che questo sia già stato descritto altrove su SE.


7

yumdownloaderin yum-utilsscaricherà tutti i pacchetti che gli passerai, o facoltativamente genererà gli URL da cui i pacchetti possono essere scaricati.


le sue dipendenze non si risolvono, basta scaricare openssl-devel.x86_64.rpm
abubacker

No, non risolve le dipendenze. Ma quanto tempo vorresti che lo strumento risolvesse le dipendenze? glibc? filesystem?
Ignacio Vazquez-Abrams,

1
il mio requisito è semplice, ho bisogno di ottenere l'elenco di rpms, per installarlo su un'altra macchina, che è in linea
abubacker

Dici "semplice", ma in realtà non è così semplice come pensi. Non esiste uno strumento che risolva le dipendenze dato solo un elenco di quali pacchetti sono già installati.
Ignacio Vazquez-Abrams,

1
in realtà è semplice, yum install openssl-devel -y --downloadonly se eseguo questo comando su un'altra macchina, risolverà tutte le dipendenze, ma la mia domanda è se è possibile fare lo stesso in una macchina su cui abbiamo installato quel comando già
abubacker

3

È possibile utilizzare il comando repotrack dal pacchetto yum-utils. Scaricherà l'intero albero delle dipendenze, anche se è già installato .

Esempio:

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


Uscita campione:

[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
Ho ritirato la nota sul bug dell'architettura poiché in realtà è il comportamento previsto. (x86_64 è un superset di i686, motivo per cui il comando scarica anche i pacchetti i686) Vedi questo e questo articolo per maggiori informazioni.
Sami Badra,

2

Una possibilità a lungo termine potrebbe essere quella di designare una macchina come quella da scaricare da Internet, quindi eseguire NFS (o un server web) su di essa per esporre / var / cache / yum agli host interni.

Dovresti quindi aggiornare la tua configurazione yum, per aggiungere:

[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 :

Una volta abilitata la memorizzazione nella cache, ogni operazione yum può scaricare i dati del pacchetto dai repository configurati.

In termini più pratici:

$ 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

Le altre risposte risolveranno effettivamente il tuo problema immediato, dove ciò sarà di aiuto solo se corri yum reinstallper i pacchetti che già possiedi e per i quali desideri gli RPM.


0

Ecco cosa faccio:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.