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

[solved] YaST-Modul "runlevel" / Kommandozeile

Robocratic

Newbie
Hallo liebe Linux-Gemeinde,

ich muss unter SuSE-Linux für eines unsere Software-Produkte einen Runlevel-Editor mit Web-Frontend programmieren und habe dabei leidvoll festgestellt, dass SuSE beim Starten/Stoppen von Diensten bzw. beim Setzen von Runlevels ein eigenes Konzept verfolgt, das offensichtlich von der Linux Standard Base (LSB) abweicht, was die Auflösung von Abhängigkeiten betrifft.

In einer kurzen Krisen-Sitzung haben wir dann hier beschlossen, uns nun eingehend damit zu beschäftigen, wie der YaST-Runlevel-Editor diese Angelegenheiten regelt, sprich ihm seine Funktionalität abzugucken und nachzubauen. In diesem Zusammenhang sind wir auf das "YaST Konfigurationsmodul 'runlevel'" gestoßen, das von der Kommandozeilen-Ebene aus aufrufbar sein soll. Doch leider verweigert es dort hartnäckig seine Dienste.

Frage: Gibt's hier jemand, der mit dem Modul schonmal positive Erfahrungen gemacht hat und den Kniff kennt, wie man es zum Sprechen bringt?

Anbei mal dokumentiert, was ich auf der Kommandozeilen-Ebene bisher ausprobiert habe. Ich hab mir auch schon erfolglos die Finger wund-gegoogelt nach der Thematik :roll:

SHELL:
yast runlevel help

OUTPUT:
YaST-Konfigurationsmodul: runlevel
-----------------------------------

Konfiguration der Systemdienste (Runlevel)

Grundsyntax:
yast2 runlevel interactive
yast2 runlevel <Kommando> [verbose] [Optionen]
yast2 runlevel help
yast2 runlevel longhelp
yast2 runlevel xmlhelp
yast2 runlevel <Kommando> help

Kommandos:
add Dienst aktivieren
delete Dienst deaktivieren
set Standard-Runlevel nach dem Systemstart festlegen
summary Liste des aktuellen Status' des Systemdienstes anzeigen

Führen Sie 'yast2 runlevel <Kommando> help' aus, um eine Liste verfügbarer Optionen zu erhalten.

SHELL:
yast runlevel add help

OUTPUT:
YaST-Konfigurationsmodul: runlevel
-----------------------------------

Kommando 'add'
Dienst aktivieren

Optionen:
service [string] Durch Kommas getrennte Dienstnamen
runlevels [string] Durch Kommas getrennte Runlevel-Liste
help Hilfe zu diesem Befehl ausgeben
verbose Fortschrittsinformationen anzeigen

SHELL:
yast runlevel add service apache2

OUTPUT:
Unbekannte Option für das Kommando: 'add': apache2
Mit 'yast2 runlevel add help' erhalten Sie eine komplette Liste verfügbarer Optionen.

SHELL:
yast runlevel add service

OUTPUT:
Ungültiger Wert für Option 'service' -- erwarteter Wert: 'string', erhaltener Wert:
Mit 'yast2 runlevel add help' erhalten Sie eine komplette Liste verfügbarer Optionen.
 

oc2pus

Ultimate Guru
hm, warum nicht einfach insserv (siehe man insserv) verwenden ?

und insserv wertet nur aus was in dieser Sektion steht:
### BEGIN INIT INFO
# Provides: named
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Should-Start: ldap
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Domain Name System (DNS) server, named
# Description: Berkeley Internet Name Domain (BIND) implementation of the
# Domain Name System (DNS) server named.
### END INIT INFO

was das genau bedeutet? siehe man init ;)

d.h. in diesem Beispiel MUSS vor named das network remote_fs und syslog init-script gestartet werden.... daraus ergibt sich dann die Numerierung der Links in den jeweiligen runlevel-Verzeichnissen rcX.d.

bei SuSE gibt es zu jedem runlevel script XXXX ein script rcXXXX in /sbin oder /usr/sbin.

mit rcXXXX status kann geprüft werden ob ein Diesnt läuft oder nicht

nixc anderes macht das YaST Modul
 
OP
Robocratic

Robocratic

Newbie
Tja, schön wär's... Aber die Abhängigkeiten, die unter den Skripten in /etc/init.d formuliert sind (nebst der Namensauflösungen, die für Services mit einem vorangestellten $-Zeichen zu erledigen sind -> formuliert in /etc/insserv.conf), sagen etwas anderes aus als das, was der YaST-Runlevel-Editor dann real tut. Daher ja meine Aussage, dass SuSE sich anscheinend nicht am LSB orientiert.
 
Robocratic schrieb:
Daher ja meine Aussage, dass SuSE sich anscheinend nicht am LSB orientiert.
Nette Aussage, nur leider ist sie völlig falsch.

Lies doch mal selbst, was die LSB zum Thema init sagt:

http://www.freestandards.org/spec/refspecs/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/tocsysinit.html
Robocratic schrieb:
[...] habe dabei leidvoll festgestellt, dass SuSE beim Starten/Stoppen von Diensten bzw. beim Setzen von Runlevels ein eigenes Konzept verfolgt, das offensichtlich von der Linux Standard Base (LSB) abweicht, was die Auflösung von Abhängigkeiten betrifft.
Das stimmt überhaupt nicht, weißt Du überhaupt, was in der LSB-Spezifikation zu dem Thema drin steht? Ich bezweifle das.
 
OP
Robocratic

Robocratic

Newbie
@traffic

man insserv:
"Please note, that the Required-Stop, Should-Stop, and Default-Stop are ignored in SuSE Linux, because the SuSE boot script concept uses a differential link scheme"
 
OP
Robocratic

Robocratic

Newbie
Robocratic schrieb:
SHELL:
yast runlevel add service apache2

OUTPUT:
Unbekannte Option für das Kommando: 'add': apache2

yast runlevel add service=apache2

...ist die Lösung. Hab einfach mal einen YaST-Entwickler angemailt, der dann freundlicherweise schnell und hilfreich geantwortet hat, dass da ein Gleich-Zeichen rein muss.
 
Robocratic schrieb:
man insserv:
"Please note, that the Required-Stop, Should-Stop, and Default-Stop are ignored in SuSE Linux, because the SuSE boot script concept uses a differential link scheme"
Bei "different" bzw. "anders" oder "verschieden" stellt sich immer die Frage: "verschieden wovon" bzw. "anders als was".

Das LSB-spezifizierte Kommando ist nicht insserv, sondern /usr/lib/lsb/install_initd.

Siehe auch: http://www.freestandards.org/spec/refspecs/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/initsrcinstrm.html
 
Oben