Ero sivun ”Sunin Java Fedorassa” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
(Ensimmäinen versio)
(ei mitään eroa)

Versio 5. tammikuuta 2009 kello 00.01

Tämä ohje on alustava ja jos sen noudattamisesta saattaa seurata jotakin ongelmia. On suositeltavaa, että ohjetta seuraavalla käyttäjällä olisi jo ennestään perustiedot RPM-pakettien kääntämisestä.

Fedora 10:ssä on oletuksena saatavilla avoimen lähdekoodin OpenJDK-Java-toteutus paketteina java-1.6.0-openjdk, java-1.6.0-openjdk-devel ja java-1.6.0-openjdk-plugin. Sen asennus on suositeltavaa ja useimmat Java-ohjelmat toimivat sillä hyvin. Jotkin Java-ohjelmat ja appletit saattavat kuitenkin vaatia niin sanotun virallisen Sunin suljetun lähdekoodin Java-toteutuksen. Merkittävä tällainen esimerkki Suomessa on Sampo-pankin verkkopankki.

Sunin Java-toteutusta ei saa levittää vapaasti, joten esimerkiksi Fedoran kolmannen osapuolen ohjelmalähteet eivät voi jakaa valmiita paketteja siitä. Sunin itse verkkosivuillaan jakamat RPM-paketit eivät taas integroidu Fedoraan parhaalla mahdollisella tavalla. JPackage-projekti tarjoaa sivuillaan valmiita "koodittomia" (nosrc) SRPM-paketteja, joista saa yhdessä Sunin Java-binäärien kanssa käännettyä Fedoraan sopivat RPM-paketit Sunin Javasta. Tässä menetelmässä siis tavallaan yhdistetään JPackagen paketointiskriptit Sunilta ladattuun Java-koodiin.

Asennetaan tarvittavia ohjelmia:

su -c yum install jpackage-utils rpm-build rpmdevtools wget system-config-java

Asetetaan RPM-kääntöpuu omaan kotihakemistoon:

rpmdev-setuptree

Sitten on haettava JPackage-ohjelmalähteestä sopiva Java-SRPM. Sen saa osoitteesta http://mirrors.dotsrc.org/jpackage/1.7/generic/non-free/SRPMS/ mistä ladataan tiedosto java-1.6.0-sun-*.nosrc.rpm. Artikkelin kirjoitushetkellä sopiva tiedosto on java-1.6.0-sun-1.6.0.10-1jpp.nosrc.rpm.

Siirrytään RPM-kääntöpuun SRPMS-hakemistoon:

cd ~/rpmbuild/SRPMS

Ladataan SRPM (tässä on muistettava korvata tiedostonimi uusimmalla saatavalla versiolla):

wget http://mirrors.dotsrc.org/jpackage/1.7/generic/non-free/SRPMS/java-1.6.0-sun-1.6.0.10-1jpp.nosrc.rpm

Asennetaan ladattu tiedosto RPM:llä tässä on muistettava korvata tiedostonimi ladatun tiedoston nimellä):

 rpm -i java-1.6.0-sun-1.6.0.10-1jpp.nosrc.rpm

Tässä vaiheessa on ladattava uusin Java Development Kit Sunin lataussivuilta. Tätä kirjoitettaessa se on "Java SE Development Kit (JDK) 6 Update 11". Sivuilta valitaan alustaksi Linux ja ladataan tiedosto jdk-6*-linux-i586.bin, ei siis RPM-versiota. Artikkelia kirjoitettaessa tiedoston nimi on jdk-6u11-linux-i586.bin. Tiedosto ladataan hakemistoon ~/rpmbuild/SOURCES.

Nyt on verrattava ladatun nosrc.rpm-tiedoston ja bin-tiedoston versioita. Korostettuna tässä ovat merkitsevät osat: java-1.6.0-sun-1.6.0.10-1jpp.nosrc.rpm ja jdk-6u11-linux-i586.bin. Artikkelia kirjoitettaessa uusin saatava nosrc.rpm-tiedosto on siis tehty JDK Update 10:ä varten ja uusin JDK-versio on Update 11, tässä on ristiriita, joka on korjattava. Jos merkityt numerot ovat molemmissa tiedostoissa samat, seuraavaa osuutta ei tarvitse tehdä.

Siirrytään RPM-kääntöpuun SPEC-tiedostot sisältävään hakemistoon:

cd ~/rpmbuild/SPECS

Nyt on muokattava jollakin tekstieditorilla tiedostoa java-1.6.0-sun.spec siten, että siellä oleva buildver-määritys muutetaan vastaamaan ladatun bin-tiedoston u- eli update-lukua. Artikkelia kirjoitettaessa spec-tiedostossa on

%define buildver        10

joka on muutettava muotoon

%define buildver        11

Seuraavat komennot on taas annettava tiedostojen versioista huolimatta.

Tehdään RPM-paketit:

setarch i586 rpmbuild -bb java-1.6.0-sun.spec

Jos pakettien tekeminen onnistuu, siirrytään valmiit paketit sisältävään hakemistoon:

cd ~/rpmbuild/RPMS/i586

Nyt on vuorossa pakettien asentaminen järjestelmään. RPM-paketteja on useita, joista java-1.6.0-sun-jdbc ja java-1.6.0-sun-fonts eivät asennu Fedora 10:een riippuvuusongelmien vuoksi. Asennetaan kaikki muut paketit. Tässä on käytetty artikkelin kirjoittamisen aikaan tehtyjä versioita, tarkat tiedostonimet voivat olla erilaisia:

su -c "yum --nogpgcheck localinstall java-1.6.0-sun-1.6.0.11-1jpp.i586.rpm java-1.6.0-sun-alsa-1.6.0.11-1jpp.i586.rpm java-1.6.0-sun-demo-1.6.0.11-1jpp.i586.rpm java-1.6.0-sun-devel-1.6.0.11-1jpp.i586.rpm java-1.6.0-sun-plugin-1.6.0.11-1jpp.i586.rpm java-1.6.0-sun-src-1.6.0.11-1jpp.i586.rpm"

Jos asennus onnistuu, suoritetaan ohjelma system-switch-java, josta valitaan "Sun 1.6.0" käytettäväksi Java-toteutukseksi. Nyt Sunin Java-toteutus on muuten käytössä, mutta Firefoxin Java-liitännäinen ei vielä ole. Koska Java-toteutuksen valinta perustuu Fedorassa muutenkin alternatives-järjestelmään, asetetaan myös Java-liitännäinen valittavaksi alternativesillä.

Lisätään javaplugin.so alternativesin hallintaan:

su -c "alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so libjavaplugin.so /usr/lib/jvm/java-1.6.0-sun-1.6.0.11/jre/plugin/i386/ns7/libjavaplugin_oji.so 20000"

Sitten varmistetaan, että Sunin Java-liitännäinen on käytössä, näin ei siltikään välttämättä ole, jos esimerkiksi paketti java-1.6.0-openjdk-plugin-1.6.0.0-7.b12.fc10.i386.rpm on ollut asennettuna ennen Sunin Java-toteutuksen asentamista. Annetaan komento

su -c "alternatives --config libjavaplugin.so"

ja valitaan ohjeiden mukaan luettelosta Sunin Java-liitännäinen, joka artikkelin kirjoittamisen aikaan on /usr/lib/jvm/java-1.6.0-sun-1.6.0.11/jre/plugin/i386/ns7/libjavaplugin_oji.so.