efa mittels sudo starten

Wenn Du Hilfe bei der Benutzung von efa benötigst oder Fragen zu bestimmten Funktionen hast, dann bist Du in diesem Forum richtig. Hier kannst Du auch Hilfestellung für Probleme suchen oder Fehler in efa mitteilen.

Moderator: nick

Forumsregeln
Verfasse bitte die Beiträge in den passenden Kategorien und gib ihnen einen aussagekräftigen Betreff.
Antworte bitte nur zum Thema und beginne ein neues Thema, falls Du noch etwas Zusätzliches sagen möchtest.
Antworten
mechanical_man
Beiträge: 54
Registriert: Do 9. Sep 2010, 19:05

efa mittels sudo starten

Beitrag von mechanical_man » Do 9. Sep 2010, 19:37

Hallo Forum,

ich möchte efa auf Linux einsetzten und plane für die Administration einen eigenen Benutzer "admin" zu verwenden. Ein weiterer Benutzer "Bootshaus"mit eingeschränkten Rechten soll für den Bootshaus-Betrieb verwendet werden.

Ich dachte das wäre kein großes Ding. Also habe ich efa im Verzeichnis /efa installiert und rekursiv mit gleichen Rechten ausgestattet.

Code: Alles auswählen

drwxr-xr-x   9 admin root  4096  9. Sep 20:58 efa/
Somit liegen alle Dateien erstmal ausserhalb des Schreibzugriffs von Bootshaus. Nun habe ich mit sudo folgendes eingerichtet, um efadirekt.sh durch den Benutzer Bootshaus mit den Rechten von admin ausführen zu können:

Code: Alles auswählen

bootshaus     ALL = (admin) NOPASSWD:/efa/efadirekt.sh
Der Aufruf von efadirekt.sh sollte nun eigentlich durch diesen Befehl möglich sein:

Code: Alles auswählen

sudo -H -u admin /efa/efadirekt.sh
Leider passiert aber nur folgendes:

Code: Alles auswählen

bootshaus@fahrtenbuch:~> sudo -H -u admin /efa/efadirekt.sh
/efa/efadirekt.sh: starting efa ...
/efa/efadirekt.sh: efa exit code: 1
Hat jemand eine Ahnung warum efa nicht startet?

mechanical_man
Beiträge: 54
Registriert: Do 9. Sep 2010, 19:05

Re: efa mittels sudo starten

Beitrag von mechanical_man » So 12. Sep 2010, 22:18

Ein kurzes update, ich bin nun einen kleinen Schritt weiter:

Offenbar liegt u.a. ein Problem mit den Umgebungsvariablen vor, denn die JRE war nicht im PATH vorhanden.
Ich habe sämtliche Umgebungsvariablen nun vom Benutzer übernommen, indem ich die sudoers Datei geändert habe:

Code: Alles auswählen

Defaults env_reset
# Change env_reset to !env_reset in previous line to keep all environment variables
Hierdurch wird die Fehlermeldung ein wenig gesprächiger, jedoch immernoch für mich unverständlich:

Code: Alles auswählen

bootshaus@fahrtenbuch:~> sudo -H -u admin /efa/efadirekt.sh
/efa/efadirekt.sh: starting efa ...
[b]No protocol specified
[/b]/efa/efadirekt.sh: efa exit code: 1
Wer kann weiter helfen?

nick
Beiträge: 1300
Registriert: Sa 10. Jul 2010, 11:45

Re: efa mittels sudo starten

Beitrag von nick » Mo 13. Sep 2010, 19:57

Hallo,

zum Aufruf von efadirekt.sh mußt Du (mit Ausnahme der allerneusten efa 1.8.3-Versionen, wo diese Beschränkung wegfällt) im efa-Installationsverzeichnis sein. Versuche es doch mal, vorher nach /efa zu wechseln (dann sollte sudo -H -u admin pwd als Ausgabe /efa liefern), oder lade Dir die neueste efa-Version herunter.

