it-swarm.com.de

Ignorieren Sie mit apt-get alle Abhängigkeiten für ein bestimmtes Paket

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 nicht benötigt, es sei denn, Sie möchten eine Schnittstelle mit Java oder wxWidgets herstellen.

Ich kann Erlang so installieren

Sudo dpkg -i --force-depends erlang.deb

Die anschließende Installation von apt-get 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 herunterzufahren, ohne apt-get install -f auszuführen?

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: https://serverfault.com/questions/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.

16
android

Ich verstehe den Punkt von bjanssen, aber es erscheint für einen Paketmanager lächerlich, --force-depends für eine einzelne Paketinstallation zuzulassen, aber keine erzwungenen Abhängigkeiten für immer zuzulassen, um mich vor dieser Abhängigkeit zu warnen.

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 bearbeiten,
  • finde das Paket mit den kaputten Abhängigkeiten
  • bearbeiten Sie die Zeile Depends:, um zu verhindern, dass sich das Paket beschwert.

Ich gehe davon aus, dass das überschrieben wird, wenn das Paket das nächste Mal aktualisiert wird, aber genau das möchte ich.

25
andrew lorien

Was Sie versuchen, ist gegen den Zweck eines Paketmanagers, der versucht, eine vernünftige Umgebung aufrechtzuerhalten, d. H. O. w. Sie verwenden das falsche Werkzeug für den Job. Versuchen Sie nicht, apt-get zu brechen.

Der richtige Weg, um Ihr Problem zu lösen, besteht darin, ein eigenes Paket mit für Sie geeigneten Abhängigkeiten zu erstellen. Es gibt den offiziellen Weg (ziemlich involviert: http://www.debian.org/doc/manuals/maint-guide/index.en.html ) und die schnelle und fehlerhafte Verwendung von apt-build oder für Pakete, die nicht in der Distributionsquelle enthalten sind, checkinstall. Alle Produktpakete von apt-get werden problemlos installiert.

Abschließend stellen Sie möglicherweise die Weisheit des Betreuers von esl-erlang in Frage, bestimmte Abhängigkeiten einzuschließen, aber Sie können dem Paketmanager keine Fehler wegen des beabsichtigten Verhaltens vorwerfen. Wenn Sie der Meinung sind, dass diese Abhängigkeiten falsch sind, sollten Sie einen Fehler mit dem Paket melden.

2
bjanssen

Überprüfen Sie, ob der im apt.conf verwendete "Proxy" korrekt ist (d. H. In Übereinstimmung mit Ihrem Netzwerk). Dies führt auch zu solchen Problemen, da URLs nicht erreichbar wären.

Wenn Sie einen Proxy verwenden, sieht Ihr /etc/apt/apt.conf normalerweise folgendermaßen aus:

Acquire::ftp::proxy "ftp://<user>:<password>@<ip>:<port>/";
Acquire::http::proxy "http://<user>:<password>@<ip>:<port>/";
Acquire::https::proxy "https://<user>:<password>@<ip>:<port>/";
0
parasrish