Java pod Debianem

Z funus.net

Debian od wersji 4.0 (etch) daje możliwość zainstalowania z pakietów sunowskiej Javy, którą w poprzednich wersjach ─ ze względów licencyjnych ─ użytkownicy systemu musieli ręcznie ściągać i instalować.

[edytuj] Debian a Java

Debian 4.0 jest edycją stabilną, czego konsekwencją jest, że wersja Javy nie jest najnowsza, a konkretnie jest to 1.5 (oznaczana też jako Java 5). Jest to tzw. Standard Edition.

Java ─ jak to w Debianie ─ została podzielona na kilka paczek, zawierających:

  • sun-java5-jre ─ JRE (Java Runtime Environment) ─ maszyna wirtualna, biblioteki i inne elementy niezbędne do uruchamiania programów w Javie;
  • sun-java5-jdk ─ JDK (Java Development Kit) ─ zestaw narzędzi developerskich, dla programistów;
  • sun-java5-bin ─ programy wykonywalne;
  • sun-java5-demo ─ przykłady;
  • sun-java5-fonts ─ zestaw podstawowych czcionek wykorzystywanych przez aplikacje Javy;
  • sun-java5-source ─ kod źródłowy bibliotek Javy;
  • sun-java5-doc ─ dokumentacja, przy czym ten pakiet jest tylko "instalatorem": podczas instalacji poleca użytkownikowi ściągnąć ze stron Suna pliki jdk-1.5.0-doc.zip i jdk-1.5.0-doc-ja.zip i zapisać je w katalogu /tmp/. Dopiero po wykonaniu tych czynności dokumentacja może zostać zainstalowana przez system pakietów;
  • sun-java5-plugin ─ wtyczka do niektórych przeglądarek, umożliwiająca im wykonywanie apletów Javy.

Powyższa lista dotyczy systemu Debian etch dla architektury IA-32. W innych przypadkach zestaw pakietów może się różnić. Na przykład, w architekturze x86-64 (AMD64), nie ma pakietu sun-java5-plugin, gdyż wtyczka nie jest dostępna w wersji 64-bitowej. Istnieje za to dodatkowy pakiet, ia32-sun-java5-bin z 32-bitowymi wersjami niektórych, zależnych od platformy, elementów Javy.

[edytuj] Instrukcja instalacji

Żeby uzyskać listę pakietów do instalacji, można użyć polecenia:

aptitude -s install sun-java\*

Powinno ono wypisać coś w tym stylu:

Couldn't find package "sun-java*".  However, the following
packages contain "sun-java*" in their name:
 sun-java5-bin sun-java5-doc sun-java5-jdk sun-java5-jre
 sun-java5-source sun-java5-demo sun-java5-fonts
 sun-java5-plugin
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Teraz wystarczy zainstalować pakiety z powyższej listy:

aptitude install sun-java5-bin sun-java5-doc sun-java5-jdk sun-java5-jre \
                 sun-java5-source sun-java5-demo sun-java5-fonts sun-java5-plugin

Wersja minimum, potrzebna do uruchamiana programów i apletów w Javie, może zostać zainstalowana następująco:

aptitude install sun-java5-bin sun-java5-jre sun-java5-fonts sun-java5-plugin

[edytuj] Konfiguracja

W Debianie istnieje system wyboru alternatywnych implementacji poszczególnych programów, bibliotek czy innych elementów oprogramowania. W skrócie działa to tak, że dany program, np. /usr/bin/java, jest dowiązaniem symbolicznym do pliku w katalogu /etc/alternatives, np. /etc/alternatives/java. Ten ostatni z kolei jest symlinkiem do aktualnie wybranej implementacji.

Ponieważ w Debianie jest dostępna alternatywna implementacja Javy, Kaffe, może się zdarzyć, że po instalacji oryginału trzeba będzie skonfigurować system alternatyw. Robi się to za pomocą polecenie update-alternatives. Ściślej rzecz biorąc, nie jest to konieczne, można sobie ustawić ścieżki do odpowiednich katalogów itp. chociażby w skryptach startowych shella, na pewno jednak odpowiednie skonfigurowanie alternatyw jest wygodne, zwłaszcza, gdy mamy kilka kont użytkowników.

