Installera Oracles java i Linux

Oracle har gjort det svårt för linuxdistributioner att ha java i sina repositories sedan de köpte Sun. Icke desto mindre behövs i bland Oracles javaversion när openjdk inte räcker för någon specifik implementation. Jag kommer därför visa hur du kan göra för att installera Oracles java på ett sätt som underlättar framtida uppdateringar. Säkerhetsbrister i java är nämligen den attackvektor som används vid närmare 90% av alla lyckade intrång på en persondator vilket gör att det är viktigt att uppgradera varje gång Oracle släpper patchar, även när du inte installerar via en pakethanterare.

Jag kommer här gå igenom installation av 64 bitars java, om du ska köra 32 bitar på ett 64 bitars OS behöver du installera en version av glibc för i386 samt använda nspluginwrapper för att gör browserpluginet tillgängligt. Det är lite bökigare så jag kommer inte gå igenom det här, men det går att göra.

Alla kommandon nedan körs som root, tills jag säger till.

Börja med att ta bort andra installationer av java du kan ha (exempel för debianbaserade distar):

apt-get purge oracle-java*
apt-get purge openjdk*

gå till:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Godkänn oracles licensavtal och ladda ned senaste sdk:n, här nedan antar jag att du sparar filen i /tmp. Den fil jag laddade hem hette jdk-8u11-linux-x64.tar.gz, din kommer förmodligen ha en annan versionsnumrering så uppdatera kommandona nedan så att du får rätt sökvägar.

Vi kommer nu att skapa en katalogstruktur under /opt som gör de lätt för oss att uppgradera java i framtiden, därefter kommer vi symlänka till binärerna under /usr/bin/ (om du mår bättre av det kan du förstås köra /usr/local/bin/ istället) och lägga en länk till browserpluginet på rätt ställe för firefox, Google har valt att inte stödja NPAPI för Chrome sedan version 35 vilket gör att det inte kommer funka för Chrome.

mkdir /opt/java/
cd /opt/java/
mv /tmp/jdk-8u11-linux-x64.tar.gz .
tar xfv jdk-8u11-linux-x64.tar.gz
ln -s jdk1.8.0_11 latest
ln -s latest default

Av någon anledning har Oracle ägaren med uid 10 (uucp på flera distar) på sina filer, men jag byter dem alltid till root:

chown -R -h root:root *

Nu kan vi börja skapa symlänkar. Jag brukar bara använda binärerna java, javac, javadoc och javaws så vi kör dem först:

ln -s /opt/java/default/bin/java /usr/bin/
ln -s /opt/java/default/bin/javac /usr/bin/
ln -s /opt/java/default/bin/javadoc /usr/bin/
ln -s /opt/java/default/bin/javaws /usr/bin/

Om du vill kan du även köra resten av binärerna:

ln -s /opt/java/default/bin/appletviewer /usr/bin/
ln -s /opt/java/default/bin/ControlPanel /usr/bin/
ln -s /opt/java/default/bin/extcheck /usr/bin/
ln -s /opt/java/default/bin/idlj /usr/bin/
ln -s /opt/java/default/bin/jar /usr/bin/
ln -s /opt/java/default/bin/jarsigner /usr/bin/
ln -s /opt/java/default/bin/javafxpackager /usr/bin/
ln -s /opt/java/default/bin/javah /usr/bin/
ln -s /opt/java/default/bin/javap /usr/bin/
ln -s /opt/java/default/bin/java-rmi.cgi /usr/bin/
ln -s /opt/java/default/bin/jcmd /usr/bin/
ln -s /opt/java/default/bin/jconsole /usr/bin/
ln -s /opt/java/default/bin/jcontrol /usr/bin/
ln -s /opt/java/default/bin/jdb /usr/bin/
ln -s /opt/java/default/bin/jdeps /usr/bin/
ln -s /opt/java/default/bin/jhat /usr/bin/
ln -s /opt/java/default/bin/jinfo /usr/bin/
ln -s /opt/java/default/bin/jjs /usr/bin/
ln -s /opt/java/default/bin/jmap /usr/bin/
ln -s /opt/java/default/bin/jmc /usr/bin/
ln -s /opt/java/default/bin/jmc.ini /usr/bin/
ln -s /opt/java/default/bin/jps /usr/bin/
ln -s /opt/java/default/bin/jrunscript /usr/bin/
ln -s /opt/java/default/bin/jsadebugd /usr/bin/
ln -s /opt/java/default/bin/jstack /usr/bin/
ln -s /opt/java/default/bin/jstat /usr/bin/
ln -s /opt/java/default/bin/jstatd /usr/bin/
ln -s /opt/java/default/bin/jvisualvm /usr/bin/
ln -s /opt/java/default/bin/keytool /usr/bin/
ln -s /opt/java/default/bin/native2ascii /usr/bin/
ln -s /opt/java/default/bin/orbd /usr/bin/
ln -s /opt/java/default/bin/pack200 /usr/bin/
ln -s /opt/java/default/bin/policytool /usr/bin/
ln -s /opt/java/default/bin/rmic /usr/bin/
ln -s /opt/java/default/bin/rmid /usr/bin/
ln -s /opt/java/default/bin/rmiregistry /usr/bin/
ln -s /opt/java/default/bin/schemagen /usr/bin/
ln -s /opt/java/default/bin/serialver /usr/bin/
ln -s /opt/java/default/bin/servertool /usr/bin/
ln -s /opt/java/default/bin/tnameserv /usr/bin/
ln -s /opt/java/default/bin/unpack200 /usr/bin/
ln -s /opt/java/default/bin/wsgen /usr/bin/
ln -s /opt/java/default/bin/wsimport /usr/bin/
ln -s /opt/java/default/bin/xjc /usr/bin/

För att få browserpluginet att funka kör vi nu:

ln -s /opt/java/default/jre/lib/amd64/libnpjp2.so /usr/lib/mozilla/plugins/

Om du behöver kan du nu också sätta JAVA_HOME i din .bash_rc, kör detta som din egen användare (inte root)

echo "JAVA_HOME=/opt/java/default
export JAVA_HOME" >> ~/.bash_rc

Nästa gång du behöver uppgradera java laddar du bara hem en ny version från oracle och packar upp den i /opt/java och pekar om symlänken /opt/java/latest från /opt/java/jdk1.8.0_11 till din nya katalog och du är klar.

Leave a comment





*