Z powodu błędu # 693758 chciałbym uniemożliwić apt-get upgrade
i zaktualizować pakiet „libgtk2.0-0” przez Menedżera aktualizacji.
Jak można to osiągnąć?
disable packages from the auto-update
Z powodu błędu # 693758 chciałbym uniemożliwić apt-get upgrade
i zaktualizować pakiet „libgtk2.0-0” przez Menedżera aktualizacji.
Jak można to osiągnąć?
disable packages from the auto-update
Odpowiedzi:
Istnieją cztery sposoby powstrzymywania pakietów: z dpkg, apt, aptitude lub dselect.
Zawieś paczkę:
echo "<package-name> hold" | sudo dpkg --set-selections
Usuń blokadę:
echo "<package-name> install" | sudo dpkg --set-selections
Wyświetl status swoich paczek:
dpkg --get-selections
Wyświetl status pojedynczej paczki:
dpkg --get-selections | grep "<package-name>"
Trzymaj paczkę:
sudo apt-mark hold <package-name>
Usuń blokadę:
sudo apt-mark unhold <package-name>
Pokaż wszystkie wstrzymane pakiety:
sudo apt-mark showhold
Za pomocą dselect przejdź do ekranu wyboru [S] elect, znajdź pakiet, który chcesz zatrzymać w jego obecnym stanie, i naciśnij =lub H. Zmiany zaczną obowiązywać natychmiast po wyjściu z ekranu [S] elekt.
Następujące podejścia są ograniczone w tym, że blokowanie / trzymanie pakietu w aptitude lub synaptic nie wpływa na apt-get / apt.
Trzymaj paczkę:
sudo aptitude hold <package-name>
Usuń blokadę:
sudo aptitude unhold <package-name>
Przejdź do Menedżera pakietów Synaptic (System> Administracja> Menedżer pakietów Synaptic).
Kliknij przycisk wyszukiwania i wpisz nazwę pakietu.
Po znalezieniu pakietu wybierz go i przejdź do menu Pakiet i wybierz opcję Zablokuj wersję .
Ten pakiet nie będzie teraz wyświetlany w menedżerze aktualizacji i nie będzie aktualizowany.
devscripts
wiele pakietów jest pobieranych jako zalecane pakiety. Ponieważ nie potrzebuję serwera pocztowego (postfiks), mógłbym wyłączyć jego instalację, uruchamiając echo postfix hold | sudo dpkg --set-selections
przed uruchomieniem sudo apt-get install devscripts
. Ta akcja wstrzymania trwa tylko dla tej instalacji, po instalacji opcje są resetowane.
apt-mark
nie obsługuje hold
w wersji 0.7.25 (Ubuntu Lucid)
apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev
.
Aby zawiesić pakiet „foo”:
echo "foo hold" | dpkg --set-selections
W twoim przypadku wstrzymamy wino:
sudo -i
echo "wine hold" | dpkg --set-selections
Aby usunąć blokadę:
sudo -i
echo "wine install" | dpkg --set-selections
apt-get install wine=1.2.3
. Wstrzymanie uniemożliwia apt-get (dist-)upgrade
zmianę tego.
/var/cache/apt/archives
) jest niezależna od wstrzymań, aktualizacji i innych rzeczy, więc wszystkie pobrane wersje będą tam, dopóki nie uruchomiszapt-get [auto]clean
Szukałem tego samego i po wielu badaniach odkryłem, że używając następującej składni możesz zabronić jednej konkretnej wersji, ale zezwolić na następną aktualizację:
Pakiet: compiz-plugins-main Pin: wersja 1: 0.9.7.0 ~ bzr19-0ubuntu10.1 Priorytet pinów: -1
To idzie do pliku / etc / apt / preferences.
Zainstaluj synaptic
za pomocą sudo apt-get install synaptic
.
Uruchom za pomocą gksudo synaptic
iw polu wyszukiwania zlokalizuj pakiet, który chcesz zablokować, tj .:gedit
Z menu pakietu wybierz Wersja blokady :
I to wszystko, wersja aktualnie zainstalowana w momencie blokady pozostanie zainstalowana nawet podczas aktualizacji.
Zapobieganie instalowaniu pakietu nazywa się „wstrzymywaniem pakietu” i jest bardzo proste:
echo nazwa_pakietu wstrzymaj | dpkg - set-selections
... gdzie * nazwa_pakietu * to nazwa pakietu, którego instalacji chcesz zabronić.
Uwaga: powyższe polecenie zakłada uprawnienia roota. Innymi słowy, prawdopodobnie będziesz musiał wpisać sudo su
przed uruchomieniem.
s/sudo su/sudo -s/g
(lub sudo -i
). ( -i
da powłokę logowania, -s
nie będzie).
Ponieważ jakiś czas apt-get
został zastąpiony przez apt
, więc na przykład chcę zapobiec aktualizacji Firefoksa do wersji powyżej 56, ponieważ wiele dodatków, takich jak „Grupy kart ” , nie działa już z nowym Firefoksem 57 (patrz „Rozszerzenia Web” Aktualizacja").
Możliwe jest przechowywanie więcej niż jednego pakietu za pomocą jednego polecenia i używanie symboli wieloznacznych.
sudo apt-mark hold firefox firefox-locale-*
Jeśli zechcesz je później zatrzymać, będzie to polecenie:
sudo apt-mark unhold firefox firefox-locale-*
Synaptic możesz zamrozić wersję konkretnego pakietu. Nie jestem w 100% pewien, czy to poprawi apt-get, ale na pewno zatrzyma menedżera aktualizacji.
Aby zamrozić pakiet, wybierz go w synaptic, a następnie otwórz menu pakietu i wybierz opcję zamrożenia.
Mam nadzieję że to pomoże
edytuj: To pytanie 16668 dotyczy podobnej sytuacji
Wszystko, co kiedykolwiek chciałeś wiedzieć o „trzymaniu” i „przypinaniu” pakietów do określonych wersji: https://help.ubuntu.com/community/PinningHowto
Możesz użyć na aptitude „specyficznego przesłonięcia”, takiego jak to:
aptitude reinstall ~i oracle-java8-jre:
Jest to jednorazowe użycie (nieprzechowywane do przyszłej ponownej instalacji), zachowaj określone zastąpienie, aby ponownie zainstalować wszystkie pakiety w systemie, ale nie oracle-java8-jre.
Jeśli użyjesz przesłonięcia specyficznego dla keep, pakiet na chwilę będzie w stanie keep, a aptitude nie spróbuje go zainstalować.
Bardzo dobrze, jeśli uważasz, że twój system został w jakiś sposób skompromitowany.
Jeśli masz zainstalowany Synaptic, możesz wybrać pakiet i użyć menu Pakiet -> Zablokuj wersję, aby zapobiec jego aktualizacji.
Możesz zainstalować Synaptic za pomocą sudo apt-get install synaptic. Osobiście uważam to za bardziej przydatne niż Software Center ... z drugiej strony jestem dość starą szkołą. :)
Czasami ktoś może chcieć powstrzymać wszystkie aktualnie zainstalowane pakiety. Oto jak.
Najpierw zapisz bieżący stan, aby móc cofnąć:
dpkg --get-selections > current_selections.txt
Następnie, aby powstrzymać wszystkie paczki:
dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections
Wreszcie, gdy chcesz przywrócić poprzedni stan:
dpkg --set-selections < current_selections.txt
Jednym z takich przypadków może być tworzenie migawki maszyny wirtualnej lub Amazon AMI w celu migracji z kontroli jakości do środowiska produkcyjnego.
Dodanie szczegółów do komentarzy @ soger dotyczących Ubuntu 16.04.
Ubuntu 16.04 domyślnie nie ma pliku / etc / apt / preferencji. Jeśli go nie masz, po prostu utwórz nowy plik i wypełnij go sekcją, jak opisano powyżej @ soger, aby wykluczyć dany pakiet i jego zależności z aktualizacji.
Następnie biegnij apt update
i jesteś GTG. : 0)
Na przykład mam serwer Ubuntu 16.04.5 LTS z wbudowaną kartą wideo Intel i kartą NVidia. Użyto tylko karty NVidia. Serwer używa również sterowników CUDA. Miałem problem, w którym apt
ciągle nalegałem
va-driver-all
(Sterowniki Intel) wymagały aktualizacji, ale nie można było ustalić, którą wersję zainstalować. To doprowadzało mnie do szału, a i tak nie potrzebowałem sterowników Intela. Wpisałem ten tekst do pliku preferencji i opróżniłem apt, problem rozwiązany.
Package: va-driver-all
Pin: release *
Pin-Priority: -1