Falls das nichts hilft: Schreibt efa etwas in die efadirekt.log Logdaitei? Falls nein (und das würde ich vermuten) klappt schon der Aufruf von java nicht. Was passiert denn bei sudo -H -u admin java -version? Wenn das eine Fehlermeldung liefert, befindet sich Java nicht im Pfad.

Gruß,
Nicolas.

mechanical_man
Beiträge: 54
Registriert: Do 9. Sep 2010, 19:05

Re: efa mittels sudo starten

Beitrag von mechanical_man » Mi 15. Sep 2010, 20:28

Hallo Nicolas,

danke für deine Antwort. Ich habe deine Tipps soeben ausprobiert.

Als aktuelles Verzeichnis wird /efa ausgegeben

Code: Alles auswählen

efa@fahrtenbuch:/efa> sudo -H -u admin pwd
/efa
Der Pfad zur JRE befindet sich im Pfad, Java kann ausgeführt werden

Code: Alles auswählen

efa@fahrtenbuch:/efa> sudo -H -u admin java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode)
Aber soeben habe ich probiert efa als ganz normaler Benutzer, für den es installiert ist zu starten. Es startet nicht. Ich glaube, das Problem ist nicht länger sudo, denn das Verhalten beim Programmstart ist jetzt über sudo und als normaler Benutzer das gleiche. Ich kann es mir nicht erklären.
Fehlt mir hier eine Komponente von Java?

Glücklicherweise schreibt efa eine Logfile, allerdings kann ich hier kein großartiges Problem rauslesen:

Code: Alles auswählen

admin@fahrtenbuch:/efa # cat efadirekt.log
[15.09.2010 21:35:15] - INFO - PROGRAMMSTART
[15.09.2010 21:35:15] - INFO - efa-Version: 1.8.3_15 -- Java-Version: 1.6.0_20 (JVM 16.3-b01) -- OS-Version: Linux 2.6.34-12-default
Exception in thread "main" [15.09.2010 21:35:15] - WARNING - Unerwarteter Programmfehler: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment Dieser Fehler ist möglicherweise ein Fehler in Java, der durch ein Java-Update behoben werden kann. Meistens führt diese Art von Fehlern nur zu vorübergehenden Darstellungsproblemen und hat keine Auswirkung auf efa und die Daten. Sofern dieser Fehler nur selten auftritt und keine erkennbaren Folgen hat, kann er ignoriert werden. Stack Trace: java.lang.Class.forName0(Native Method) java.lang.Class.forName(Class.java:169) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68) sun.awt.X11.XToolkit.<clinit>(XToolkit.java:89) java.lang.Class.forName0(Native Method) java.lang.Class.forName(Class.java:169) java.awt.Toolkit$2.run(Toolkit.java:834) java.security.AccessController.doPrivileged(Native Method) java.awt.Toolkit.getDefaultToolkit(Toolkit.java:826) sun.swing.SwingUtilities2$AATextInfo.getAATextInfo(SwingUtilities2.java:120) javax.swing.plaf.metal.MetalLookAndFeel.initComponentDefaults(MetalLookAndFeel.java:1556) javax.swing.plaf.basic.BasicLookAndFeel.getDefaults(BasicLookAndFeel.java:130) javax.swing.plaf.metal.MetalLookAndFeel.getDefaults(MetalLookAndFeel.java:1591) javax.swing.UIManager.setLookAndFeel(UIManager.java:514) javax.swing.UIManager.setLookAndFeel(UIManager.java:554) javax.swing.UIManager.initializeDefaultLAF(UIManager.java:1317) javax.swing.UIManager.initialize(UIManager.java:1406) javax.swing.UIManager.maybeInitialize(UIManager.java:1394) javax.swing.UIManager.getUI(UIManager.java:980) javax.swing.JLabel.updateUI(JLabel.java:256) javax.swing.JLabel.<init>(JLabel.java:145) javax.swing.JLabel.<init>(JLabel.java:216) de.nmichael.efa.StartLogo.show(StartLogo.java:25) de.nmichael.efa.direkt.EfaDirekt.<init>(EfaDirekt.java:19) de.nmichael.efa.direkt.EfaDirekt.main(EfaDirekt.java:196)
java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
        at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:89)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at java.awt.Toolkit$2.run(Toolkit.java:834)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:826)
        at sun.swing.SwingUtilities2$AATextInfo.getAATextInfo(SwingUtilities2.java:120)
        at javax.swing.plaf.metal.MetalLookAndFeel.initComponentDefaults(MetalLookAndFeel.java:1556)
        at javax.swing.plaf.basic.BasicLookAndFeel.getDefaults(BasicLookAndFeel.java:130)
        at javax.swing.plaf.metal.MetalLookAndFeel.getDefaults(MetalLookAndFeel.java:1591)
        at javax.swing.UIManager.setLookAndFeel(UIManager.java:514)
        at javax.swing.UIManager.setLookAndFeel(UIManager.java:554)
        at javax.swing.UIManager.initializeDefaultLAF(UIManager.java:1317)
        at javax.swing.UIManager.initialize(UIManager.java:1406)
        at javax.swing.UIManager.maybeInitialize(UIManager.java:1394)
        at javax.swing.UIManager.getUI(UIManager.java:980)
        at javax.swing.JLabel.updateUI(JLabel.java:256)
        at javax.swing.JLabel.<init>(JLabel.java:145)
        at javax.swing.JLabel.<init>(JLabel.java:216)
        at de.nmichael.efa.StartLogo.show(StartLogo.java:25)
        at de.nmichael.efa.direkt.EfaDirekt.<init>(EfaDirekt.java:19)
        at de.nmichael.efa.direkt.EfaDirekt.main(EfaDirekt.java:196)

