• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

openSuse 11: Yast nach Plesk 9.0.1 installation defekt

floezen

Newbie
Hallo,

ich habe mine Testserver mit openSuse 11.0 neu aufgesetzt. Nach der Installation von Plesk 9.0.1 funktioniert nun aber YAST nicht mehr.
Code:
suse-server:~ # yast
//sbin/yast: line 27: //lib/YaST2/bin/yast2-funcs: No such file or directory
//sbin/yast: line 238: set_lang_from_sysconfig: command not found
//sbin/yast: line 267: check_ncurses: command not found
package yast2-qt is not installed
package yast2-gtk is not installed
Something is wrong with the YaST user interface.

Irgendwie scheint Plesk da was zu überschreiben. Hier -> http://serversupportforum.de/forum/dedizierte-server/31322-kann-yast-nicht-starten-opensuse-11-0-a.html haben mehrere Leute das Problem. Die Lösung ist:
Code:
PATH=/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin
Nur wo muß man das reinschreiben, damit das den nächsten Neustart überlebt?

Danke & Grüsse
Flözen
 
OP
F

floezen

Newbie
Kann mir mal jemand sagen, was
Code:
less /sbin/yast
so ca. zwischen Zeile 18 und 24 ausgibt?

Bei mir steht da
Code:
# allow for a different prefix
mydir=${0%/[YyZz]a[Ss][Tt]*}
if [[ -z "$mydir" || "$mydir" =~ ^/sbin/* ]]; then
    YAST_PREFIX=/usr
else
    YAST_PREFIX=${mydir%/sbin}
fi

Bei mir reicht es, diese Zeilen durch
Code:
YAST_PREFIX=/usr
zu ersetzen. Dann funktioniert YAST wieder.

Allerdings fummel ich nicht so gerne in diesen Bereichen des Systems rum, daher wüsste ich gerne, ob diese Zeilen immer darin stehen oder ob sie durch Plesk hinzugefügt wurden.
Wenn diese Zeilen seit Suse 11 immer dort stehen würde ich sie gerne verstehen und wissen, was da genau das Problem bei mir auslöst.

Danke
Flözen
 
A

Anonymous

Gast
Guten Morgen,

Code:
# allow for a different prefix
mydir=${0%/[YyZz]a[Ss][Tt]*}
if [[ -z "$mydir" || "$mydir" =~ ^/sbin/* ]]; then
    YAST_PREFIX=/usr
else
    YAST_PREFIX=${mydir%/sbin}
fi

Cu
 

josef-wien

Ultimate Guru
Für die Details mußt Du die "manpage" von bash bemühen. Wenn sich das Skript im Verzeichnis "/sbin" befindet (welche Kombinationen mit "/sbin" sonst noch möglich sind, ist jenseits meiner Kenntnis über "reguläre Ausdrücke"), wird "/usr" verwendet. Ansonsten wird "Pfad plus Dateiname ohne abschließendem /yast* bzw. /zast* (das "a" muß ein Kleinbuchstabe sein)" verwendet.

Datei yast2 ist in /sbin ==> YAST_PREFIX = /usr
Verknüpfung yast2 ist in /home/ich/bin/ ==> YAST_PREFIX = /home/ich/bin
Verknüpfung YAST2 ist in /home/ich/bin/ ==> YAST_PREFIX = /home/ich/bin/YAST2

Ich habe den Verdacht, daß Du das Skript "/sbin/yast2" über eine Verknüpfung aufrufst, die nicht diesen Konventionen entspricht.
 
OP
F

floezen

Newbie
guter Tip... im Verzeichnis /sbin/ gibt es yast, yast2 zast und zast2, aalle mit yast2 verlinkt.

Wenn ich nur nur yast aufrufe gibts einen Fehler:
Code:
suse-server:/sbin # yast
//sbin/yast: line 27: //lib/YaST2/bin/yast2-funcs: No such file or directory
//sbin/yast: line 238: set_lang_from_sysconfig: command not found
//sbin/yast: line 267: check_ncurses: command not found
package yast2-qt is not installed
package yast2-gtk is not installed
Something is wrong with the YaST user interface.

wenn ich aber /sbin/yast aufrufe klappts!

Wo kann ich diesen Fehler korrigieren???
 

josef-wien

Ultimate Guru
Mit which yast bekommst Du Pfad und Dateiname zurück. Mit set | grep ^PATH läßt Du Dir die Variable PATH anzeigen und kannst schauen, welche Verzeichnisse vor /sbin positioniert sind. Ich finde es seltsam, wenn eine Anwendung ihre eigenen Pfade vor die Standardpfade stellt. Noch seltsamer finde ich es, wenn diese Anwendung dort Verknüpfungen auf ohnehin im Pfad enthaltene Dateien erzeugt (und dann nicht einmal testet); solche Verknüpfungen solltest Du löschen.

Schau einmal in /etc/profile.local und /root/.bashrc nach, ob wenigstens die richtigen Dateien für systemweite bzw. benutzerspezifische Änderungen verwendet werden. Falls die Anwendung nicht eigene Versionen existierender Dateien verwendet (was ich dann am seltsamsten fände), würde ich die Anwendungspfade nach hinten stellen:
Code:
PATH=$PATH:/pfad/eins:/pfad/zwei
export PATH
 
OP
F

floezen

Newbie
Danke für die promte Antwort.


Also irgendwie sieht das für mich ganz gut aus:
Code:
suse-server:~ # which yast
/sbin/yast
suse-server:~ # set | grep ^PATH
PATH=//sbin://bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/usr/lib64/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin

/etc/profile.local gibt's bei mir nicht - nur /etc/profile. Und /root/.bashrc gibt's auch nicht. Sollte es die Dateien auf jeden Fall geben? Und was sollte darin stehen?

Grüsse
Flözen
 

josef-wien

Ultimate Guru
floezen schrieb:
2 Schrägstriche sind absolut nicht normal. Durch die reguläre Datei /etc/profile, die im Paket aaa_base enthalten ist, entsteht diese Angabe nicht. Laut /etc/profile beginnt der Pfad von root mit "/sbin:/usr/sbin:/usr/local/sbin:".

Diese zusätzliche Angabe mit den 2 Schrägstrichen führt letztlich zu den Fehlermeldungen:
floezen schrieb:
//sbin/yast: line 27: //lib/YaST2/bin/yast2-funcs: No such file or directory
//sbin/yast: line 238: set_lang_from_sysconfig: command not found
//sbin/yast: line 267: check_ncurses: command not found
Entweder wurde /etc/profile verändert, oder diese zusätzliche Eintragung kommt von einer anderen Quelle (und die müßtest Du erst einmal suchen und finden). Wenn Du willst, kannst Du das Paket aaa_base in einem leeren Verzeichnis mit
Code:
rpm2cpio aaa_base-11.0-79.1.x86_64.rpm | cpio -idv
entpacken und dann die beiden Dateien mit KDiff3 vergleichen. Wenn sie gleich sind, machst Du Dich auf die Suche. Oder aber Du beläßt es bei Deiner Änderung vom 25. April 2009, 01:03 Uhr, schaden kann sie nicht.

/etc/profile.local und /root/.bashrc gibt es standardmäßg nicht, die müssen angelegt werden, um z. B. Pfadänderungen regulär durchzuführen.
 

tege

Newbie
Hallo,

ich hatte das selbe Problem nach einer Plesk-Installation und hab mal ein wenig nachgeschaut woher die zwei slash kommen. Nach nem grep hab ich die Ursache gefunden: zwei Skripte in /etc/profile.d
courier-imap.csh:
Code:
if ( $?MANPATH ) then
        true
else
        setenv MANPATH ""
endif

echo "$MANPATH" | tr ':' '\012' | fgrep -qx //man

if ( $? ) then
        true
else
        setenv MANPATH "//man:$MANPATH"
        setenv PATH "//bin:$PATH"
        test -w /etc
        if ( $? ) then
                true
        else
                setenv PATH "//sbin:$PATH"
        endif
endif
und courier-imap.sh
Code:
if echo "$MANPATH" | tr ':' '\012' | fgrep -qx //man
then
        :
else
        MANPATH="//man:$MANPATH"
        export MANPATH
        PATH="//bin:$PATH"
        if test -w /etc
        then
                PATH="//sbin:$PATH"
        fi
        export PATH
fi

Beide schauen ob der Pfad "//man" in MANPATH eingetragen ist und wenn nicht tragen sie diese (Schwachsinns-)Einträge ein.

Ich hab in der courier-imap.sh in Zeile 1 die if-Abfrage auf "/usr/share/man" geändert und schon verschwinden die Einträge beim nächsten Login.
Die radikale Art wäre natürlich die beiben Skripte zu löschen ... dürfte eigentlich auch nicht schaden ... Seit wann gibt es einen man-Path im root-Verzeichnis?

Grüße
Tege
 
Oben