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

Linux.fista
Siirry navigaatioon Siirry hakuun
Ei muokkausyhteenvetoa
Rivi 56: Rivi 56:
Se on vaihdettava muotoon:
Se on vaihdettava muotoon:
  --slave %{_bindir}/javaws                javaws                      %{jrebindir}/javaws \
  --slave %{_bindir}/javaws                javaws                      %{jrebindir}/javaws \
Lisäksi Java-versio <tt>jdk-6u16-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 704)
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/java.security
alle seuraava rivi:
%config(noreplace) %{_jvmdir}/%{jredir}/lib/security/blacklist


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 23. elokuuta 2009 kello 12.58

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 10:lle, mutta ne toimivat mahdollisesti myös Fedora 9:llä.

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/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.11-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.11-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.11-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 16". Sivuilta valitaan alustaksi Linux ja ladataan tiedosto jdk-6*-linux-i586.bin, ei siis RPM-versiota. Artikkelia kirjoitettaessa tiedoston nimi on jdk-6u16-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.11-1jpp.nosrc.rpm ja jdk-6u16-linux-i586.bin. Artikkelia kirjoitettaessa uusin saatava nosrc.rpm-tiedosto on siis tehty JDK Update 11:ä varten ja uusin JDK-versio on Update 16, 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        11

joka on muutettava muotoon

%define buildver        16

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 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.11/jre/plugin/i386/ns7/libjavaplugin_oji.so.

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

java-1.6.0-sun-1.6.0.11-1jpp.nosrc.rpm-paketissa on virhe eikä se toimi asennettuna oikein. Asennusvaiheessa tulee virheilmoitus "linkki /usr/bin/javaws on virheellinen orjalle javaws (/usr/share/javaws javaws)". Tämän voi korjata muokkaamalla java-1.6.0-sun.spec-tiedostoa ennen rpmbuild-komennon antamista. %post-osiossa noin rivi 414 on seuraava:

--slave %{_datadir}/javaws                 javaws                      %{jrebindir}/javaws \

Se on vaihdettava muotoon:

--slave %{_bindir}/javaws                 javaws                      %{jrebindir}/javaws \

Lisäksi Java-versio jdk-6u16-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 704)

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

alle seuraava rivi:

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

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

Lähteet

Katso myös