Banner   

Topics:  Fotografi    Rejseliv    Lidt af hvert    Teknikhjørnet    Scrapbogen    Pulterkammeret    Site Map    


Indhold:

-Overordnede-
IT

-Sideordnede-
Ubuntu 14.04.1
Java Blues
Kryptering
CPU sikkerhed
Om denne site

Java problemer -

og hvordan jeg fik dem løst.

Juli 2013: Nedenstående virker faktisk stadig

Men Java versionsnummeret er kommet op på build 1.7.0_25-b15

Java problemer - opdatering august 2012

Der har på et seneste været megen snak om Oracle Java, hvori der for nylig blev opdaget en eller flere alvorlige sikkerhedsproblemer. Derfor har anbefalingen fra diverse 'eksperter' gået på helt at afinstallere Java. Nu er problemet jo blot det, at vi her i landet er totalt afhængig af en 100% kompatibel Java (minimum JRE = Java Run Time Environment) for at kunne benytte NemID.

Brugere af Firefox browseren har derfor på det seneste fået et skilt på skærmen med en voldsom advarsel om død og ødelæggelse ved brug af Java, som derfor ville blive blokeret i Firefox. Hvis man kikkede godt efter var det dog muligt fortsat at bruge den 'farlige' Java plugin; men så var det for egen regning og risiko.

Det valgte jeg så at gøre, da jeg samtidig bruger Privoxy (web proxy) og NoScript. Her kan man blokere totalt for bl.a. Java og Javascript undtagen for de sites, man har på sin whitelist. Uden disse hjælpemidler ville jeg næppe ha' gjort det.

Nu ser det dog ud til at Oracle har givet efter for presset og er kommet med en opdatering (Java 7 update 7) som forhåbentlig lukker hullet (eller hullerne).

Hvad gør man så som Ubuntu 10.04 LTS bruger?

Der findes nogle venlige mennesker (jo - de findes faktisk) som har oprette et PPA (= Personal Package Archive) på nettet med Oracle Java. Det betyder, at man kan tilføje dette PPA arkiv til sin liste af repositories i Ubuntus opdaterings system.

Det indebærer dels, at en Java opdatering er enkel; men også at fremtidige opdateringer vil foregå akkurat som andre opdateringer med systemets Update Manager. Derved bliver manuelle opdateringer ikke længere nødvendige.

For at komme hertil åbnes et konsolvindue med en kommandolinieprompt, og følgende kommandoer indtastes (eller klippes og klistres fra "Web Upd8" hjemmeside:

 sudo add-apt-repository ppa:webupd8team/java
 sudo apt-get update
 sudo apt-get install oracle-java7-installer

Om den nye version er blevet installeret, kan checkes med

 java -version

Der bør så komme et svar noget lignende dette:

 java version "1.7.0_07"
 Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
 Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

Det gjorde der i mit tilfælde ikke, hvorfor det yderligere var nødvendigt med følgende kommando:

 sudo update-java-alternatives -s java-7-oracle

Først herefter fik jeg ovenstående svar på 'java -version' kommandoen.

Et check i browseren (about:plugins i adresselinien) viste, at Java 7u7 også var feset ind her.


Tidligere artikel:

Versioner

Denne artikel gælder for nedenstående software versioner.

Linux:

Ubuntu "Ubuntu 10.04 LTS - the Lucid Lynx" - released in April 2010 and supported until April 2013.

Java:

java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)

Browser:

Mozilla Firefox for Ubuntu 11.0

Baggrund

Som udgangspunkt vil jeg selv bestemme, hvilke programmer m.v. der skal afvikles på mine PC'ere og har derfor slået både Java og Java script fra, når jeg surfer på nettet. Det kan man relativt let ved at bruge en NoScript plugin i Firefox. Denne plugin gør det muligt at styre Java og Java script baseret på det domæne, man til enhver tid befinder sig i. På denne måde skal man ikke huske (med mulighed for at glemme) at slå det til og fra selv. Der er langt flere muligheder end blot dette; men det er det væsentlige. Jeg bruger desuden en Privoxy web-proxy; men det er en anden historie.

Nu er det jo sådan i lille Dannevang, at man faktisk er tvunget til at have Java installeret, da NemID kræver dette. Java bliver ofte beskyldt for at udgøre en sikkerhedsrisiko, og det er ikke mindst derfor, at jeg kun vil bruge det på steder, hvor det er absolut nødvendigt, og hvor jeg skønner at risikoen for ulykker er lav.

Men som sagt - NemID og netbank gør, at Java er "mission critical". Det er en nødvendighed og det skal virke.

Mange Java versioner (for mange?)

