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

Linux.fista
Siirry navigaatioon Siirry hakuun
Rivi 59: Rivi 59:
Java-versio <tt>jdk-6u17-linux-i586.bin</tt> asentaa tiedoston, jota ei ole lueteltu <tt>java-1.6.0-sun.spec</tt>-määrittelytiedostossa. Sitä varten <tt>java-1.6.0-sun.spec</tt>-tiedoston <tt>%files -f %{name}-%{version}.files</tt>-osioon on lisättävä rivin (noin rivi 709)
Java-versio <tt>jdk-6u17-linux-i586.bin</tt> asentaa tiedoston, jota ei ole lueteltu <tt>java-1.6.0-sun.spec</tt>-määrittelytiedostossa. Sitä varten <tt>java-1.6.0-sun.spec</tt>-tiedoston <tt>%files -f %{name}-%{version}.files</tt>-osioon on lisättävä rivin (noin rivi 709)
  %config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.security
  %config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.security
alle seuraava rivi:
alle seuraavat rivit:
  %config(noreplace) %{_jvmdir}/%{jredir}/lib/security/blacklist
  %config(noreplace) %{_jvmdir}/%{jredir}/lib/security/blacklist
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/trusted.libraries


Tämän jälkeen voidaan taas seurata yllä annettuja ohjeita normaalisti.
Tämän jälkeen voidaan taas seurata yllä annettuja ohjeita normaalisti.

Versio 22. kesäkuuta 2010 kello 20.01

Tämä ohje on alustava ja 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ä.

Fedorassa versiosta 10 eteenpäin 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 aiemmin ollut Sammon verkkopankki. Fedora 11:n OpenJDK-versiolla sekin toimii ainakin kirjautumisruutuun asti.

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.

Nämä ohjeet on tehty Fedora 12:lle, mutta ne toimivat mahdollisesti myös aiemmilla versioilla.

Pakettien kääntö- ja asennusohjeet

Asennetaan tarvittavia ohjelmia:

su -c "yum install jpackage-utils rpm-build rpmdevtools wget system-switch-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/5.0/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.14-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/5.0/generic/non-free/SRPMS/java-1.6.0-sun-1.6.0.14-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.14-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 17". Sivuilta valitaan alustaksi Linux ja ladataan tiedosto jdk-6*-linux-i586.bin, ei siis RPM-versiota. Artikkelia kirjoitettaessa tiedoston nimi on jdk-6u17-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.14-1jpp.nosrc.rpm ja jdk-6u17-linux-i586.bin. Artikkelia kirjoitettaessa uusin saatava nosrc.rpm-tiedosto on siis tehty JDK Update 14:ää varten ja uusin JDK-versio on Update 17, 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        14

joka on muutettava muotoon

%define buildver        17

Seuraavat komennot on taas annettava tiedostojen versioista huolimatta.

Tehdään RPM-paketit:

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 uudehkoihin Fedora-versioihin 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.17-1jpp.i586.rpm java-1.6.0-sun-alsa-1.6.0.17-1jpp.i586.rpm java-1.6.0-sun-demo-1.6.0.17-1jpp.i586.rpm java-1.6.0-sun-devel-1.6.0.17-1jpp.i586.rpm java-1.6.0-sun-plugin-1.6.0.17-1jpp.i586.rpm java-1.6.0-sun-src-1.6.0.17-1jpp.i586.rpm"

Pakettien päivittäminen tehdään korvaamalla yllä olevassa komennossa localinstall sanalla localupdate.

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ä.

Jos Sunin Java-paketteja ollaan päivittämässä, on ensin poistettava vanha Java-liitännäinen alternatives-järjestelmästä. Jos poistettava versio on 1.6.0.16 ja uusi versio esimerkiksi 1.6.0.17, poistetaan vanha versio näin:

su -c "alternatives --remove libjavaplugin.so /usr/lib/jvm/java-1.6.0-sun-1.6.0.16/jre/plugin/i386/ns7/libjavaplugin_oji.so"

Seuraava vaihe on tehtävä joka tapauksessa, myös uusia paketteja asennettaessa. 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.17/jre/plugin/i386/ns7/libjavaplugin_oji.so 20000"

Sitten varmistetaan, että Sunin Java-liitännäinen on käytössä, näin ei välttämättä ole, jos esimerkiksi paketti java-1.6.0-openjdk-plugin 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.17/jre/plugin/i386/ns7/libjavaplugin_oji.so.

java-1.6.0-sun-1.6.0.14-1jpp.nosrc.rpm-paketin vaatimat muutokset

Java-versio jdk-6u17-linux-i586.bin asentaa tiedoston, jota ei ole lueteltu java-1.6.0-sun.spec-määrittelytiedostossa. Sitä varten java-1.6.0-sun.spec-tiedoston %files -f %{name}-%{version}.files-osioon on lisättävä rivin (noin rivi 709)

%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.security

alle seuraavat rivit:

%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/blacklist
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/trusted.libraries

Tämän jälkeen voidaan taas seurata yllä annettuja ohjeita normaalisti.

Lähteet

Katso myös