Różnica między aktualizacją yum a instalacją yum

20

Podczas pracy z rpmpoleceniem zauważyłem, że jeśli zainstaluję, some-package-1.0a następnie wykonam kolejne, rpm -ivh some-package-1.1oba pakiety zostaną wyświetlone, gdy zrobię coś rpm -qa | grep some-packagetakiego:

some-package-1.0
some-package-1.1

Jednak zamiast instalować 1.1, jeśli uaktualnię za pośrednictwem rpm -Uvh some-package-1.1, otrzymam pożądany wynik pojedynczego pakietu (1.1) rpm -qa | grep some-package.

Czy to samo zachowanie obowiązuje w przypadku yum installi yum update?

Pytam, ponieważ za pomocą polecenia rpm -U(upgrade) pakiet nie musi istnieć do aktualizacji / instalacji, ale z yum update(jeśli się nie mylę) pakiet musi już istnieć.

Szczególnie interesuje mnie wynik określania pakietów wraz z ich wersjami, takimi jak some-package-1.0. Podsumowując, chcę wiedzieć, czy mam dwie konkretne wersje, takie jak some-package-1.0i some-package-1.1:

  1. Czy wykonanie yum installna 1.1 po 1.0 jest już zainstalowane, wyświetla listę 2 pakietów?
  2. Czy uruchomienie yum update some-package-1.1zakończy się pomyślnie some-package-1.0?
kaizenCoder
źródło

Odpowiedzi:

31

Główne różnice między YUM a RPM polegają na tym, yumże potrafią rozwiązywać zależności i mogą pozyskiwać te dodatkowe pakiety podczas wykonywania swojej pracy. Chociaż rpmmoże ostrzec Cię o tych zależnościach, nie jest w stanie pozyskać dodatkowych pakietów.

Jeśli chodzi o instalację a aktualizację. Oba narzędzia mogą przeprowadzić instalację, a RPM pozwoli nawet zainstalować wiele wersji jednocześnie, ale YUM poinformuje, że ten pakiet jest już zainstalowany. Więc żadne YUM nie pozwoli ci zainstalować wielu wersji.

Jeśli chodzi o yum updateto, zareaguje to na dwa sposoby. Jeśli powiesz mu pakiet, który chcesz zaktualizować, spróbuje to zrobić, pobierając wszystkie niezbędne zależności i instalując je. Jeśli uruchomisz go bez nazwy pakietu, yum updatespróbujesz zaktualizować każdy pakiet zainstalowany w systemie.

Jeśli yum upgradego użyjesz , zrobi to samo yum update, ale będzie próbował usunąć wszystkie pakiety oznaczone jako „przestarzałe”.

Przykład

Oto scenariusz podobny do twojego. Dostępna jest nowa wersja vim-X11.

$ yum check-update vim-X11 | expand
Loaded plugins: auto-update-debuginfo, changelog, langpacks, refresh-packagekit

vim-X11.x86_64                     2:7.4.417-1.fc19                      updates

Obecnie jestem w tej wersji:

$ rpm -q vim-X11 | expand
vim-X11-7.4.179-1.fc19.x86_64

Kiedy próbujemy go zainstalować:

$ sudo yum install vim-X11
...   
=================================================================================================================================================================
 Package                                 Arch                              Version                                      Repository                          Size
=================================================================================================================================================================
Updating:
 vim-X11                                 x86_64                            2:7.4.417-1.fc19                             updates                            1.2 M
Updating for dependencies:
 vim-common                              x86_64                            2:7.4.417-1.fc19                             updates                            5.9 M
 vim-enhanced                            x86_64                            2:7.4.417-1.fc19                             updates                            1.0 M
....
Running transaction
  Updating   : 2:vim-common-7.4.417-1.fc19.x86_64                                                                                                            1/6 
  Updating   : 2:vim-enhanced-7.4.417-1.fc19.x86_64                                                                                                          2/6 
  Updating   : 2:vim-X11-7.4.417-1.fc19.x86_64                                                                                                               3/6 
  Cleanup    : 2:vim-X11-7.4.179-1.fc19.x86_64                                                                                                               4/6 
  Cleanup    : 2:vim-enhanced-7.4.179-1.fc19.x86_64                                                                                                          5/6 
  Cleanup    : 2:vim-common-7.4.179-1.fc19.x86_64                                                                                                            6/6 
  Verifying  : 2:vim-enhanced-7.4.417-1.fc19.x86_64                                                                                                          1/6 
  Verifying  : 2:vim-X11-7.4.417-1.fc19.x86_64                                                                                                               2/6 
  Verifying  : 2:vim-common-7.4.417-1.fc19.x86_64                                                                                                            3/6 
  Verifying  : 2:vim-enhanced-7.4.179-1.fc19.x86_64                                                                                                          4/6 
  Verifying  : 2:vim-X11-7.4.179-1.fc19.x86_64                                                                                                               5/6 
  Verifying  : 2:vim-common-7.4.179-1.fc19.x86_64                                                                                                            6/6 

Podsumowując

  1. Czy wykonanie yum installna 1.1 po 1.0 jest już zainstalowane, wyświetla listę 2 pakietów?

Nie. YUM nadal będzie aktualizować, nawet jeśli powiesz mu, aby wykonał instalację, jeśli pakiet jest już zainstalowany.

  1. Czy uruchomienie z yum update some-package-1.1powodzeniem zastąpi jakiś pakiet 1.0?

Tak.

slm
źródło
Dzięki za bardzo szczegółową odpowiedź. Więc tak, jak to widzę, mogę po prostu nadal używać, yum installgdy określam nazwę pakietu wraz z wersją i nie przejmuję się instalowaniem wielu wersji. Sytuacja, w której chciałbym użyć, yum updateto sytuacja, w której podam tylko nazwę pakietu, prawda?
kaizenCoder
@aspiringCodeArtisan - to częściowo poprawne. yum installwykryje, że pakiet jest już zainstalowany i przełączy się na aktualizację zamiast instalacji, jak pokazał mój przykład.
slm
@slm - Aby wyjaśnić, czy rpm może przeszukać repozytorium podobne do wyszukiwania zyppera dla konkretnego pakietu?
Zmotywowany
1
@Motywowany - nie rpmjest dpkg, dotyczy tylko zarządzania plikami na dysku lokalnym. Do zarządzania repozytorium b / w twoim systemem + repozytorium potrzebujesz czegoś takiego jak yumlub dnf.
slm
1
@Motivated - rpmgdy jest używany do instalacji z adresu URL, nie wykonuje żadnego pakietu dep, aby je również pobrać, po prostu pobiera rpm lokalnie, a następnie instaluje go.
slm