To bardzo konkretne pytanie, na które Google nie pomogło odpowiedzieć.
Używam Ubuntu 13.04 z apt 0.9.7.7ubuntu4 for amd64 compiled on Oct 3 2013 15:25:56
.
Chcę zainstalować Erlang z pakietu .deb, ale nie chcę wyciągać wszystkich jego zależności. Sam pakiet określa, że zależy od bibliotek Java i wx, ale w rzeczywistości nie są one potrzebne, chyba że chcesz połączyć się z Javą lub wxWidgets.
Mogę zainstalować Erlang w ten sposób
sudo dpkg -i --force-depends erlang.deb
Jednak instalacja czegokolwiek apt-get
później nie powiedzie się z powodu niezaspokojonych zależności. Więc jeśli chcę zainstalować git po Erlangu, otrzymuję następujące informacje
$ sudo apt-get install -y git
Reading package lists...
Building dependency tree...
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
esl-erlang : Depends: default-jre-headless but it is not going to be installed or
java2-runtime-headless or
java1-runtime-headless or
java2-runtime or
java1-runtime
Depends: libwxbase2.8-0 but it is not going to be installed
Depends: libwxgtk2.8-0 but it is not going to be installed
Recommends: erlang-mode but it is not going to be installed
git : Depends: libcurl3-gnutls (>= 7.16.2-1) but it is not going to be installed
Depends: perl-modules but it is not going to be installed
Depends: liberror-perl but it is not going to be installed
Depends: git-man (> 1:1.7.9.5) but it is not going to be installed
Depends: git-man (< 1:1.7.9.5-.) but it is not going to be installed
Recommends: patch
Recommends: rsync
Recommends: ssh-client
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Czy istnieje sposób na esl-erlang
zamknięcie pakietu bez uruchamiania apt-get install -f
?
Chcę coś takiego:
sudo apt-get install --ignore-deps-for-package=esl-erlang git
lub tak:
sudo apt-cache shut-package-up esl-erlang
albo to:
sudo apt-get download git
sudo dpkg -i --with-deps git.deb
Znalazłem podobne pytanie: /server/250224/how-do-i-get-apt-get-to-ignore-some-dependencies . Kilka odpowiedzi zawiera przydatne ręczne kroki, aby zmodyfikować zależności niektórych pakietów.
Nadal szukam solidnej zautomatyzowanej metody.
źródło
--nodeps
(apt-get
) lub--ignore-depends
zdpkg
?Odpowiedzi:
Rozumiem punkt bjanssena, ale wydaje się śmieszne, aby menedżer pakietów zezwolił
--force-depends
na instalację pojedynczego pakietu, ale nie zezwalał na zależność od siły na zawsze i przestań ostrzegać mnie przed tą zależnością.Miałem podobny problem z pakietem, który zależał od wersji libcairo nieco wyższej niż obecnie dostępna w Debianie. Dla moich celów nadal działa dobrze. Cieszę się, że mogę go używać, dopóki aktualizacja libcairo nie pojawi się w apt. Nie chcę kompilować ze źródła ani budować własnego pakietu.
Rozwiązanie, które znalazłem:
/var/lib/dpkg/status
,Depends:
wiersz, aby zatrzymać reklamację pakietu.Zakładam, że zostaną zastąpione przy następnej aktualizacji pakietu, ale właśnie tego chcę.
źródło
To, co próbujesz zrobić, jest sprzeczne z celem menedżera pakietów, który stara się zachować rozsądne środowisko, ponieważ używasz niewłaściwego narzędzia do tego zadania. Nie próbuj przełamać apt-get.
Właściwym sposobem rozwiązania problemu jest zbudowanie własnego pakietu z zależnościami, które Ci odpowiadają. Istnieje oficjalny sposób (dość zaangażowany: http://www.debian.org/doc/manuals/maint-guide/index.en.html ) oraz szybki i brudny sposób użycia
apt-build
lub w przypadku pakietów spoza źródła dystrybucji,checkinstall
. Wszystkie pakiety produkcyjne apt-get zostaną zainstalowane z radością.Na koniec możesz zakwestionować mądrość opiekuna esl-erlang, aby uwzględnić pewne zależności, ale nie możesz winić menedżera pakietów za zamierzone zachowanie. Jeśli uważasz, że te zależności są błędne, powinieneś zgłosić błąd w pakiecie.
źródło
libmng1
. Alelibmng2
zainstalowałem ORAZ dowiązanie symboliczne ustawione nalibmng1.so
. Działał jako zagrożenie, nigdy nie miał żadnych problemów. Aleapt-get
zawsze narzekał na „niespełnione zależności”. Jest więc zdecydowanie dobry powód, aby znaleźć sposób na uciszenie umiejętności w tym zakresie. Od rzeczy zrobić pracę, to po prostu utrzymuje skarży rzeczy, które po prostu są nie problem. Po prostu widzi problemy tam, gdzie ich nie ma. I to jest denerwujące.equivs
„wyciszenie” apt-get bez jego łamania.Sprawdź, czy „używany serwer proxy”
apt.conf
jest właściwy (tzn. Zgodny z siecią). Powoduje to również takie problemy, ponieważ adresy URL byłyby nieosiągalne.Zazwyczaj, jeśli używasz serwera proxy,
/etc/apt/apt.conf
wyglądałoby to tak:źródło