Nu findes der adskillige varianter af Java, både run-time (JRE) versioner, og udviklingskit (JDK) udgaver. JRE udgaven gør det muligt at afvikle Java programmer på maskinen; men ikke selv at udvikle og teste programmer. Hertil kræves JDK udgaven. Denne sidste er et superset af JRE versionen, så vidt jeg ved.

Men det er ikke det værste - der findes også Oracle (tidligere Sun Microsystems) Java 6 & 7, OpenJDK, IBM versioner og udgaver til Windows. Og som om det ikke var nok, så findes der flere download formater til Linux systemer, dels de der benytter RPM (Redhat Package Management) eller andre distros, der (som Ubuntu/Debian) benytter 'apt' eller andet. Til disse kan man downloade et selvudpakkende '.gz' arkiv.

Herligt med standarder - især nær der er rigtig mange af dem!

Selv om disse Java versioner har deres rod i Oracle's Java, så må der alligevel være forskel på dem. Tilsyneladende forskelle, der kan bevirke svigtende kompatibilitet mellem dem.

Ubuntu anbefaler OpenJava, som er en open source udgave, og med min indstilling lyder det jo vældig rart; men i forbindelse med de - efter min mening lidt for hyppige - opdateringer af Firefox, så kom jeg ud for, at Java ikke virkede, og at browseren simpelthed gik ned - bang! uden fejlmeddelelser af nogen art. Dette skete ved forsøg på at bruge NemID. Det var så muligt ved visse versioner at ændre browser parametren 'dom.ipc.plugins.java.enabled' fra 'false' til 'true'. Det gør man i det browserbillede der fås, når man skriver 'about:config' i browserens adressefelt.

Men min erfaring var, at det ikke var ganske pålideligt, og at NemID login boksen ikke altid ville vise sig - selv om browseren ikke længere bare døde. Det skete også af og til, at browseren efterlod en zombie process, som forhindrede, at den kunne genstartes. Det var i så fald nødvendigt manuelt at slå denne zombie ihjel med 'kill process'.

Endelig så havde jeg problemer med Statens Arkiver (arkivalieronline.dk) som kræver Java for at kunne se f.eks. gamle kirkebøger o.l., hvis man får trang til lidt slægsforskning og den slags. Her blev Java appletten tilsyneladende downloadet; men aldrig startet. Og så var nytteværdien ligesom til at overse.

Ved hjælp af 'Ubuntu Software Center' (en slags AppStore for Ubuntu) har jeg for ganske længe siden installeret Sun's Java 6 system. Det krævede, at man selv skulle tilføje Sun's Java arkiv; men det gjorde jeg så dengang. Desværre så det ud til, at hverken Ubuntu eller Oracle opdaterede dette repository. Dermed blev de påståede sikkerhedhuller ikke lukket - eller først med megen forsinkelse.

Kamelslugning

Så på grund af alt dette besluttede jeg for ikke så længe siden at sluge en Java kamel og installere Oracles seneste opus - selv om denne udgave ikke er open source og ledsages af flere sider juridisk pladder, som man altså må acceptere. Jeg fandt så en god og fyldig beskrivelse på nettet om, hvordan man går til værks. Det er denne opskrift jeg i tilpasset form gennemgår her.


Oprydning

Proceduren gennemføres i et terminalvindue fra en kommandolinie, som skal betjenes med administrator eller 'root' rettigheder (evt. med brug af 'sudo' prefix).

Da jeg som sagt havde OpenJava installeret, fjernede jeg for en sikkerheds skyld dette først:

	apt-get autoremove openjdk-6-jre

Evt. også:

	apt-get autoremove openjdk-6-jdk

Nyinstallation

Et nyt java direktorie oprettes med:

	mkdir -p /usr/local/java

Herefter downloades et selvudpakkende .gz arkiv fra ' http://www.oracle.com/technetwork/java/javase/downloads/index.html'.

Den fil, der skal bruges, er 'jre-7-linux-x64.tar.gz' og / eller 'jdk-7-linux-x64.tar.gz'. Den sidste, hvis man selv vil lave programmer, idet den indeholder 'javac' (Java compileren). Der findes også filer til 32-bit systemer; men disse skal jeg ikke bruge her.

Hvis filerne ikke downloades direkte til det nye java direktorie, så kan de kopieres derhen med:

	cp -r jre-7-linux-x64.tar.gz /usr/local/java

eller

	cp -r jdk-7-linux-x64.tar.gz /usr/local/java

idet det forudsættes, at 'current directory' (pwd) før kopieringen, er det direktorie, hvortil filerne er downloadet.

Da disse filer er selvudpakkende, skal de kunne eksekveres som programmer. Derfor skal de gøres eksekverbare med:

	chmod a+x jre-7-linux-x64.tar.gz

