Wie ich kürzlich erfahren habe, soll Java 7 im Gegensatz zu Java 6 weniger Arbeitsspeicher verbrauchen. Besonders beim Betreiben eines Minecraft-Servers ist man doch stets darauf bedacht die Performance so hoch – jedoch den Speicherverbrauch so niedrig wie möglich zu halten. Im Folgenden möchte ich kurz zeigen, wie man unter Debian auf Java 7 “updatet”. Dies ist allerdings mit bisschen manuellem Werkeln verbunden – wer sich Arbeit sparen möchte, installiert einfach die Java 6 Pakete von Sun/Oracle oder OpenJDK via apt-get install. Alle anderen sprren jetzt die Augen auf und öffnen ihre Konsole! :D

Der erste Schritt sieht so aus, dass wir uns die aktuellste Version von Java 7 herunterladen. Zum heutigen Zeitpunkt ist die höchste Java 7 Version die, die mit dem Zusatz “Update 3” versehen ist. Je nachdem wann das Howto studiert wird, kann sich dieser Part ändern. Allgemein ist es sinnvoll einfach immer die aktuellste Version zu verwenden und (weil sich Bezeichnungen und Dateinamen auch ändern) das Howto nicht nur mit Augen und Fingern durchzuführen, sondern auch ein bisschen das Hirn arbeiten zu lassen – Copy&Paste kann jeder – mitdenken ist schon komplizierter.

Schritt 1: Download, Entpackungsvorgang & Verschieben

Beim Download unter der Java 7 Seite von Oracle ist darauf zu achten, dass wir uns für den normalen Betrieb nur das JRE, also das “Java Runtime Environment” (zu deutsch: Java Laufzeitumgebung) herunterladen, nicht jedoch das JDK “Java Development Kit” (zu deutsch: Java Entwicklungs Ausrüstung). Im Falle von Debian laden wir uns also Java 7 in der aktuellsten Version und als JRE herunter.

Nach einem Klick auf den entsprechenden, nicht zu verfehlenden Button muss man noch die Lizenzvereinbarung bestätigen und die Version auswählen. Mit einem RPM können wir unter Debian nich tviel anfangen, weshalb wir uns das normale tar-gz-Archiv herunterladen. Nun kommt ein kleiner Trick zum Einsatz. Theoretisch müssten wir unsere Datei erst auf den lokalen Rechner (im Browser) herunterladen und dann auf den Server ziehen, da Oracle so nett war und es uns nicht möglich macht das Archiv über einen Direktlink via wget herunter zu laden.

Der Trick besteht nun darin, an einen Direktlink zu kommen, obwohl dieser offiziell nicht verfügbar ist.

Dazu einfach den Download auf den lokalen PC starten und gleich wieder abbrechen. Im Firefox genügt dann im Download-Fenster ein Rechtsklick auf den Download und ein Linksklick auf “Copy Download Link” – nun ist der Direktlink in eurer Zwischenablage befindlich und kann in der Konsole eingefügt werden.

WICHTIG: Bei manchen passiert es, dass auch diese Methode nicht funktioniert. Dann ist dazu angeraten, das Paket manuell auf den eigenen Rechner zu ziehen und die entpackten (unter Windows kan 7zip verwendet werden) Daten manuell hochladen.

Mittels wget wird nun gedownloadet:

wget http://download.oracle.com/otn-pub/java/jdk/7u3-b04/jre-7u3-linux-x64.tar.gz?AuthParam=13374223666_1dalold81e900xdc15

Nach dem Download, welcher wegen den knappen 30 MB recht schnell gehen sollte, haben wir jedoch ein weiteres Problem: Die Dateiendung stimmt nicht. Das beheben wir durch simples umbenennen:

mv jre-7u3-linux-x64.tar.gz?AuthParam=13374223666_1dalold81e900xdc15 jre-7u3-linux-x64.tar.gz

Anschließend lässt sich das Paket entpacken:

tar -xf jre-7u3-linux-x64.tar.gz

Nach diesem Vorgang finden wir ein neues Verzeichnis mit dem Namen:

jre1.7.0_03

Um nun eine gewisste Grundordnung beizubehalten wird der komplette Verzeichnis in /usr/lib64/jvm/ verschoben:

