TODO - Leider ist im Moment nicht die richtige Java-Version in den Ports
Java wird ursprünglich nicht für FreeBSD entwickelt. Wenngleich es eine für FreeBSD angepasste Version gibt so ist es nicht das originale Java und kann zu Problemen mit verschiedenen Programmen führen. Sollte es also nicht möglich sein ein Java-Programm mit der für FreeBSD angepassten Version von Java zu nutzen, so kann in einer abgetrennten chroot-Umgebung eine Version des originalen Java unter Verwendung der Linux-Kompatibilität installiert werden.
Es ist ein installiertes FreeBSD mit installierten Systemquellen in /usr/src sowie eine eingerichtete Linux Kompatibilität notwendig.
Zunächst muss das Verzeichnis angelegt werden in welches die chroot-Umgebung installiert wird. In diesem Fall wird das Verzeichnis /usr/local/jails/java gewählt.
Sollte nicht bereits eine kompilierte Version der Systemquellen vorliegen (z.B. von einem händischen Systemupdate oder eine Jail-Installation) muss das System nun übersetzt werden.
# cd /usr/src/ # make buildworld
Hierdurch wird das gesamte Basissystem übersetzt und in /usr/obj gespeichert.
Das fertig kompilierte System wird nun an seinen Zielort kopiert. Dies geschieht mit folgendem Aufruf (auch hier wieder aus /usr/src).
# make installworld DESTDIR=/usr/local/jails/java # make distribution DESTDIR=/usr/local/jails/java
Anschließend müssen noch ein paar Anpassungen vorgenommen werden. Die Ports werden in der Chroot verfügbar gemacht:
# mkdir /usr/local/jails/java/usr/ports # mount_nullfs /usr/ports /usr/local/jails/java/usr/ports
Dann wird noch die resolv.conf in die Chroot kopiert um eine Namensauflösung im Internet zu ermöglichen:
# cp /etc/resolv.conf /usr/local/jails/java/etc/
Zur Installation der Linux Bibliotheken wird /dev benötigt:
# mount -t devfs devfs /usr/local/jails/java/dev
Und weiter gehen die Arbeiten in der Chroot.
# chroot /usr/local/jails/java
Die folgenden Befehle werden nun innerhalb der Chroot-Umgebung ausgeführt.
Um sicher zu stellen, dass alle Pakete gegen die Bibliotheken von Fedora Core 10 gebaut werden wird die Datei /etc/make.conf mit folgendem Inhalt angelegt:
OVERRIDE_LINUX_BASE_PORT=f10 OVERRIDE_LINUX_NONBASE_PORTS=f10
Nun kann die Linux-Umgebung installiert werden:
# cd /usr/ports/emulators/linux_base-f10 # make install clean
Nachdem die Linuxbibliotheken installiert wurden muss nur noch Java installiert werden.
# cd /usr/ports/java/linux-sun-jre16/ # make install clean
Die Installation bricht ab und teilt mit, dass Java direkt beim Hersteller heruntergeladen werden muss. Dies wird nun gemacht (gewählt wird hier die normale Linux Version - nicht die X64 Version). Diese Datei wird nun in /usr/ports/distfiles kopiert.
Und erneut wird installiert… Nun mit der benötigten Datei.
# cd /usr/ports/java/linux-sun-jre16/ # make install clean
Im Anschluss hieran muss noch das Linux-procfs in der chroot gemountet werden. Es wird in der chroot-Umgebung die Datei /etc/fstab mit folgendem Inhalt angelegt:
linproc /compat/linux/proc linprocfs rw 0 0
Ist dies geschehen, dass linprocfs gemountet werden:
# mount /compat/linux/proc