So lässt man Aptitude Oracle Java als gültige Java-Abhängigkeit erkennen

So lässt man Aptitude Oracle Java als gültige Java-Abhängigkeit erkennen

Ich habe Oracle Java 7 auf meinem Debian.

Ich möchte den Tomcat-Server mit Aptitude installieren, aber es versucht ständig, Icedtea und unnötige Java-bezogene Pakete zu installieren. Kann Aptitude erkennen, dass ich bereits Java habe?

NB: Ich habe make-jpkgden Befehl verwendet, um Java aus dem Archiv zu installieren.

Antwort1

Bearbeiten: Hier oben gibt es eine einfachere Methode, aber die Angaben zu controlDateien aus der vollständigen Originalantwort sind immer noch relevant, daher belasse ich sie unter der horizontalen Regel.

Wenn make-jpkgSie bereits eine Oracle Java .deb-Datei erstellt haben, können SieExtrahieren Sie es, ändern Sie die controlDatei wie unten, um providesAnweisungen hinzuzufügen, packen Sie es erneut und installieren Sie das geänderte Deb..


Ursprüngliche Antwort:

Mit equivskann ein Dummy-Paket erstellt werden, das dpkg grundsätzlich vorgaukelt, dass etwas installiert ist.

Ein gutes Beispiel für den Einsatz von 'equivs' finden Sie inHier.

Offiziell sollten Sie damit beginnen, wodurch eine Datei im aktuellen Verzeichnis equivs-control <:pkgname>erstellt wird . Darin befinden sich verschiedene Felder, aber Sie benötigen nur acht und können den Rest einfach löschen. Hier ist ungefähr das Ergebnis, das Sie für ein fiktives Paket erhalten sollten :pkgnamepkgname

Section: misc
Priority: optional
Standards-Version: 3.9.2

Package: pkgname
Version: 1:42
Maintainer: Your Name <[email protected]>
Architecture: all
Description: fake pkgname to block a dumb dependency

Um dies für Oracle Java zu tun und es als Ersatz für OpenJDK einzusetzen (von dem es anscheinend eine Abhängigkeit icedtea-netxin Sid ist, das ich verwende), müssen Sie, glaube ich, den provides:Eintrag in der Dpkg-Konfiguration festlegen. Ihre Kontrolldatei würde dann etwa so aussehen:

Section: misc
Priority: optional
Standards-Version: 3.9.2

Package: oracle-java
Version: 7u181-2.6.14-1
Maintainer: Joe Bob <[email protected]>
Architecture: all
Description: dummy Java package to let the system know Oracle JDK is OK to use
Provides: openjdk-7-jdk, openjdk-7-jre, openjdk-7-jre-headless

Beachten Sie die Hinzufügung der letzten Zeile. Wenn ich in Markdown farbigen Text erstellen könnte, würde ich ihn zur Hervorhebung rot einfärben.

Dann heißt es laut dem oben verlinkten Blog-Beitrag:

Wenn Sie dies getan haben, müssen Sie nur noch den Befehl eingeben equivs-build path-to-pkgname(vorzugsweise aus demselben Verzeichnis) und Sie erhalten ein Fake-Deb zur Installation dpkg -i. Verabschieden Sie sich von der Abhängigkeit.

Nähere Informationen zur providesRichtlinie finden Sie unter: https://www.debian.org/doc/debian-policy/ch-relationships.html#virtual-packages-provides

Beachten Sie, dass ich nicht sicher bin, welche Debian-Version Sie verwenden. Ich weiß also nicht, ob OpenJDK 7, 8 oder etwas anderes von icedtea abhängig ist. Sie sollten wahrscheinlich zumindest IcedTea installieren, da ich nicht glaube, dass Oracles JDK ein Web-Plugin hat. Aber wenn Sie möchten und sicher sind, dass es nichts kaputt macht, können Sie icedtea auch als „bereitgestellt“ hinzufügen. Der Paketname ist (glaube ich – es hängt von Ihrer Debian-Version ab) icedtea-7-plugin.

verwandte Informationen