Dies ist eine sehr spezielle Frage, die von Google nicht beantwortet werden konnte.
Ich verwende Ubuntu 13.04 mit apt 0.9.7.7ubuntu4 for amd64 compiled on Oct 3 2013 15:25:56
.
Ich möchte Erlang aus einem .deb-Paket installieren, möchte jedoch nicht alle Abhängigkeiten ermitteln. Das Paket selbst gibt an, dass es von Java- und wx-Bibliotheken abhängt. In Wirklichkeit werden diese jedoch nur benötigt, wenn Sie eine Schnittstelle mit Java oder wxWidgets herstellen möchten.
Ich kann Erlang so installieren
sudo dpkg -i --force-depends erlang.deb
Die anschließende Installation anderer apt-get
Komponenten schlägt jedoch aufgrund nicht erfüllter Abhängigkeiten fehl. Wenn ich also git nach Erlang installieren möchte, erhalte ich Folgendes
$ 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).
Gibt es eine Möglichkeit, das esl-erlang
Paket zum Schweigen zu bringen, ohne ausgeführt zu werden apt-get install -f
?
Ich möchte so etwas:
sudo apt-get install --ignore-deps-for-package=esl-erlang git
oder so:
sudo apt-cache shut-package-up esl-erlang
oder dieses:
sudo apt-get download git
sudo dpkg -i --with-deps git.deb
Ich habe eine ähnliche Frage gefunden: /server/250224/how-do-i-get-apt-get-to-ignore-some-dependencies . Einige Antworten enthalten praktische manuelle Schritte zum Ändern der Abhängigkeiten bestimmter Pakete.
Ich bin immer noch auf der Suche nach einer robusten automatisierten Methode.
quelle
--nodeps
(apt-get
) oder--ignore-depends
mitdpkg
?Antworten:
Ich verstehe den Punkt von bjanssen, aber es erscheint für einen Paketmanager lächerlich,
--force-depends
eine einzelne Paketinstallation zuzulassen , aber keine forceabhängige Ewigkeit-und-Stopp-Warnung-mich-über-diese-Abhängigkeit zuzulassen.Ich hatte ein ähnliches Problem mit einem Paket, das von einer libcairo-Version abhing, die etwas höher war als die derzeit in Debian verfügbare. Für meine Zwecke funktioniert es immer noch gut. Ich benutze es gerne weiter, bis das libcairo-Update in apt erscheint. Ich möchte nicht aus dem Quellcode kompilieren oder mein eigenes Paket erstellen.
Die Lösung, die ich gefunden habe:
/var/lib/dpkg/status
,Depends:
Zeile, um zu verhindern, dass sich das Paket beschwert.Ich gehe davon aus, dass dies beim nächsten Update des Pakets überschrieben wird, aber genau das möchte ich.
quelle
Was Sie versuchen, ist gegen den Zweck eines Paketmanagers, der versucht, eine vernünftige Umgebung aufrechtzuerhalten, wenn Sie das falsche Tool für den Job verwenden. Versuchen Sie nicht, apt-get zu brechen.
Der richtige Weg, um Ihr Problem zu lösen, besteht darin, ein eigenes Paket mit Abhängigkeiten zu erstellen, die zu Ihnen passen. Es gibt den offiziellen Weg (ziemlich kompliziert: http://www.debian.org/doc/manuals/maint-guide/index.en.html ) und den schnellen und schmutzigen Weg
apt-build
, Pakete zu verwenden oder für Pakete, die nicht in der Distributionsquelle enthalten sind,checkinstall
. Alle Produktpakete von apt-get werden problemlos installiert.Abschließend können Sie die Weisheit des Betreuers von esl-erlang in Frage stellen, bestimmte Abhängigkeiten einzuschließen, aber Sie können den Paketmanager nicht für das beabsichtigte Verhalten beschuldigen. Wenn Sie der Meinung sind, dass diese Abhängigkeiten falsch sind, sollten Sie einen Fehler mit dem Paket melden.
quelle
libmng1
. Aber ich hattelibmng2
AND einen Symlink auf gesetztlibmng1.so
. Arbeitete eine Bedrohung, hatte nie Probleme.apt-get
Beschwert sich aber immer über "unerfüllte Abhängigkeiten". Es gibt also auf jeden Fall einen guten Grund, einen Weg zu finden, um die Eignung in dieser Hinsicht zum Schweigen zu bringen. Da Dinge tun Arbeit, hält es nur für Dinge beschweren , die einfach sind kein Problem. Es werden nur Probleme gesehen, bei denen es keine gibt. Und das nervt.equivs
nach "Silencing" apt-get, ohne es zu brechen.Überprüfen Sie, ob der "verwendete Proxy" in der
apt.conf
(dh in Übereinstimmung mit Ihrem Netzwerk) richtig ist. Dies führt auch zu solchen Problemen, da URLs nicht erreichbar wären.Wenn Sie einen Proxy verwenden,
/etc/apt/apt.conf
sieht dieser normalerweise folgendermaßen aus:quelle