Jak obniżyć pakiety na Ubuntu?

14

Menedżer aktualizacji zachowuje pakiety w najnowszej wersji, ale czasami nowa wersja pakietu może nie działać zgodnie z oczekiwaniami lub poprawnie. Jak obniżyć wersję zainstalowanego pakietu i zablokować go w określonej wersji, aby zapobiec jego aktualizacji? Jak mogę to zrobić za pomocą GUI lub terminala ?

Radu Rădeanu
źródło

Odpowiedzi:

17

W GUI - za pomocą Synaptic

Uproszczony interfejs Centrum oprogramowania Ubuntu nie oferuje możliwości obniżenia pakietów. Synaptic, bardziej zaawansowany interfejs menedżera pakietów graficznych, który Ubuntu kiedyś zawierał, oferuje tę opcję. Aby graficznie obniżyć pakiet, najpierw zainstaluj aplikację Synaptic :

Centrum oprogramowania Ubuntu

Po wykonaniu tej czynności otwórz Menedżera pakietów Synaptic z poziomu Dash:

synaptis

Wyszukaj pakiet, w którym chcesz zainstalować starszą wersję w Synaptic, wybierz go i użyj opcji Pakiet > Wymuś wersję :

Wymuś wersję

Wybierz wersję, którą chcesz zainstalować, i kliknij opcję Wymuś wersję. Synaptic pokaże tylko wersje dostępne w twoich repozytoriach:

Wybierz wersję

Kliknij przycisk Zastosuj , aby zastosować zmiany i zainstalować starszą wersję pakietu, zakładając, że wszystko działa poprawnie.

Zastosować

Po obniżeniu poziomu pakietu wybierz go i użyj opcji Pakiet > Zablokuj wersję . Jeśli tego nie zrobisz, Ubuntu spróbuje zaktualizować zainstalowany pakiet przy następnej aktualizacji zainstalowanych pakietów:

Zablokowana wersja

W terminalu - za pomocą apt-get

Możesz zainstalować określoną wersję pakietu za apt-getpomocą terminala . Najpierw określ dostępne wersje, które możesz zainstalować za pomocą następującego polecenia (użyj dla nazwa_pakietu nazwy programu, który chcesz obniżyć):

apt-cache showpkg [packagename]

Następnie należy uruchomić polecenie apt-get install i określić wersję pakietu, który chcesz zainstalować (użyć do wersji numer wersji ustalonej wcześniej z programu, który chcesz downgrade):

sudo apt-get install [packagename]=[version]

Po zainstalowaniu uruchom następujące polecenie, aby zatrzymać zainstalowaną wersję, uniemożliwiając menedżerowi pakietów automatyczną aktualizację w przyszłości:

sudo echo "[packagename] hold" | sudo dpkg --set-selections

Źródło : http://www.howtogeek.com/117929/how-to-downgrade-packages-on-ubuntu/

Radu Rădeanu
źródło
4
jeśli oparłeś swoją odpowiedź na tej stronie howtogeek.com/117929/how-to-downgrade-packages-on-ubuntu, podaj link źródłowy. Nie sądzę, że Howtogeekowi to przeszkadza, ale na pewno potrzebują odpowiedniego linku źródłowego, aby uzyskać kredyt.
Luis Alvarado,
Kiedy próbowałem to zrobić, miałem do czynienia z różnego rodzaju problemami z niezaspokojonymi zależnościami. Uważam, że lepiej jest użyć aptitude, ponieważ rozwiązało to wszystkie zależności, np. Sudo aptitude install smbclient = 2: 4.1.6 + dfsg-1ubuntu2. Zobacz askubuntu.com/questions/770789/how-to-downgrade-smbclient
Lance Holland
3

Inna możliwość:

Pozwala znaleźć zarchiwizowany pakiet na http://packages.ubuntu.com/ :

Na przykład obniżenie php5:

Szukaj:

wprowadź opis zdjęcia tutaj

Znaleziono dokładne trafienie, spójrzmy na stronę pakietu dla php5:

wprowadź opis zdjęcia tutaj

Widzimy różne wersje wersji Ubuntu, których jesteśmy pewni:

wprowadź opis zdjęcia tutaj

Pozwala przejść do wersji, która uruchomiła php (5.3) ... 12.04 (dokładnie) na przykład:

wprowadź opis zdjęcia tutaj

pobierz tar.gz

wprowadź opis zdjęcia tutaj

A następnie rozpakuj plik tar i zainstaluj go:

cd /path/to/download
tar -xzvf name_of_package
cd name_of_extracted_folder
./configure
make
sudo make install

Możliwe problemy, na które można natknąć się podczas uruchamiania ./configure:

  • Brakujące zależności (musiałem zainstalować libxm2-dev): wprowadź opis zdjęcia tutaj

Problemy z uruchomieniem make:

  • błędy podczas kompilacji mogą obejmować nieprawidłowe ustawianie flag lub problemy z samym kodem.
  • Garść śmieci podczas kompilacji, a potem jakiś problem w kodzie?
  • W moim przypadku musiałem znaleźć aktualne pliki źródłowe / tarball dla php ( http://php.net/downloads.php )
  • i spróbuj ponownie wyodrębnić i zrobić
jmunsch
źródło