Programme nicht aus Port/Package, Abhängigkeiten, z. B. JDK 6

konstantin

Well-Known Member
Hallo!

Ich benötige JDK 6. Wenn ich mir das von der Sun-Homepage ziehe, funktioniert das mit der Linuxbinärkompatibilität auch super. Wenn ich jetzt Programme installieren will, die Java benötigen, wird ja trotzdem versucht, Java zu aus den Ports etc. zu installieren - Der Paketmanager weiß ja nicht, dass ich schon java drauf habe.

Wie kann ich ihm jetzt klar machen, dass er ein Programm mit allen Abhänigkeiten, aber ohne Java, installieren soll? Geht das?

Es sei nochmal drauf hingewiesen, dass es mit hier primär um das Prinzip als solches geht. Java ist hier nur das Beispiel. Natürlich könnte ich diablo-java 1.5 parallel installieren.

Gruß
Konstantin
 
Am einfachsten, aber unsaubersten ist es wohl, die Abhaengigkeit aus dem Makefile des Ports zu entfernen. Beim naechsten Update des Trees ist das aber schon wieder mit drin.
Alternativ dazu kannst du die Abhaengigkeit so umbiegen, dass auf die neue Version des JDKs geprueft wird.
Wenn das linux-JDK6 vernuenftig mit FreeBSD laeuft, waere der Koenigsweg natuerlich, einen Port dafuer zu erstellen ;-)
 
OK, ein Port daraus zu machen, wäre natürlich was. Ich denk mal drüber nach ...



Ich glaube, ich bin aber durch Zufall auf meine Antwort gestoßen:

/usr/local/etc/pkgtools.conf schrieb:
# ALT_PKGDEP: hash
#
# This is a hash to define alternative package dependencies. For
# each pair A => B, when a package X claims that it depends on a
# package that matches the "pkgname glob" pattern A which is not
# installed, the dependency is replaced with one installed
# package that matches the "pkgname glob" pattern B. If glob B
# matches more than one installed package, replacement is not done
# automatically. <:delete> and <:skip> are special symbols that can
# be used as B values, instead of pkgname glob patterns. <:delete>
# means to delete the dependency and <:skip> to skip it.
#
# This replacement is done when "pkgdb -F" is executed.
#
# cf. pkg_glob(1), pkgdb(1)
#
# e.g.:
# ALT_PKGDEP = {
# # If you use apache13-modssl instead of apache13
# 'apache-1.3.*' => 'apache+mod_ssl-1.3.*',
#
# # The same as above; you can use origins also
# 'www/apache13' => 'www/apache13-modssl',
#
# # If you install Apache from source (not from ports/packages)
# 'apache' => :delete,
#
# # You can specify pkgname w/o version; see pkg_glob(1)
# 'w3m' => 'w3m-m17n',
# }

ALT_PKGDEP = {
}

Wenn ich jetzt also
Code:
ALT_PKGDEP = {
   '*jdk* => :delete,
}
eingebe, dann wird er kein jdk installieren, richtig? (Wobei ich noch nicht richtig verstanden habe, wo der Unterschied zwischen :delete und :skip ist.)


Die Datei scheint sehr interessant zu sein. (Auch gut kommentiert.) Ich kann nur empfehlen, da mal nen Blick rein zu werfen ...
 
:delete heisst wahrscheinlich, dass er das Paket loescht, wenn es schon installiert ist. :skip ist es egal, ob es installiert ist oder nicht.
 
Zurück
Oben