Pobierz pakiety RPM dla polecenia, które jest już zainstalowane

12

Mam maszynę CentOS, na której już zainstalowałem openssl-devel przy użyciu

$ yum install openssl-devel 

Pobrał i zainstalował wszystkie pakiety zależności. Teraz potrzebuję tych wszystkich pakietów RPM. Czy można pobrać tylko pakiety RPM? Kiedy to zrobię:

 $ yum install  openssl-devel -y --downloadonly 

To mówi

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

ponieważ jest już zainstalowany.

Czy ktoś wie, jak pobrać te pakiety RPM w tym samym systemie?

abubacker
źródło

Odpowiedzi:

13

Możliwe jest pobranie pakietów RPM, które są już zainstalowane za pomocą --downloadonlyprzełącznika. Nie jestem pewien, dlaczego yum nie sprawdza tego ustawienia przed sprawdzeniem, czy pakiet jest już zainstalowany, ale sądzę, że może to być spowodowane przez architekturę narzędzia.

W każdym razie wszystko, co musisz zrobić, to powiedzieć yumowi o ponownej instalacji pakietu:

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

Oczywiście yum nie będzie wiedział, które zależności zostały zainstalowane tylko dla tego pakietu, więc jeśli weźmiesz RPM i spróbujesz zainstalować je w innym systemie, niektórych zależności może brakować. Istnieją sposoby na zbadanie całego wykresu zależności i jestem pewien, że zostało to już opisane w innym miejscu na SE.

JohnEye
źródło
7

yumdownloaderw yum-utilspobierze wszystkie pakiety, które przechodzą do niej, albo ewentualnie generowania adresów URL pakiety można pobrać z.

Ignacio Vazquez-Abrams
źródło
nie rozwiązuje zależności, wystarczy pobrać openssl-devel.x86_64.rpm
abubacker
Nie, to nie rozwiązuje zależności. Ale jak daleko chcesz narzędzie do rozwiązania zależności? glibc? filesystem?
Ignacio Vazquez-Abrams
1
moje wymaganie jest proste, muszę uzyskać listę rpms, aby zainstalować ją na innym komputerze, który jest w trybie offline
abubacker
Mówisz „prosty”, ale tak naprawdę nie jest tak prosty, jak myślisz. Nie ma narzędzia, które rozwiąże zależności, biorąc pod uwagę tylko listę pakietów, które są już zainstalowane.
Ignacio Vazquez-Abrams
1
właściwie to jest proste, yum install openssl-devel -y --downloadonly tylko jeśli wykonam to polecenie na innym komputerze, to rozwiąże wszystkie zależności, ale moje pytanie brzmi, czy to możliwe, aby zrobić to samo na komputerze, na którym zainstalowaliśmy to polecenie już
abubacker
3

Możesz użyć polecenia repotrack z pakietu yum-utils. Pobierze całe drzewo zależności - nawet jeśli jest już zainstalowane .

Przykład:

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


Przykładowe dane wyjściowe:

[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
źródło
1
Wycofałem notatkę o błędzie architektury, ponieważ tak naprawdę jest to oczekiwane zachowanie. (x86_64 jest nadzbiorem i686, dlatego polecenie pobiera również pakiety i686) Aby uzyskać więcej informacji, zobacz ten i ten artykuł.
Sami Badra
2

W dłuższej perspektywie jedną z możliwości może być wyznaczenie komputera jako tego, który ma być pobierany z Internetu, a następnie uruchomić na nim NFS (lub serwer WWW), aby udostępnić / var / cache / yum wewnętrznym hostom.

Następnie musisz zaktualizować konfigurację yum, aby dodać:

[main]
keepcache = 1

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

Po włączeniu buforowania każda operacja yum może pobrać dane pakietu ze skonfigurowanych repozytoriów.

W bardziej praktyczny sposób:

$ 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

Inne odpowiedzi faktycznie rozwiążą twój bezpośredni problem, który pomoże tylko wtedy, gdy uruchomisz yum reinstallpakiety, które już masz i potrzebujesz RPM.

iwaseatenbyagrue
źródło
0

Oto co robię:

sudo mniam zainstaluj --config =. / yum.conf --installroot = / tmp / f541Sdex --downloadonly --downloaddir / tmp / DL-e25xds $ (cat list-of-packages)

Sparsile
źródło