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.
-proposedlub -backportsw swoim /etc/apt/sources.listand /etc/apt/sources.list.d/*plików.Dodaj plik apt-preferencji, np. /etc/apt/preferences.d/99-back-to-stable-updatesZawierający ( precisetutaj - 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 -proposedi -backportsspowoduje 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 packagenameaby 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-updatesplik ponownie, ponieważ nie jest już potrzebny.
Dzięki mlindna 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-proposedrepozytorium:
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 upgrademożna użyć do przetestowania skutecznego wykrywania obniżenia wersji. Po potwierdzeniu, że wykryto prawidłowe obniżki, sudo apt-get upgradepowinno 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)
awkScenariusz, nazwany get-prev-pkg-versjest 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 --simulateopcję apt-getna 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 proposedpakiety z prostego polecenia equiavalent utrzymywana na ppa-purgeco https://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/1810499 ponieważ tutaj słupki wciąż zdają się reprezentować stan systemu.
„proponowane” - rozumiesz?