Przez pomyłkę włączyłem repozytorium aktualizacji przedpremierowych (proponowane przez natty), a następnie zaktualizowałem wszystkie pakiety.
Jak mogę to cofnąć?
Oto wyniki testu z instrukcji @ enzotib i wyniki testu z moich instrukcji .
Przez pomyłkę włączyłem repozytorium aktualizacji przedpremierowych (proponowane przez natty), a następnie zaktualizowałem wszystkie pakiety.
Jak mogę to cofnąć?
Oto wyniki testu z instrukcji @ enzotib i wyniki testu z moich instrukcji .
Odpowiedzi:
Oto bardziej ogólny sposób na przywrócenie pakietów zainstalowanych lokalnie, proponowanych i pakietów backports do kanału stabilnego + aktualizacje. Podczas gdy pozostałe odpowiedzi są poprawne i działają w podobny sposób, myślę, że jest to bardziej eleganckie podejście.
-proposed
lub -backports
w swoim /etc/apt/sources.list
and /etc/apt/sources.list.d/*
plików.Dodaj plik apt-preferencji, np. /etc/apt/preferences.d/99-back-to-stable-updates
Zawierający ( precise
tutaj - zamień na swoją wersję):
Package: *
Pin: release a=precise
Pin-Priority: 1001
Package: *
Pin: release a=precise-updates
Pin-Priority: 1001
Package: *
Pin: release a=precise-security
Pin-Priority: 1001
Package: *
Pin: release a=precise-proposed
Pin-Priority: -10
Package: *
Pin: release a=precise-backports
Pin-Priority: -10
To przypięcie> 1000 spowoduje, że apt wymusi obniżenie poziomu pakietów z tego kanału, a priorytet <0 na kanałach -proposed
i -backports
spowoduje usunięcie również wszystkich dodatkowych pakietów.
Teraz biegnij
sudo apt-get update
sudo apt-get dist-upgrade
Sprawdź proponowane rozwiązanie, które Ci da, a jeśli uważasz, że jest w porządku, zaakceptuj je. Jeśli chcesz sprawdzić, dlaczego i do jakiej wersji zostanie obniżona, sprawdź to za pomocą, apt-cache policy packagename
aby zobaczyć, jakie wersje są dostępne i co decyduje o tym, czy jest to kandydat do instalacji.
Usuń /etc/apt/preferences.d/99-back-to-stable-updates
plik ponownie, ponieważ nie jest już potrzebny.
Dzięki mlind
na forach Ubuntu za tę inspirację dotyczącą przypinania w swoim poście sprzed ponad 5 lat - ale pomogło mi to dzisiaj całkiem dobrze.
Ta strona sugeruje, że przypinanie Apt może być użyte do obniżenia wersji z całego repozytorium poprzez wykorzystanie faktu, że priorytety przypinania wyższe niż 1000 mogą spowodować obniżenie pakietu .
Jednym z rozwiązań może być tymczasowe zwiększenie o 1000 domyślnych priorytetów wszystkich plików pakietów oprócz tych z natty-proposed
repozytorium:
apt-cache policy | awk '
/^ [0-9]+ / {
p = $1;
getline;
r = $0;
if (r !~ /a=natty-proposed/) p += 1000;
print "Package: *\nPin: " r "\nPin-priority: " p "\n"
}
' | sudo tee /etc/apt/preferences.d/downgrade-from-natty-proposed
(Uwaga: ta metoda nie zwiększa priorytetu plików pakietów, których pola wydania zawierają przecinki. Zobacz to pytanie .)
Po wykonaniu tej czynności apt-get --simulate upgrade
można użyć do przetestowania skutecznego wykrywania obniżenia wersji. Po potwierdzeniu, że wykryto prawidłowe obniżki, sudo apt-get upgrade
powinno wystarczyć do przeprowadzenia obniżenia.
Po zakończeniu obniżania wersji użyj źródeł oprogramowania, aby wyłączyć repozytorium aktualizacji przedpremierowych (proponowane przez natty) , a następnie usuń tymczasowe zwiększenie priorytetu:
sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed
Na koniec zrestartuj komputer, aby wszystkie działające programy były ich starszymi wersjami.
Nie mogę znaleźć prostszego rozwiązania niż poniższe. Ale mając nadzieję, że ktoś dostanie lepszą odpowiedź.
Poniższy skrypt, który może wykonać obniżenie wersji
#!/bin/bash
# get a list of installed packages
dpkg --get-selections | awk '{ print $1 }' > all-packages
# run apt-cache policy on each of them, then elaborate with the awk script
apt-cache policy $(<all-packages) |
./get-prev-pkg-vers >old-versions
# install previous version of packages
sudo apt-get --simulate install $(< old-versions)
awk
Scenariusz, nazwany get-prev-pkg-vers
jest następująca
#!/usr/bin/awk -f
/^[^ ]/ {
package = $1
gsub(":", "", package)
search_next = 0
}
/^ [^ ]/ {
installed = 0
version = $1
if (search_next == 1) {
print package "=" version
search_next = 0
}
}
/^ \*\*\* [^ ]/ {
installed = 1
}
/^ [^ ]/ {
branch = $3
if (installed == 1 && branch ~ /proposed/) {
search_next = 1
}
installed = 0
}
Podczas uruchamiania skryptu proponowane repozytorium NIE powinno być jeszcze wyłączone.
Pamiętaj, aby ustawić bit wykonywalny na obu skryptach.
Problem z tym podejściem polega na tym, że wszystkie obniżone pakiety zostaną zainstalowane ręcznie (także te, które zostały zainstalowane automatycznie).
Aby być bezpiecznym, dodaj --simulate
opcję apt-get
na końcu skryptu bash.
Cofnięcie wszystkich pakietów z proponowanej przez natty prawdopodobnie nie jest potrzebne: większość pakietów zostanie wkrótce zaktualizowana do tych samych wersji poprzez natty-updates.
Jeśli masz problem z jednym pakietem, możesz przywrócić ten pakiet, korzystając z metody prezentowanej przez rodziców (po wyłączeniu -proposed), lub możesz użyć sudo aptitude install packagename/natty
. Co ważniejsze, powinieneś zgłosić błąd w pakiecie. Niewiele osób faktycznie testuje proponowane przez natty, a jeśli wystąpią regresje (= nowe problemy), to z pewnością należy je zgłosić. W przeciwnym razie mogą skończyć w aktualizacjach dla wszystkich użytkowników ubuntu. Więc jeśli masz jakieś problemy, zgłoś się.
W Synaptic możesz wyłączyć repozytorium proponowanych i zaktualizować źródła. Wtedy zobaczysz, że wszystkie pakiety, które zostały zaktualizowane, pojawiają się jako zainstalowane lokalnie (ponieważ nie są już w repozytoriach).
Teraz będziesz musiał „obniżyć” te pakiety. Wybierz jeden po drugim, aw górnym menu wybierz:
package > force version
(lub Control + E)
Pojawi się menu z dostępnymi opcjami. Wybrałbym niższy numer wersji dla każdego pakietu. Jeśli popełnisz błąd i w normalnych repozytoriach pojawi się nowsza wersja, problem zostanie rozwiązany w późniejszej aktualizacji.
Szybkim rozwiązaniem byłoby użycie polecenia purge-ppa wskazującego na poranowane repozytorium, ale nie wiem, czy to by z nimi działało, użyłem go tylko do wyczyszczenia zewnętrznych ppa i obniżenia pakietów do oficjalnych wersji ubuntu. W tym przypadku nie zalecę ci tego, może ktoś wie, czy jest to bezpieczna metoda ...
Zaproponowałem, aby zapewnić funkcję do downgrade'u wszystkie proposed
pakiety z prostego polecenia equiavalent utrzymywana na ppa-purge
co https://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/1810499 ponieważ tutaj słupki wciąż zdają się reprezentować stan systemu.
„proponowane” - rozumiesz?