mv jre1.7.0_03 /usr/lib64/jvm/

Schritt 1 abgeschlossen. Jetzt wirds, was das abarbeiten angeht, dynamischer.

————————

Schritt 2: Befehl “java” neue Java-Version zuweisen (plus weiterführende Informationen)

In Schritt 2 müssen wir unserem System sagen, dass es anstatt von Java 6, für den Befehl “java”, Java 7 verwendet. Dies geschieht mit dem praktischen “update-alternatives”-Befehl.

Um Rechnerchen zu sagen, dass wir eine neue Java-Version in den Ordner verschoben haben geben wir ein:

update-alternatives --install /usr/bin/java java /usr/lib64/jvm/jre1.7.0_03/bin/java 1065
Nun dürfte der Rechner Wind davon bekommen haben, dass da eine neue Version ist.
Mittels folgendem Befehl/Programm können wir all unsere Versionen von java checken und ggf. auch ändern:
update-alternatives --config java
Die Ausgabe des Befehls sieht bei mir folgendermaßen aus:
Es gibt 3 Auswahlmöglichkeiten für die Alternative java (welche /usr/bin/java bereitstellen).
Auswahl      Pfad                                      Priorität Status
 ------------------------------------------------------------
 * 0            /usr/lib64/jvm/jre1.7.0_03/bin/java          1065      Auto-Modus
 1            /usr/lib64/jvm/java-6-openjdk/jre/bin/java   1061      manueller Modus
 2            /usr/lib64/jvm/java-6-sun/jre/bin/java       63        manueller Modus
 3            /usr/lib64/jvm/jre1.7.0_03/bin/java          1065      manueller Modus
Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
 oder geben Sie die Auswahlnummer ein:
Eine weitere Möglichkeit, zu überprüfen welche Version wir nutzen:
java -showversion
Als  ich nach diesen Schritten den Minecraft-Server startete, war dieser in Bezug auf den Speicherverbrauch sehr viel sparsamer. Top.

