2013-07-10 35 views
21

Mam kilka plików rpm w folderze. Próbuję zainstalować je za pomocą: rpm -ivh *.rpm, więc rpm może zadbać o prawidłową kolejność instalacji.RPM ignoruje konflikty

Na niektóre z tych rpms Mam zainstalowany nowsza wersja w moim systemie, więc dostać się na przykład:

package info-5.0-1 (which is newer than info-4.13a-2) is already installed

/opt/freeware/man/man1/infokey.1 from install of info-4.13a-2 conflicts with file from package info-5.0-1

Czy istnieje sposób zignorować stary plik .rpm i rozwiązać zależności za pomocą nowej wersji, która jest już zainstalowana? Pomyślałem o opcji --force. Ale w jaki sposób rozwiązuje konflikty? Zastępuje je starszą wersją lub po prostu ignoruje je, pozostawiając nową wersję?

Wszelkie uwagi są mile widziane.

Odpowiedz

3

Z kontekstu konflikt spowodowany był wersją pakietu.
Weźmy spojrzeć instrukcję o rpm:

--force 
    Same as using --replacepkgs, --replacefiles, and --oldpackage. 

--oldpackage 
    Allow an upgrade to replace a newer package with an older one. 

Tak, można wykonać polecenie rpm -Uvh info-4.13a-2.rpm --force, aby rozwiązać swój problem.

+1

To nie odpowiadało na moje pytanie. Tak jak powiedziałem, chcę pozostawić zainstalowany pakiet NEW. Nie zamieniaj go na stary ... –

7

Spróbuj odświeżyć polecenie:

rpm -Fvh *.rpm 
+0

Polecenie odświeżania aktualizuje tylko pakiety, które są już w systemie.Nie ma sensu, jeśli chcę zainstalować nowy pakiet ... –

+0

Nie sądzę, że możemy utrzymać dwa różne pakiety wersji zainstalowane na serwerze. –

15

Opcja --force będzie ponowna instalacja już zainstalowane pakiety i nadpisać już zainstalowanych plików z innych pakietów. Nie chcesz tego normalnie.

Jeśli powiesz rpm, aby zainstalować wszystkie RPM z jakiegoś katalogu, to robi to dokładnie. rpm nie można zignorować RPM wymienionych na liście do instalacji. Musisz ręcznie usunąć niepotrzebne RPM z listy (lub katalogu).

Możesz usunąć stary RPM, a rpm rozwiązać zależność za pomocą nowszej wersji zainstalowanego RPM. Ale to zadziała, jeśli żaden z zainstalowanych RPM nie zależy dokładnie od starej wersji.

Jeśli naprawdę potrzebujesz różnych wersji tego samego RPM, to obroty muszą wynosić relocatable. Następnie możesz powiedzieć rpm, aby zainstalować określoną liczbę obrotów na minutę w innym katalogu. Jeśli pliki nie są w konflikcie, możesz po prostu zainstalować różne wersje z rpm -i (zypper in nie można zainstalować różnych wersji tego samego RPM). Pakuję na przykład klejnoty rubinowe jako relokowalne RPMy w pracy. Mogę więc mieć zainstalowane różne wersje tego samego klejnotu.

Nie wiem, na jakie pliki znajdują się twoje RPMy, ale jeśli wszystkie z nich są "tylko" stronami podręcznika, to najprawdopodobniej można po prostu zastąpić nowe ze starszymi za pomocą rpm -i --replacefiles. Jedyny problem polegałby na tym, że mógł zmylić kogoś, kto czyta stronę ze starym człowiekiem i myśli, że jest w aktualnej wersji. Kolejnym problemem będzie polecenie rpm --verify. Zażąda nowego pakietu, jeśli stary nadpisał kilka plików.

Czy to prawdopodobnie jest duplikat https://serverfault.com/questions/522525/rpm-ignore-conflicts?

Powiązane problemy