eller

	chmod a+x jdk-7-linux-x64.tar.gz

Man kan nu pakke arkivet (arkiverne) ud med kommandoen:

	tar xvzf jre-7-linux-x64.tar.gz

eller

	tar xvzf jdk-7-linux-x64.tar.gz

Parametrene til 'tar' kommandoen angiver, at arkivet skal udpakkes, at filerne skal listes på skærmen under udpakningen, at arkivet skal gennem 'unzip' før den egentlige udpakning og at den næste tekst i kommandoen er navnet på arkivfilen.

Dette skal resultere i, at der nu findes 1 eller 2 sub-direktorier i '/usr/local/java/', nemlig:

jre1.7.0_03
og evt.
jdk1.7.0_03

Herefter skal filen '/etc/profile' rettes til, så environment variablen PATH kommer til også at omfatte java værktøjerne. Har man installeret både 'jre' og 'jdk' filerne, så skal følgende tilføjes til '/etc/profile':

	JAVA_HOME=/usr/local/java/jdk1.7.0_03
	PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
	JAVA_HOME=/usr/local/java/jre1.7.0_03
	PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
	export JAVA_HOME
	export PATH

Hvis kun jre (run time) er påkrævet, skal de to første linjer ovenfor ikke med.

Til at redigere '/etc/profile' kan man benytte sin favorit editor. Selv foretrækker jeg Emacs, hvor følgende kommando kan bruges:

	emacs -nw /etc/profile

Parametrene '-nw' står for 'no window'. På denne måde åbnes editoren direkte i konsol vinduet, hvor man jo på forhånd har logget ind med administrator eller root rettigheder. Så slipper man for at skifte til en ny session for foretage rettelserne.

Man kan selvfølgelig bruge den editor, man er fortrolig med - den slags er jo nærmest et religiøst spørgsmål.

Vi skal nu fortælle systemet, hvilken java, er skal bruges. Det kan gøres med:

	update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jre1.7.0_03/bin/java" 1

og/eller

	update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.7.0_03/bin/java" 1

Desuden vil vi gerne have, at denne java version skal være default:

	update-alternatives --set java /usr/local/java/jre1.7.0_03/bin/java

og evt.

	update-alternatives --set javac /usr/local/java/jdk1.7.0_03/bin/javac

For nu at få opdateret vores system-PATH, skal 'profile' filen udføres på ny med:

	. /etc/profile

Bemærk blanktegn efter den første 'dot'. Når systemet genstartes, sker opsætning af denne PATH automatisk.

Et check af, at installationen er gået godt kan gøres med:

	java -version

Dette bør resultere i følgende response:

	java version "1.7.0_03"
	Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
	Java HotSpot(TM) 64-Bit Server VM (build22.1-b02, mixed mode)

Hvis man tillige har JDK installeret:

	javac -version

som skal gi':

	javac 1.7.0_03

Java Script plugin til Firefox

Firefox læser sine plugins fra dette direktorie:

/usr/lib/mozilla/plugins/

Her findes en fil - det vil sige, det er i virkeligheden et symbolsk link (henvisning) til den egentlige fil; men set fra Firefox's synspunkt, så virker det ganske som om pluginfilen virkelig lå i dette dir. Vær opmærksom på, at det ikke duer at kopiere den faktiske fil hertil!

Vi skal nu have dette link til at pege på vores nye plugin fil.

Med kommandoen:

	ls -l /usr/lib/mozilla/plugins/

kan det chekkes, om der findes et link til den gamle plugin. Hvis ja, vil der være en linje, der f.eks. kan se således ud:

	lrwxrwxrwx 1 root root  49 2010-05-17 19:07 libnpt.so -> /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libnpt.so

I så fald kan den slettes med (husk administrator rettigheder stadigvæk):

	rm libnpt.so

Så skal et nyt link laves:

	ln -s /usr/local/java/jre1.7.0_03/lib/amd64/libnpjp2.so

Denne kommando vil lave et link med navnet 'libnpjp2.so', som refererer til den tilsvarende fil i vores nye java system i '/usr/local/java...'.

Åbner man nu Firefox og indtaster adressen 'about:plugins', så bør der nu være en sektion med overskriften 'Java(TM) Plug-in 1.7.0_03' plus en lang liste af enkelte komponenter heri.

For en ordens skyld bør man måske også gå ind på adressen 'about:config' og sætte parametren 'dom.ipc.plugins.java.enabled' til 'false' (default) igen.

Sådan - let og elefant!

Efter denne operation er det min erfaring, at diverse Java problemer forsvandt - indtil videre i det mindste...

April 2012.

'De Lyse Sider' senest opdateret: Wed Oct 4 11:44:23 2017