Jak mogę poinstruować yum, aby zainstalował określoną wersję pakietu X?

226

Jeśli w repozytorium YUM dostępne są dwie (lub więcej) wersje danego RPM, jak mogę polecić yumzainstalowanie żądanej wersji?

Przeglądając usługę kompilacji Koji, zauważam, że istnieje kilka wersji.

    ss # 1

slm
źródło

Odpowiedzi:

310

Aby zobaczyć, jakie poszczególne wersje są dostępne za pośrednictwem yum, możesz użyć --showduplicatesprzełącznika. Daje ci listę taką jak „nazwa pakietu. Wersja architektury”:

$ yum --showduplicates list httpd | expand
Loaded plugins: fastestmirror, langpacks, refresh-packagekit
Loading mirror speeds from cached hostfile
 * fedora: mirror.steadfast.net

Available Packages
httpd.x86_64                        2.4.6-6.fc20                         fedora 
httpd.x86_64                        2.4.10-1.fc20                        updates

Jeśli chodzi o instalację konkretnej wersji? Możesz dołączyć informacje o wersji do nazwy pakietu, usuwając nazwę architektury, w następujący sposób:

$ sudo yum install <package name>-<version info>

Na przykład w tym przypadku, jeśli chciałbym zainstalować starszą wersję, 2.4.6-6, zrobiłbym następujące:

$ sudo yum install httpd-2.4.6-6

Możesz także dołączyć informacje o wersji przy określaniu pakietu. W tym przypadku, ponieważ mam do czynienia z Fedorą 20 (F20), informacja o wydaniu to „fc20”, a także informacje o architekturze.

$ sudo yum install httpd-2.4.6-6.fc20
$ sudo yum install httpd-2.4.6-6.fc20.x86_64

repoquery

Jeśli nie masz pewności, czy konstruujesz argumenty, możesz również skonsultować się z nimi repoquery.

$ sudo yum install yum-utils  # (to get `repoquery`)
$ repoquery --show-duplicates httpd-2.4*
httpd-0:2.4.6-6.fc20.x86_64
httpd-0:2.4.10-1.fc20.x86_64

pobieranie i instalacja

Możesz także skorzystać z jednej z poniższych opcji, aby pobrać określony RPM z Internetu, a następnie użyć go, yumaby go zainstalować.

$ yum --downloadonly <package>
-or-
$ yumdownloader <package>

A następnie zainstaluj tak:

$ sudo yum localinstall <path to rpm>

Co jeśli chcę pobrać wszystko, czego wymaga pakiet X?

$ yumdownloader --resolve <package>

Przykład

$ yumdownloader --resolve vim-X11
Loaded plugins: langpacks, presto, refresh-packagekit
Adding en_US to language list
--> Running transaction check
---> Package vim-X11.x86_64 2:7.3.315-1.fc14 set to be reinstalled
--> Finished Dependency Resolution
vim-X11-7.3.315-1.fc14.x86_64.rpm                              | 1.1 MB     00:01

Zauważ, że wykonuje sprawdzenie zależności, a następnie pobiera brakujące elementy. Zobacz moją odpowiedź, która obejmuje go bardziej szczegółowo tutaj: Jak pobrać plik z repozytorium i zainstalować go później bez połączenia z Internetem? .

Bibliografia

slm
źródło
1
Nie sądzę, że to działa w przypadku pakietów między najnowszą zlokalizowaną wersją @updatesa początkową wersją dla zlokalizowanego systemu operacyjnego @fedora. Na przykład, jeśli spróbujesz zainstalować httpd-2.4.8-1, yumpowiesz , że pakiet nie jest dostępny.
Przepełnienie pytania
@QuestionOverflow - nie następuje. Ta wersja nie jest wyświetlana jako dostępna w repozytorium.
slm
1
Pozwól mi spróbować jeszcze raz z prawdziwym przykładem z mojego mniam dziennika. python-libs-2.7.5-12.fc20.x86_64został kiedyś zainstalowany na moim komputerze, ale od tego czasu został wymieniony. Zakładając, że teraz chcę zainstalować ten konkretny pakiet, yumdownloader python-libs-2.7.5-12*powiedziałbym No Match for argument python-libs-2.7.5-12* Nothing to download. Próbuję powiedzieć, że po przybyciu nowej paczki stary nie będzie już dostępny od yum. Możesz zainstalować tylko najnowszy pakiet lub wersję początkową, ale nie wersje pomiędzy.
Przepełnienie pytania
2
@QuestionOverflow - W tym scenariuszu myślę, że musisz użyć, yum downgrade ...jeśli pakiet został już zainstalowany i próbujesz wrócić do niego później. W moim QI próbowałem pokazać, w jaki sposób można wybrać konkretną wersję pakietu, który nie został jeszcze zainstalowany. docs.fedoraproject.org/en-US/Fedora/14/html/…
slm
Nie, to nie działa nawet przy aktualizacji do konkretnego pakietu. Kilka dni temu eksperymentowałem z nową instalacją. Możesz tylko zaktualizować najnowszy pakiet, a nie dowolną żądaną wersję.
Przepełnienie pytania
6

Inną opcją jest pobranie rpmpliku, a następnie polecenie yumwykonania localinstall:

yum localinstall /path/to/package.rpm

Dobrym miejscem na zdobycie potrzebnych paczek jest rpmfind.com i wyszukiwanie nazwy paczki.

Cuonglm
źródło
Czy istnieje adres URL zawierający większość, jeśli nie wszystkie wersje plików RPM?
Przepełnienie pytania
@QuestionOverflow: rpmfind.net
cuonglm
4
Jest też yum --downloadonly <package>, a następnie yum localinstall <path to package>. Możesz także użyć tego narzędzia yumdownloader <package>.
slm
0

Możesz także użyć polecenia Option:

yum install --nogpgcheck pckg-name-version   
Guillermo Castellon
źródło