Powiedz aptitude, aby zignorował uszkodzony pakiet

9

Zainstalowałem Amsynth od Lucid w Karmic, używając:

dpkg --force-depends-version -i amsynth_1.2.2-1_i386.deb

Powodem instalacji wersji Lucid jest to, że wersja Karmic ma 3 lata i ulega awarii na moim komputerze. Pakiet Lucid Amsynth zależy od nowszych wersji libatk1 i libjack0 niż Karmic, ale pomyślałem, że zaryzykuję i okazuje się, że Amsynth działa dobrze.

Jednak aptitude próbuje odinstalować Amsynth przy każdej aktualizacji. Wydaje mi się, że udało mi się to zawiesić, ale teraz umiejętności się przerywają. Jak mogę powiedzieć aptitude, aby zignorował zepsuty pakiet i kontynuował.


źródło
Na razie właśnie go odinstalowałem. Będę ponownie instalować za każdym razem, gdy będę go ponownie potrzebować, nie potrwa to zbyt długo, dopóki nie wkurzy mnie na tyle, aby spróbować ponownie go skompilować.
Jeśli potrzebujesz czegoś z nowszej wersji i potrzebujesz nowszych bibliotek, zazwyczaj możesz po prostu pociągnąć je ze sobą lub pobrać pakiet źródłowy i odbudować go w systemie. Jednak natknąłem się na to, próbując użyć pakietu innej firmy i wtedy hacki są potrzebne.
Jan Hudec

Odpowiedzi:

7

Jeśli zainstalowałeś program za pomocą pliku deb i dpkg, możesz również ręcznie zmienić zależności zainstalowanego pliku .deb. Raz doprowadzono mnie do tego ekstremalnego środka ...

ar x foo.deb
vim control.tar.xz  # see below
ar r foo.deb control.tar.xz
dpkg -i foo.deb

i dpkg nie wie już o zależnościach od foo. W vimie musisz wybrać ./control (używam vima do czytania spakowanych plików - rozpakuj i użyj innego edytora i przepakuj, jeśli chcesz) i usuń niechciane zależności z linii

Depends: foo bar
skunk_michi
źródło
1
Lepiej jest używać dpkg-deb, niż ar. arjest szczegółem implementacji dpkg, który może ulec zmianie w przyszłości.
jmtd,
Dzięki, to rozwiązanie działało dla mnie, ale kiedy robię aktualizację apt-get, pojawia się komunikat „Następujące pakiety zostały zachowane: numptyphysics: i386” (apt-get dist-upgrade nic nie mówi). Czy ta wiadomość jest normalna i czy nie możemy się jej pozbyć?
baptx
7

W Ubuntuforums istnieje zhakowane rozwiązanie . ~ rozwiązanie kwacka jest lepsze, ale więcej pracy.

Nie mogłem znaleźć w Google niczego na ten temat, zapisz kompilację własnego „fikcyjnego pakietu” (niemożliwe bez odinstalowania uszkodzonych pakietów), chyba że masz szczęście mieć już narzędzia), ale przeszukanie własnego dysku twardego dało mi odpowiedź w końcu!

Dla każdego, kto chciałby wiedzieć, oto, jak „rozbić” pakiet w synaptic / aptitude / apt-get, bez jego odinstalowywania.

Przede wszystkim zanotuj zainstalowany pakiet, a pakiety zależą od tego, czy nadają mu status zepsuty. Powiedzmy, że wymusiłem instalację jabłek, co zależy od przestarzałego pakietu, którego nie ma w repozytorium:

W kodzie typu terminala:

sudo gedit /var/lib/dpkg/status

przeszukaj plik w poszukiwaniu jabłek, aż znajdziesz coś takiego:

Kod:

Package: apples
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 316
Maintainer:
Architecture: i386
Source: applesauce
Version: 1.0.10-1
Depends: packageA, packageB, obsolete
Description: Apples on your desktop!

Usuń przestarzałe z wiersza Depends: zapisz plik i gotowe. Mam nadzieję, że to pomaga niektórym ludziom wyjść.

Iain
źródło
ick. dobre znalezisko, ale nie jestem fanem okłamywania menadżera pakietów (co jest zasadniczo tym, co robi hack). lepiej nie używać w ogóle APT, niż biegać, rozbijając go bezmyślnie. dlatego kompilowanie własnych pakietów jest dobrą rzeczą - bez zepsutych zależności i bez okłamywania menedżera pakietów.
quack quixote
Nie mam problemu z okłamywaniem menedżera pakietów, zwłaszcza, że ​​za kilka miesięcy będę ponownie instalować system operacyjny, ale nie mogłem znaleźć pliku, do którego odwołuje się wątek.
Dziwne. Powinno tam być. Spróbuj wykonać „cd / var / lib / dpkg”, a następnie „status sudo nano”.
Iain
1
Link już nie działa. To jest dokładnie powód, dla którego odpowiedzi tylko link są tutaj niezadowolone. Jeśli wyjaśniłeś tutaj, to byłaby poprawna odpowiedź.
Jan Hudec
Nie wiem, czy jest to trwałe, czy nie, ale z pewnością wydaje się, że to jak dotąd porządna poprawka do instalowania pakietów, które są mocno zależne od już niedostępnych wersji Java.
krispy
2

W sekcji Preferencje aptitude (Ctrl-T, aby wejść do menu; w Opcjach), usuń zaznaczenie opcji w sekcji „Obsługa zależności”, która mówi „Automatycznie napraw uszkodzone pakiety przed instalacją lub usunięciem” . To powinno sprawić, że aptitude przestanie próbować naprawić pakiet przy każdej zmianie innych pakietów.

Jako bardziej trwałą poprawkę powinieneś pobrać pakiety źródłowe dla zainstalowanego pakietu Lucid Amsynth , a także pakiety źródłowe dla libatk1 i libjack0 i zbudować własny zaktualizowany pakiet. W zależności od tego, co jeszcze korzysta z tych bibliotek, może być konieczne zaktualizowanie innych pakietów, ale prawdopodobnie możesz uniknąć tych tylko. (Jest to zasadniczo backportowanie tych pakietów z Lucid do Karmic - powinieneś sprawdzić repozytorium backportów Karmic lub PPA, aby sprawdzić, czy ktoś już to zrobił. Jeśli twoje nowe pakiety działają, rozważ wysłanie ich do backportów Karmic, aby inni mogli z nich skorzystać. )

quack quixote
źródło
Dzięki, wypróbowałem twoją pierwszą sugestię, ale nie miała znaczenia. Aktualizacje po prostu przerwały. Próbowałem też go skompilować, zanim spróbowałem zainstalować pakiet Lucid, ale nie miałem z tym szczęścia. Mogę spróbować ponownie w przyszłości.