Mam kilka pakietów mesa, które uaktualniłem do wersji PPA, przed wyczyszczeniem PPA, aby móc zaktualizować swój system. Różnice w wersjach są niewielkie (technicznie są takie same, tylko jeden zestaw bibliotek pochodzi z git, a pozostałe są wersjami ostatecznymi).
Jeśli spróbuję obniżyć wersję poprzez Synaptic, apt-get lub aptitude, zostanę wrzucony do piekła zależności.
Czy istnieje sposób ręcznego obniżenia poziomu pakietów (być może jeden po drugim) i oznaczenia ich zależnych pakietów jako nieruchome (jeśli ma to sens), dopóki nie skończę?
PS to pytanie: Jak obniżyć pakiet za pomocą apt-get? jest trochę inny i nie pomaga w tej sytuacji.
apt
dpkg
dependencies
downgrade
RolandiXor
źródło
źródło
ppa-purge
pierwszy?synaptic
pakiet. Na przykład, jeśli użyjesz , gdy wybierzesz pakiet xyz, wszystkie zależności zostaną wybrane domyślnie. Ale zawsze możesz odznaczyć wszystkie zależności i po prostu zainstalować pakiet główny. Później możesz zainstalować wszystkie zależności. Ale ponownie, działa to tylko wtedy, gdy jesteś gotowy do ponownej instalacji.Odpowiedzi:
Nigdy wcześniej z tym nie grałem, ale sugerowałbym, abyś
hold
(lublock
) wersja zależności, które powodują problemy. W ten sposób dostępnaapt
jest bardziej ograniczona liczba możliwych rozwiązań i być może nie pomylić się przy próbie obniżenia poziomu innych pakietów.Jeśli nic więcej nie działa, możesz zastosować ręczne podejście sugerowane w tej odpowiedzi: Jak obniżyć pakiet za pomocą apt-get? . Zasadniczo, pobrać niezbędne
.deb
ręcznie pakietów, a następnie zainstalować je jeden po drugim, korzystając z niższego poziomudpkg
, a jeden z jej argumentów siłowych:--ignore-depends
,--force-depends
,--force-depends-version
, lub nawet--force-all
.W tym samym duchu co powyżej masz
--force-downgrade
argument:Ale zakłada to, że przeczytałeś
man dpkg
i rozumiesz, co robisz:Zobacz Błąd: numer wersji nie zaczyna się od cyfry i Jak zainstalować starszą wersję Java i Jak zainstalować starszą wersję pakietu, np. Liquid 2.2.2? dla przykładów:
I zobacz Jak mogę zainstalować pakiet bez instalowania niektórych zależności? na przykład (wraz z odpowiednim ostrzeżeniem):
Jeszcze innym podejściem byłoby utworzenie fikcyjnego
.deb
pakietu przy użyciuequivs
pakietu (i być może nieco innej nazwy). Następnie instalacja fikcyjnego pakietu powinna umożliwić usunięcie pakietu „true” przy zachowaniu odpowiednich zależności, a następnie zainstalowanie starszej wersji. Nie jestem pewien, jak dokładnie to zadziałałoby, ale sprawdź ten odpowiedni wątek, aby uzyskać szczegółowe informacje: Jak usunąć deb bez usuwania jego zależności .źródło
Możesz najpierw użyć
apt-mark
do zaznaczenia wszystkich zależności pakietu docelowego (i być może również tych zalecanych / sugerowanych) zainstalowanych w systemie jako instalacji ręcznych . Po wykonaniu tej czynności zainstaluj poprzednie wersje oprogramowania z wyraźnymapt-get
podaniem wersji.Aby wyświetlić zależność, zalecane i sugerowane pakiety dla pakietu docelowego:
Oznaczanie pakietów jako zainstalowane ręcznie :
(użyj tego dla wszystkich zależności, rekomendacji i sugestii).
Usuń pakiet docelowy:
Aby zobaczyć listę wersji pakietów, które możesz obniżyć / uaktualnić, użyj:
Zainstaluj docelową wersję wymaganego pakietu:
lub
PS. Jeśli lista zależności / rekomendowanych / sugerowanych pakietów, tj. Tych, które mają być oznaczone,
apt-mark
jest duża, zapisz zamierzoną listę spakowanych danych wyjściowychapt-cache show <target-package-name>
w dowolnym pliku powiedz/path/to/foo
i użyjapt-mark
w takiej kombinacji:źródło
apt-cache policy <target-package-name>
do posiadania listy wersji pakietów, które możesz obniżyć / uaktualnić do ...Właśnie przeszedłem przez ból związany z aktualizacją do wyższej wersji pakietu, a następnie zdecydowałem się na obniżenie wersji. Odbyło się to za pośrednictwem prywatnego repozytorium opiekunów. W moim przypadku chodziło o wypróbowanie najnowszej wersji systemd 233 (jeszcze nie wydanej).
Kluczem jest zrozumienie, że musisz określić wszystkie pakiety, które powinny zostać obniżone. Jeśli dobrze to zrozumiesz, prawdopodobnie zrobisz, co chcesz. Jeśli coś przeoczysz, apt powie ci, że akcja spowoduje usunięcie wielu pakietów. Aby upewnić się, że używamy flagi „-s”, aby wypróbować wersję starszą, zanim faktycznie to zrobimy.
Kroki, które musisz podjąć, to:
1) Wymień wszystkie zależności, które zostały uaktualnione do upstream (użyj innej słowa kluczowego, jeśli Twoja sytuacja jest inna):
Daje ci to listę pakietów z nadrzędnym numerem wersji.
2) Podaj, jaka jest poprawna stabilna wersja dla każdego pakietu:
3) Sprawdź dwukrotnie, czy wszystko jest w porządku:
(nie jestem pewien, czy wymagana była opcja --reinstall btw, ale tak właśnie zrobiłem)
4) Usuń -s i zrób to.
źródło