mniam zainstalować pakiet bez aktualizacji innych pakietów lub zawieść…?

10

Czy istnieje sposób, aby powiedzieć, yumaby zainstalować pakiet, wybierając wersję tego pakietu, która byłaby zadowolona z aktualnie zainstalowanych zależności?

Na przykład, jeśli instaluję pakiet pecl i aktualnie go zainstalowałem, php-5.4.11ale php-5.4.14dostępna jest nowsza wersja. Zamiast instalować nowy pakiet (i aktualizować wszystkie pakiety php do 5.4.14) Chcę tylko, aby wybrał starszą wersję pakietu, który chciałem zainstalować bez aktualizacji wszystkich innych (lub nie powiedzie się, jeśli nie da się tego zrobić).

Jest to szczególny przypadek, w którym wiem, że mogę wykluczyć lub naprawić pakiet php, ale szukam ogólnej opcji, która miałaby zastosowanie do każdej instalacji.

Coś jak:

yum install php-pecl-xxxx --no-updates
Clint Priest
źródło

Odpowiedzi:

10

Tymczasowe rozwiązanie:

Użyj -Cflagi:

sudo yum install foobar -C

Trwałe rozwiązanie:

Użyj metadata_expireflagi w pliku yum.conf, aby to kontrolować.

Edytuj /etc/yum.confi ustaw

metadata_expire=15d

Możesz użyć d, h lub m, aby skonfigurować czas w dniach, godzinach lub minutach .

Bonus: oto dokumentacja:

metadane_expire to Czas (w sekundach), po upływie którego metadane wygasną. Tak więc jeśli bieżące pobrane metadane mają mniej niż tyle sekund, yum nie zaktualizuje metadanych względem repozytorium. Jeśli stwierdzisz, że yum nie pobiera informacji o aktualizacjach tak często, jak chcesz obniżyć wartość tej opcji. Możesz także zmienić z domyślnego używania sekund na używanie dni, godzin lub minut, dodając odpowiednio reklamę, h lub m. Domyślnie jest to 6 godzin, aby uzupełnić aktualizację yum raz na godzinę. Można również użyć słowa „nigdy”, co oznacza, że ​​metadane nigdy nie wygasną. Pamiętaj, że w przypadku korzystania z pliku metalink metalink musi zawsze być nowszy niż metadane dla repozytorium, ze względu na sprawdzanie poprawności, dlatego limit ten dotyczy również pliku metalink. Pamiętaj też, że „nigdy” nie zastępuje „yum clean expire-cache”

Shubham Chaudhary
źródło
0

Na razie nie spotkałem się z żadną taką opcją. Jeśli jednak chcesz zainstalować pakiet bez aktualizacji, zalecam pobranie rpm tej samej wersji, a następnie zainstalowanie go.

Aazim Parkar
źródło
0

W yum-utilspakiecie znajduje się narzędzie o nazwie yumdownloader. Możesz go użyć do pobrania z repozytoriów bez instalowania. Obowiązują wszystkie standardowe przełączniki --disablerepo. Więcej informacji na ten temat można znaleźć na stronie podręcznika .

Myślę, że możesz pobrać RPM, a następnie zrobić to, co chcesz, używając RPM bezpośrednio.

slm
źródło
1
Jest to część systemu automatycznej instalacji pakietów, problem polega na tym, że nie chcemy, aby yum „instalował najnowsze” i „aktualizował wszystko, co potrzebne”. Naprawdę chcemy po prostu zainstalować wersję pakietu zgodną z tym, co już zostało zainstalowane. Zasadniczo opcja instalowania lub instalowania opcji xxx-no-updates.
Clint Priest
0

Jeśli starsza wersja pakietu nadal znajduje się w twoich repozytoriach yum, możesz po prostu uruchomić yum install packagename-version-release.archi zainstaluje starszą wersję bez próby aktualizacji do najnowszej wersji. Musisz użyć pełnej nazwy, wersji, wydania i arch., Jeśli masz wiele wersji i architektur w swoim repozytorium yum. Możesz uzyskać wszystkie te informacje, uruchamiając się, yum list available 'packagename*'aby wyszukać wszystkie pakiety zaczynające się od „nazwa-pakietu”. Jeśli udało Ci się zaktualizować pakiety i chcesz przejść na starszą wersję, możesz uruchomić yum downgrade packagename1 packagename2. Musisz dołączyć listę wszystkich pakietów, które chcesz obniżyć, ponieważ prawdopodobnie będzie to wymagało wielu zależności.

Jeśli starszej wersji nie ma w twoim repozytorium yum, po prostu pobierz ją z dowolnego miejsca, w którym znalazłeś stary pakiet i zainstaluj go yum install /path/to/package.rpm, chociaż odradzam instalowanie pakietów z niezaufanych źródeł.

jsbillings
źródło
Byłoby jednak o wiele bardziej przydatne, gdyby yummógł po prostu wybrać najnowszą dostępną kompatybilną wersję.
forcefsck
Może, ale to do pakagera należy określenie odpowiednich wymagań.
jsbillings
Czasami wymagania są pokrywane przez starszą paczkę, ale yum nalega na wybranie tylko najnowszej. Na przykład. w opisanym powyżej przypadku powinno być możliwe automatyczne wybranie przez php-pecl-5.4.11 yum, jeśli wersja systemu jest zablokowana na php-5.4.11. Może to stanowić problem dla automatyzacji.
forcefsck
Yum zaktualizuje się do najnowszej wersji tylko wtedy, gdy nie ma zależności od starej wersji. W powyższym przypadku wymaganie dotyczące wersji nigdy nie było wymagane przez pakiet pecl. Yum nie może czytać w twoich myślach i wybierać dowolnej wersji, chyba że wskażesz, która wersja wymaga, lub blokując wersje pakietów pecl i php.
jsbillings
W tym przykładzie, pod warunkiem, że php nie jest aktualizowalny (zablokowana wersja lub żadne nowe pakiety nie są dostępne w repozytoriach), yum może wybrać najnowszą wersję pecl, która nie wymaga aktualizacji php. Nie jest to dokładnie czytanie w myślach, uważam, że apt-get już to robi. Ponownie, jest to problem automatyzacji, gdy trzeba zainstalować dodatkowy pakiet bez uaktualniania połowy systemu i potrzebujesz yum, aby być wystarczająco inteligentnym, aby obsłużyć żądanie, tj. Jeśli istnieje wiele wersji, wybierz najnowszą kompatybilną z już zainstalowanymi pakietami że z jakiegokolwiek powodu nie można go uaktualnić.
forcefsck,