W skład Javy wchodzi m.in kilka poleceń, np.:

  • java ─ do uruchamiania programów w Javie;
  • javc ─ kompilator Javy;
  • javadoc ─ generator dokumentacji.

Niestety, nie ma możliwości przełączenia za jednym zamachem wszystkich alternatyw związanych z Javą do konkretnej implementacji. Trzeba to robić pojedynczo.

Żeby sprawdzić, jakie alternatywne elementy związane z Javą mogą wymagać konfiguracji, można poszukać w katalogu /etc/alternatives plików z nazwami zawierającymi litery "java":

ls -l /etc/alternatives/*java* | cut -d" " -f10-

W wyniku jego wykoania otrzymamy mniej więcej następującą listę:

/etc/alternatives/firefox-javaplugin.so -> /usr/lib/jvm/java-1.5.0-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so
/etc/alternatives/iceape-javaplugin.so -> /usr/lib/jvm/java-1.5.0-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so
/etc/alternatives/iceweasel-javaplugin.so -> /usr/lib/jvm/java-1.5.0-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so
/etc/alternatives/java -> /etc/alternatives/kaffe-system/bin/java
/etc/alternatives/java-rmi.cgi -> /usr/lib/jvm/java-1.5.0-sun/bin/java-rmi.cgi
/etc/alternatives/java.1.gz -> /usr/share/man/man1/java.kaffe.1.gz
/etc/alternatives/java_vm -> /usr/lib/jvm/java-1.5.0-sun/jre/bin/java_vm
/etc/alternatives/javac -> /etc/alternatives/kaffe-system/bin/javac
/etc/alternatives/javac.1.gz -> /usr/share/man/man1/javac.kaffe.1.gz
/etc/alternatives/javadoc -> /usr/bin/gjdoc
/etc/alternatives/javadoc.1.gz -> /usr/share/man/man1/gjdoc.1.gz
/etc/alternatives/javah -> /etc/alternatives/kaffe-system/bin/javah
/etc/alternatives/javah.1.gz -> /usr/share/man/man1/javah.kaffe.1.gz
/etc/alternatives/javap -> /etc/alternatives/kaffe-system/bin/javap
/etc/alternatives/javap.1.gz -> /usr/share/man/man1/javap.kaffe.1.gz
/etc/alternatives/javaws -> /usr/lib/jvm/java-1.5.0-sun/jre/bin/javaws
/etc/alternatives/javaws.1.gz -> /usr/lib/jvm/java-1.5.0-sun-1.5.0.10/jre/man/man1/javaws.1.gz
/etc/alternatives/mozilla-javaplugin.so -> /usr/lib/jvm/java-1.5.0-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so

Z powyższej listy wynika, że niektóre programy związane z Javą odwołują się do alternatywnej implementacji ─ kaffe. Przy pomocy programu update-alternatives można skonfigurować je tak, by wskazywały na oryginalną, sunowską Javę.

W tym celu najprościej użyć trybu interaktywnego polecenia update-alternatives, wywołując je z opcją --config:

update-alternatives --config java

Polecenie wypisze dostępne alternatywy, np.:

There are 5 alternatives which provide `java'.

 Selection    Alternative
-----------------------------------------------
          1    /usr/bin/java-vm
          2    /usr/bin/gij-wrapper-3.3
*+        3    /etc/alternatives/kaffe-system/bin/java
          4    /usr/bin/gij-wrapper-4.1
          5    /usr/lib/jvm/java-1.5.0-sun/jre/bin/java

i poprosi o wybór jednej z nich:

Press enter to keep the default[*], or type selection number:

W tym przypadku należy wybrać alternatywę nr 5.

W podobny sposób należy postąpić z innymi elementami: javac, javadoc, javah, javap. Strony manuala są zależne od poszczególnych programów i zostaną przełączone automatycznie podczas konfiguracji alternatywy danego programu, tak więc nie trzeba np. osobno wywoływać update-alternatives dla pliku javac.1.gz, zależnego od javac.

Po tym wszystkim, polecenia takie jak java czy javac, znajdujące się w standardowych lokalizacjach (w katalogu /usr/bin), będą pochodzić z sunowskiej Javy.