Ich wollte nach einer Reihe Updates ein Java-Programm starten und wurde von folgender Fehlermeldung begrüßt:
> java
/usr/bin/java: Zeile 2: /usr/lib/jvm/default/bin/java: Zu viele Ebenen aus symbolischen Links
/usr/bin/java: Zeile 2: exec: /usr/lib/jvm/default/bin/java: Kann nicht ausführen: Zu viele Ebenen aus symbolischen Links
Der Fix ist schnell angewandt.
/usr/bin/java ist zunächst nur ein Link:
> file /usr/bin/java
/usr/bin/java: symbolic link to `/usr/lib/java-common-wrapper'
Die verlinkte Datei ist ein Shell-Script:
> file /usr/lib/java-common-wrapper
/usr/lib/java-common-wrapper: Bourne-Again shell script, ASCII text executable
> cat /usr/lib/java-common-wrapper
#!/bin/bash
exec "${JAVA_HOME:-/usr/lib/jvm/default}/bin/${0##*/}" "$@"
Ein Blick auf /usr/lib/jvm/default bringt die Erkenntnis, dass der symbolische Link kaputt ist:
> file /usr/lib/jvm/default
/usr/lib/jvm/default: broken symbolic link to `default'
Diesen Link müssen wir reparieren und auf das „java-7-openjdk“-Verzeichnis zeigen lassen:
sudo mv default default.bak
sudo ln -s java-7-openjdk default
Jetzt passen die symbolischen Links wieder und man kann „java“ ausführen.
~ Sebastian