21 thoughts on “Java 7 unter Debian (Squeeze) installieren

  1. Danke meiner!
    Aber hier, jetzt will mich der MC Server nicht mehr rein lassen…

    Andere Baustelle.

  2. Naja,
    der wget download geht nicht, deswegen habe ich die neu Version genommen. Dann heisst die Datei “jre-7u5-linux-x64”. Dann möchte ich diese entpacken, geht auch nicht, ist angeblich kein Zip oder so. Also lade ich es per Windows und lade es mit WinSCP entpackt hoch. Das dauert etwas. Dann ändere ich den Befehl in “update-alternatives –install /usr/bin/java java /usr/lib64/jvm/jre-7u5/java 1065”. Da sagt er mir aber “update-alternatives: error: alternative path /usr/lib64/jvm/jre-7u5/java doesn’t exist.” Keine ahnung was, falsch ist :P

  3. Danke, hat so weit wunderbar funktioniert. Nur: Auf unserem Familiendesktoprechner zeigen sowohl
    Iceweasel 13.0.1 (aus dem mozilla.debian.net-Repo) als auch Google Chrome 20.irgendwas immer noch, dass sie mit 1.6.0_26 unterwegs sind – wie kriege ich die dazu, die neue Version zu nutzen? Mein Samsung will nämlich die 7er-Version zum multiplen Datenaustausch, einzelne Daten gehen aber auch so…

    LG Klaus

  4. @Roland: Vermutlich lädst du es in das falsch Verzeichnis, darauf würde ich jetzt zumindest auf Anhieb spekulieren. Vielleicht hast du Jabber, dann könnten wir mal chatten und ggf. kann ich über Fernsteuerung helfen.

    @Wolkensprung: Schonmal probiert die alte Version einfach zu löschen? Vielleicht sind die neuen Browser so intelligent, die neue Version dann automatisch zu erkennen. Ansonsten würde ich mir heute am späten Abend mal ein bisschen Zeit für dein Problem nehmen und das in meiner Testumgebung reproduzieren.

    Grüße

  5. Hallo Maltris, sry die Verspätung, war nicht mehr oft “angeleint” die letzte Zeit…

    Habe sowohl openjdk-6-* als auch sun-java6-* entfernt, Cache im Browser gelöscht, update-alternatives –config java ausgeführt und /usr/lib/jvm/jre1.7.0_05/bin/java ausgewählt, Browser gestartet (Iceweasel 13 und Chrome 20), nix, zumindest nicht mit “Kies air” von Samsung, einer Webapplikation zum Zugriff auf das Galaxy III, zB. zum Datenupload :(

    Habe aber eine andere Möglichkeit gefunden, Daten auf mein Handy zu schaufeln: Einfach mit einem Dateimanager via LAN zugreifen, da braucht’s kein Java dazu – too simple to be true ;-)

    Falls Du dennoch etwas Zeit investieren willst, freue ich mich auf ein Resultat, ansonsten lass es bleiben, es geht auch so.

    Danke für Deine Bemühungen anyway :)

    LG Wolkensprung

  6. Ich habe Skype und Teamviewer.
    Das mit den Verzeichniss kann sein. Obwohl ich mir doch sicher bin, dass es richtig ist. “Lib64” ist bei mir das gleiche wie “Lib”. Etwas seltsam.

  7. Gut erklärt, jedoch habe ich propleme.
    Ich habe diese Anleitung für meinen Debian 6 server benutzt, jedoch kalppt “update-alternatives –config java” nicht. Der befehl wird zwar (anscheinend) erfolgreich ausgeführt, jedoch kommt danbn bei aufruf von “java -version” dies: “-bash: /usr/bin/java: No such file or directory”
    Führe ich “update-alternatives –config java” erneut aus, und wähle wieder die 6er version, klappt java wieder
    Woran kann das liegen? (hab übrigends die aktuelle java 1.7.0_06 versucht)
    Vielen Dank
    MFG Henry

  8. Hi Henry,

    hast du

    update-alternatives –install /usr/bin/java java /usr/lib64/jvm/jre1.7.0_03/bin/java 1065

    auch richtig ausgefuehrt? Also auch die alte Versionsnummer aus meinem Tutorial mit deiner neuen ersetzt?

    Viele Gruesse

  9. Rolands Problemchen haben wir geloest. Er hatte ein paar Schwierigkeiten mit dem Entpacken. Weiterhin war bei ihm das Verzeichnis “lib64” eine simple Verlinkung zu “lib”. Bei mir ist dies nicht der Fall gewesen. Ich schriebe das einfach provisorisch mal seinem nicht ganz unveraenderten Debian Image zu.

    Gruesse

  10. WARUM muss das so kompliziert sein ????
    Auf meinem Squezze Desktop PC bring ich das einfach ned hin.
    Das hilft debian nicht grad weiter….

    Ich übe und übe aber es geht einfach nicht
    (und ich arbeite seit 30 Jahren auf PC’s und habe 20 Linux server im hosting…aber eben Debian scheucht mich genau wegen dem.)

  11. Wenn du magst helfe ich auch dir bei der Angelegenheit via Mail, hier in den Kommentaren oder gar per Remote mit Teamviewer. :)

  12. Kleine Ergänzung:

    Falls auf dem Server noch kein Java installiert ist, gibt es den Ordner /usr/lib[64]/jvm/ noch gar nicht und der mv schiebt den entpackten Ordner an den falschen Ort. Dadurch funktioniert der Folgebefehl (update-alternatives –install …) natürlich nicht.

  13. Großes Problem bei mir.Er hat nach deiner Anweisung alles perfekt genommen.Bei mir ist ebenfalls das Problem,dass lib64 nur ein verlinkung ist.Beim starten per Screen Befehl sagt er mit

    cannot exec java:Permissions denied

  14. @Ghoro: Dieser Fehler tritt eigentlich nur dann auf, wenn du

    a) das Programm mit einem User ausfuehrst der keien Rechte an der Datei hat

    oder

    b) die Rechte der Datei nicht korrekt gesetzt sind.

    Kannst du mal mitteilen welche Rechte da wie genau gesetzt sind? Also sowohl Benutzerrechte als auch Dateirechte.

    Hierfuer muesste sich das Kommando “ls -l” gut eignen.

    Gruss

Leave a Reply to Wolkensprung Cancel reply

Your email address will not be published. Required fields are marked *