Podczas pracy z poleceniem rpm
zauważyłem, że jeśli zainstalowałem some-package-1.0
, a następnie wykonałem kolejne rpm -ivh some-package-1.1
oba pakiety zostaną wyświetlone, kiedy wykonam rpm -qa | grep some-package
jak poniżej :
some-package-1.0 some-package-1.1
Jeśli jednak dokonam aktualizacji za pośrednictwem rpm -Uvh some-package-1.1
, zamiast instalować 1.1, otrzymam pożądany wynik pojedynczy pakiet (1.1), gdy robię rpm -qa | grep some-package
.
Teraz to samo zachowanie dotyczy yum install
i yum update
?
Pytam, ponieważ za pomocą polecenia rpm -U
(upgrade) pakiet nie musi istnieć, aby zaktualizować / zainstalować, ale z yum update
(jeśli się nie mylę) pakiet musi już istnieć.
Szczególnie zależy mi na tym, aby poznać wynik określenia pakietów z ich wersje, takie jak some-package-1.0
. Podsumowując, chcę wiedzieć, czy mam dwie konkretne wersje, takie jak some-package-1.0
i some-package-1.1
:
- Czy wykonanie
yum install
w wersji 1.1 po zainstalowaniu wersji 1.0 wyświetli listę 2 pakietów? - Czy uruchomi się
yum update some-package-1.1
pomyślnie zastąpsome-package-1.0
?
Odpowiedź
Główny różnice między YUM i RPM polegają na tym, że yum
wie, jak rozwiązywać zależności i może pozyskiwać te dodatkowe pakiety podczas wykonywania swojej pracy. Chociaż rpm
może ostrzegać o tych zależnościach, nie jest w stanie pobrać dodatkowych pakietów.
Jeśli chodzi o instalację i aktualizację. Oba narzędzia mogą przeprowadzić instalację, a RPM pozwoli nawet na zainstalowanie wielu wersji jednocześnie, ale YUM poinformuje Cię, że ten pakiet jest już zainstalowany. Więc żaden YUM nie pozwoli ci zainstalować wielu wersji.
Jeśli chodzi o yum update
, zareaguje to na jeden z dwóch sposobów. Jeśli powiesz pakiet, który chcesz zaktualizować, spróbuje to zrobić, pobierając wszystkie niezbędne zależności i instalując je również. Jeśli uruchomisz go bez nazwy pakietu, yum update
spróbuje zaktualizować każdy pakiet, który jest zainstalowany w twoim systemie.
Jeśli używasz yum upgrade
, zrobi to tak samo jak yum update
, z tą różnicą, że spróbuje usunąć wszystkie pakiety, które zostały 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
I jestem obecnie 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
- Czy wykonanie
yum install
w wersji 1.1 po zainstalowaniu wersji 1.0, wyświetli 2 pakiety?
Nie. YUM nadal wykona aktualizację, nawet jeśli kazałeś mu wykonać instalację, jeśli pakiet jest już zainstalowany.
- Czy działanie
yum update some-package-1.1
z powodzeniem zastąpi jakiś-pakiet-1.0?
Tak.
yum install
, kiedy określam nazwę pakietu z wersją i nie przejmuję się instalacją wielu wersji. Sytuacja, w której chciałbym użyćyum update
, byłaby taka, gdy podam tylko nazwę pakietu, prawda?yum install
wykryje, że pakiet jest już zainstalowany i przełączy się na aktualizację, a nie na instalację, jak pokazał mój przykład.rpm
jest jakdpkg
, dotyczy tylko zarządzania plikami na dysku lokalnym. Do zarządzania repozytorium " " w wersji czarno-białej + repozytorium potrzebujesz czegoś takiego jakyum
lubdnf
.rpm
w przypadku instalacji z adresu URL nie ' Nie wykonuj żadnego pakietu, aby je pobrać, po prostu pobiera lokalnie rpm, a następnie instaluje.