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

Linux.fista
Siirry navigaatioon Siirry hakuun
Ei muokkausyhteenvetoa
Ei muokkausyhteenvetoa
Rivi 21: Rivi 21:
   rpm -i http://mirrors.dotsrc.org/jpackage/5.0/generic/non-free/SRPMS/java-1.6.0-sun-1.6.0.14-1jpp.nosrc.rpm
   rpm -i http://mirrors.dotsrc.org/jpackage/5.0/generic/non-free/SRPMS/java-1.6.0-sun-1.6.0.14-1jpp.nosrc.rpm


Tässä vaiheessa on ladattava uusin Java Development Kit [http://java.sun.com/javase/downloads Sunin lataussivuilta]. Tätä kirjoitettaessa se on "Java SE Development Kit (JDK) 6 Update 16". Sivuilta valitaan alustaksi Linux ja ladataan tiedosto <tt>jdk-6*-linux-i586.bin</tt>, '''ei siis RPM-versiota'''. Artikkelia kirjoitettaessa tiedoston nimi on <tt>jdk-6u16-linux-i586.bin</tt>. Tiedosto ladataan hakemistoon <tt>~/rpmbuild/SOURCES</tt>.
Tässä vaiheessa on ladattava uusin Java Development Kit [http://java.sun.com/javase/downloads Sunin lataussivuilta]. Tätä kirjoitettaessa se on "Java SE Development Kit (JDK) 6 Update 16". Sivuilta valitaan alustaksi Linux ja ladataan tiedosto <tt>jdk-6*-linux-i586.bin</tt>, '''ei siis RPM-versiota'''. Artikkelia kirjoitettaessa tiedoston nimi on <tt>jdk-6u17-linux-i586.bin</tt>. Tiedosto ladataan hakemistoon <tt>~/rpmbuild/SOURCES</tt>.


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-6u'''16'''-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ä.
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-6u'''17'''-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:
Siirrytään RPM-kääntöpuun SPEC-tiedostot sisältävään hakemistoon:
  cd ~/rpmbuild/SPECS
  cd ~/rpmbuild/SPECS
Nyt on muokattava jollakin tekstieditorilla tiedostoa <tt>java-1.6.0-sun.spec</tt> siten, että siellä oleva buildver-määritys muutetaan vastaamaan ladatun bin-tiedoston u- eli update-lukua. Artikkelia kirjoitettaessa spec-tiedostossa on
Nyt on muokattava jollakin tekstieditorilla tiedostoa <tt>java-1.6.0-sun.spec</tt> siten, että siellä oleva buildver-määritys muutetaan vastaamaan ladatun bin-tiedoston u- eli update-lukua. Artikkelia kirjoitettaessa spec-tiedostossa on
  %define buildver        11
  %define buildver        14
joka on muutettava muotoon
joka on muutettava muotoon
  %define buildver        16
  %define buildver        17


Seuraavat komennot on taas annettava tiedostojen versioista huolimatta.
Seuraavat komennot on taas annettava tiedostojen versioista huolimatta.

Versio 22. joulukuuta 2009 kello 23.56

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.

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 http://mirrors.dotsrc.org/jpackage/5.0/generic/non-free/SRPMS/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 16". 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:

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.16-1jpp.i586.rpm java-1.6.0-sun-alsa-1.6.0.16-1jpp.i586.rpm java-1.6.0-sun-demo-1.6.0.16-1jpp.i586.rpm java-1.6.0-sun-devel-1.6.0.16-1jpp.i586.rpm java-1.6.0-sun-plugin-1.6.0.16-1jpp.i586.rpm java-1.6.0-sun-src-1.6.0.16-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.16/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.16/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.

Nosrc-paketin lataaminen JPackage 5 -pakettivarastosta

Osoitteesta http://mirrors.dotsrc.org/jpackage/5.0/generic/non-free/SRPMS/ voi saada hieman uudemman nosrc-paketin. (Ohjeen voisi ehkä siirtää käyttämään tuota pakettia.)

Lähteet

Katso myös