nick
Beiträge: 1300
Registriert: Sa 10. Jul 2010, 11:45

Re: efa mittels sudo starten

Beitrag von nick » Mi 15. Sep 2010, 21:19

Hallo,

der Fehler java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment bedeutet, daß Deine X11-Umgebung unter Linux nicht richtig installiert ist. Damit Du unter Linux graphische Programme starten kannst, muß ein X-Server installiert sein (checke dazu Deine Linux-Distribution und installiere X11) und die DISPLAY Umgebungsvariable gesetzt sein (wenn Du lokal vor dem Rechner sitzt, dann sollte DISPLAY den Wert :0.0 haben). Normalerweise wird bei einer üblichen Linux-Installation das alles entsprechend eingerichtet, außer eventuell wenn Du ein Minimalsystem ohne X11 installierst.

Also, prüfe zunächst, ob X11 überhaupt installiert ist. Als nächstes dann mal:
echo $DISPLAY
und bei falschem Inhalt (oder wenn gar nicht gesetzt):
DISPLAY=:0.0
export DISPLAY


Zum Testen kannst Du neben Java auch das Programm xclock benutzen, welches normalerweise bei jedem Linux mitkommt und sozusagen das Standard-Testprogramm für X11 ist -- wenn alles richtig eingerichtet ist, dann muß xclock eine graphische Uhr anzeigen. Wenn das geht, sollte auch efa starten.

Gruß,
Nicolas

PS: Wenn auf Deinem Linux ein Desktop läuft, dann ist X11 natürlich installiert ... Ich denke mal eher nicht, daß Du unter Linux im Textmodus arbeitest. ;-) Das mit der X11-Installation kannst Du daher sicher vergessen (jaja, ich bewege mich öfters auch mal auf Servern, auf denen kein X11 ist...). Ansonsten findest Du hier noch ein paar nützliche Tips was ggf. - je nach Deiner Konfiguration - zu beachten ist: http://www.brandonhutchinson.com/wiki/X ... nd_su/sudo

Antworten