Donnerstag, 31. Dezember 2009

MySQL

Mit dem guten WebMin (wie oft mir das doch schon den A** gerettet hat!) sehe ich wenigstens die alten Datenbanken.

phpMyAdmin wurde mir beim Update gelöscht!! Schweinerei.
Also neu installieren.

Erledigt. Nun meldet phpMyAdmin
#2002 - Der Server antwortet nicht. (evtl. ist auch der Socket des lokalen MySQL-Servers socket nicht korrekt konfiguriert)

Also muss mySQL auch neu aufgesetzt werden. Ohne WebMin wäreauch dies wieder ein Riesen-Akt.
WebMin fragt freundlich nach einem Modul "DBD mysql", damit es besser arbeiten kann, und bietet an, dies zu installieren. Nach einem Klick wird es fehlerfrei installiert. So sollte es eben laufen, liebe YaST- und sonstige Frickler!

Zurück zu phpMyAdmin. Warum kann das Teil nicht auf die Datenbank zugreifen - WebMin kann's doch?
Also wieder in Foren suchen..

mysqld mal manuell starten.
"091230 19:13:27 [Warning] mysqld: ignoring option '--character-set-client-handshake' due to invalid value 'cp1251'"
Das scheint eine unkritische Meldung zu sein, aber muss das sein, bei einer neuen Installation?

Wie erreiche ich nun, dass mysql automatisch (oder überhaupt mal) korrekt gestartet wird? In Config-Files rumfrickeln?

Nach "rcmysql restart" ist mysqld da. Aber warum muss ich das von Hand eingeben?
phpMyAdmin spuckt aber immer noch dieselbe Meldung aus.

Also mal nachschauen:
mysql status gibt u.a. aus:
UNIX socket:            /var/lib/mysql/mysql.sock

Wenn ich in PHP.ini alle Warnungen ausgeben lasse, kommt bei phpmyadmin/setup u.a.
Warning in ./libraries/dbi/mysql.dbi.lib.php#35
mysql_connect(): Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2)

 Aha. Da scheint der Wurm zu stecken.
Die Datei mysql.sock gibt es hier nur unter /var/lib/mysql
So steht es auch in der my.cnf

Wie bringe ich phpmyadmin das jetzt bei?
Eintrag in die config.inc.php
$cfg['Servers'][$i]['socket'] = '/var/lib/mysql/mysql.sock';

Super - jetzt kommt die Meldung in /setup schon nicht mehr.
Aber auch, wenn ich den Server in /setup eintrage (samt "Socket") geht nix.
Die von /setup geschriebene config.inc.php wird ins /config directory geschrieben (meine von früher war im Stammordner).
Aber hallo - auch wenn ich alle config.inc.php umbenenne, kommt dieselbe Meldung!
Es wird offenbar noch gar nicht versucht, sich einzuloggen bzw. den "socket" Eintrag aus der config zu lesen.

Es ist auch eindeutig ein Problem von phpmyadmin, micht mysql (WebMin kann ja zugreifen)

Jetzt wo die configs unsichtbar sind, kommt plötzlich wieder die "Warning" von oben.

Ich will nachschauen, ob phpinfo() die korrekte mysql-Erweiterung eingebunden hat.
Per Browser kommt nur der "beliebte" weiße Bildschirm (leere Seite).
Auf der Kommandozeile kommt aber:
PHP Fatal error:  Unknown: Failed opening required 'info.php' (include_path='.:/usr/share/php5:/usr/share/php5/PEAR') in Unknown on line 0

Tja, was ist jetzt "Unknown"? Wenn du's nicht weißt, woher soll ich es wissen? :-(

Die Datei info.php gibt es aber definitiv. Besitzer zwar root:root, Zugriffsrechte aber rw-r--r--, also Leserechte für alle.

Also habe ich jetzt ein Problem mit PHP und mit phpMyAdmin - hoffentlich ist Letzteres nur ein Folgefehler.
Endlich habe ich phpinfo() zum Laufen bekommen. Da sehe ich unter "mysql"
MYSQL_SOCKET     /var/run/mysql/mysql.sock
Aha - der Übeltäter ist gefasst :)
Keine Ahnung, wie das da reinkam, aber jetzt muss ich schauen, wo man das einstellt.
Unter php/conf.d jedenfalls nicht. In php.ini auch nicht. Und jetzt? Wieder in Foren suchen :-|
In /usr/include/mysql/mysql_version.h scheint es definiert zu sein. Aber wo kann ich das konfigurieren?

Endlich habe ich die Einstellung in php.ini gefunden: "mysql.default_socket". Achtung, die gibt es zweimal (unter [MySQL] und [MySQLi])

Wow - phpMyAdmin startet - endlich.

Bei aller Freude: wieder über zwei Stunden Lebenszeit für diesen unkreativen Kack verbraten.

Mittwoch, 30. Dezember 2009

Apache Server

Tja, WLAN geht jetzt zwar, aber es fehlt noch (hauptsächlich) Apache.
Beim Aufruf eines virtual host kommt: "Bad Request" (Fehlercode 400)
In der error_log: nichts. in der access_log: einfach nur "GET /" und 400


Tolle Hilfe.

Geht PHP überhaupt? Ich hatte doch apache samt PHP5 komplett neu installiert..
Ein PHP-Programm auf der Kommandozeile aufgerufen: geht.
Wie war das nochmal mit der PHP-Anbindung an Apache - kruschtel, kruschtel - wieder bin ich genervt, dass ich mich überhaupt mit diesem low level Mist beschäftigen muss ohne GUI.
Soso, in einer /etc/sysconfig/apache2 Datei steht unter APACHE_MODUES, welche Module überhaupt geladen werden.
Dort fehlt PHP!
Mit ungutem Gefühl schreibe ich "php5" dazu (wenn das schon nicht automatisch eingebunden wurde - was stimmt dann sonst noch nicht?)

Ich rufe die Testseite mal via VNC als localhost auf. Jetzt bekomme ich wenigstens eine ordentliche Ausgabe (mit Browserkennung) in der aceess_log - aber 403: Access forbidden.
Ok, Ordneroptionen prüfen - vielleicht gibt es ein Rechte-Problem.
Oha - keine Datei in /htdocs? Hatte ich die gelöscht? Ich glaube nicht. Egal, ich schreib eine index.html rein.
Die Seite ist sehr simpel und benutzt überhaupt kein PHP.
Mit rcapache2 restart kommt überhaupt keine Fehlermeldung. Dennoch schlägt der Aufruf der Seite wieder fehl. Besonders liebe ich die Meldung "Your browser (or proxy) sent a request that this server could not understand.". Nun ja - weitersuchen. Was anderes bleibt mir ja kaum übrig.
Huch - von localhost geht es jetzt!
An der Firewall wird's doch nicht liegen? Ausgeschaltet - nein, das Problem besteht immer noch.

Es lag an der (von WLAN) geänderten IP! Alle virtual hosts auf die neue IP umgestellt - dann geht's.
Ich habe übrigens noch keine Möglichkeit gefunden, named virtual hosts nur über den Namen anzusprechen (ohne, dass ich bei der virtual server Adresse die lokale IP angebe).

Jetzt erscheint (natürlich) ein weiteres Problem: mysql kann offenbar auf die zuvor konfigurierten Datenbanken nicht zugreifen.

WLAN

Warum habe ich mir das alles angetan?
Weil ich hoffte, dass mit opensuse 11.2 endlich mein WLAN-Stick funktioniert.
Es überrascht mich allerdings nicht, dass es selbstverständlich nicht "funkt".

Der Stick wird zwar erkannt, mit ifconfig und iwconfig ist er auch sichtbar.
Aber per YaST sind unter "Netzwerkgeräte" gleich zwei WLAN-USB-Adapter sichtbar (?)

Also einen raus.
Was ist das? Wenn ich mit YaST den verbliebenen konfiguriere, zeigt iwconfig plötzlich eine Verbindung an! So weit war ich ja noch nie!
Allerdings immer noch kein Ping.Ok, wird am routing liegen. Nach ein wenig rumfummelei (der Kabelanschluss eth0 muss aus der route raus) BINGO!
Endlich eine WLAN-Verbindung. Ich glaube, ich liebe opensuse doch wieder :-)

Nach dem Booten ist es zwar wieder weg, aber nachdem ich eth0 von "bei Systemstart" auf "bei Kabelanschluss" umstelle, geht auch das.

Ich bin glücklich - endlich hat mal wieder etwas funktioniert.
Jetzt kann ich endlich das Kabel vom Nachbarraum (wo der Server steht) abklemmen :-)

Dienstag, 29. Dezember 2009

..und weiter..

Nun sitze ich schon wieder seit zwei Stunden dran, habe 25 Tabs in Firefox geöffnet, um nach Problemlösungen zu suchen, und bin wieder mal reichlich angep*sst.

Bei der Fernsteuerung der KDE4-Oberfläche via VNC funktioniert die Tastatur (fast) nicht.
Shift-Taste macht meist garnichts, bei Shift+6 kommt "7", bei Shift+7 kommt "-" usw. usf.
So kann ich buchstäblich nicht arbeiten!

Dies ging mit 11.0 und KDE 3 noch.

Ich finde einfach keine Möglichkeit, den Tastaturfehler einzukreisen oder gar zu eliminieren.

Vielleicht liegt es ja auch an Krfb (KDE GUI für VNC)? Aber dieses Stümperprogramm zeigt nichtmal seine Versionsnummer an, um zu überprüfen, ob das vielleicht nur für KDE3 gedacht ist.

Ich fange an, KDE4 zu hassen.
Irgendwo wurde offenbar beim Update eine Einstellung von KDE3 nicht auf KDE4 angepasst.
Ich kenne mich aber überhaupt nicht mit "xterm" und diesem "X" Zeugs aus - und will es auch nicht. Ich will, dass das einfach funktioniert!

openSUSE 11.2 YaST

Das ist ja wohl ein schlechter Witz.
Warum muss denn das YaST-Fenster so klein sein?
Und warum bitteschön benutzen die Dussel keine Tab-Reiter statt ellenlanger Listen mit Zwischenüberschriften??? Man muss ständig aufpassen, ob man schon in der nächsten Kategorie gelandet ist.

Wenigstens gibt es jetzt die lange überfällige Suchfunktion.
Aber nach "Apache" suchen bringt nichts - nur "HTTP-Server" führt zum Ziel. Wobei die Apache-Konfiguration sehr rudimentär und (natürlich) fehlerhaft ist. (Z.B. wird mir bei Virtual Hosts IP nicht die aktuelle WLAN-IP aufgeführt)

"MySQL", "PHP"? Fehlanzeige. Ohne WebMin wäre man da noch auf steinzeitliche Methoden angewiesen.

KDE 4

Ich beschäftige mich gerade mal seit 10 Minuten mit der KDE 4 Oberfläche, und habe schon jede Menge Bugs und Quirks gefunden.

  • warum speichert "Konsole" meine Einstellungen nicht?
  • Dieser seltsame "Arbeitsflächen-Ordner" lässt sich offenbar nicht vergrößern
  • mit Rechtsklick [X] verschwindet er - und lässt sich nicht mehr hervorholen. Hoffentlich kommen die Icons nach dem Neustart wieder.
    Nein, natürlich nicht :-(
  • Absturz (segmentation fault), wenn ich unten in der Schnellstartleiste "Kontrollleiste hinzufügen" anklicke.
  • einfach ein Icon in die Schnellstartleiste schieben is nicht (ging doch mit KDE3, oder?)
  • man kann offenbar die Icons nicht an einem Raster ausrichten.
  • man kann nicht mehrere markieren und verschieben
  • und dann immer diese blöde Werkzeugleiste
Welche Dussel haben sich denn das ausgedacht?


Der neue Dateimanager "Dolphin" ist auch buggy.

  • ich mache Rechtsklick auf einen Ordner | in den Papierkorb verschieben. Daraufhin wird der Ordner entfernt und man befindet sich in dem (nicht mehr vorhandenen) Ordner
  • Strg+T (neuer Tab) öffnet -zig neue Tabs. (Dies kann aber auch an VNC liegen, genauso wie die nicht funktionierende Shift-Taste)

..und weiter..

Nächstes Problem: wenn PHP einen "segfault" erzeugt, will ich lieber eine ältere Version <5.3. Nur - wie kann ich PHP deinstallieren? Da will Yast jede Menge anderer Module deinstallieren. Also versuche ich, PHP 5.2 drüberzubügeln.

 Nebenbei bemerke ich (in WebMin), dass keine default route mehr vorhanden ist.
Also manuell anlegen.

Wieder eine halbe Stunde mit Rumlesen verbraten. Ich bin immer noch nicht weiter.
Apache2 lässt sich nicht deinstallieren, weil immer dieser xyfonts Dreck deinstalliert werden soll, und dazu scheint eine Internetverbindung zwingend nötig zu sein. Eine von tausend Unstimmigkeiten. Wo gibt's denn sowas, dass ich zum Deinstallieren unbedingt das Internet brauche?

Also muss ich jetzt untersuchen, warum die Konsole (Yast) nicht ins Internet kommt. Firefox kommt rein..

ping google.de
ping: unknown host google.de

Ah ja. Aber die route ist doch korrigiert?

Es wurde der Nameserver (mein Router) aus der Netzwerk-Konfiguration geworfen!
So langsam wird mir unheimlich, was noch alles zerschossen wurde.

Es geht weiter. Jetzt geht zwar die Namensauflösung, und damit auch der Zugriff auf 'http://download.opensuse.org/'. Aber jetzt kommt:
Datei '/content.key' nicht auf dem Medium 'http://download.opensuse.org/source/distribution/11.2/repo/oss/' gefunden. Stimmt, dort gibt es auch nur eine content.asc - keine content.key
Und nun? Bin ich in einem Rätselspiel?

Ein falsches Directory war eingetragen (nicht von mir - vom Setup!)
http://download.opensuse.org/source/distribution/11.2/repo/oss/
statt
http://download.opensuse.org/distribution/11.2/repo/oss/
Was ist das schon wieder für ein Pfusch?

Hurra - Apache läuft wieder.
Aber "httpd2-prefork: Could not reliably determine the server's fully qualified domain name"
In der /etc/hosts steht mein Servername jedenfalls schon..
Ok, trage ich halt einen ein. Keine Zeit, mich auch darüber zu ärgern.

Jetzt besteht noch das Problem, dass WebMin keinen Zugang hat, sobald die Firewall an ist.
Gelöst. Was war's "any" musste zur "Externen Zone"  zugewiesen werden (na klar, weiß ja jedes Kind!)

Und jetzt der Zugriff per SAMBA.

Aha. "No SAMBA Users defined". Ganze Arbeit geleistet.
Wenigstens bestehen ja die Unix-user und groups noch. Also mit WebMin neu konvertieren.

Der Fehler scheint hier in meinem (ansonsten geliebten) WebMin zu stecken.
Wenn ich mit
smbpasswd -a username
smbpasswd -e username
die Benutzer einzeln aktiviere, geht es.

openSUSE 11.2 Installation geht weiter..

Stand der Dinge nach ca. 2 Stunden: Netzwerk geht endlich, zumindest rudimentär.
Ping, PuTTY-Zugriff. Aber kein SAMBA, kein WebMin.

Als Nächstes stelle ich fest, dass Apache auch nicht startet.
PHP 5.3 installiert sich offenbar nicht korrekt (Pfade werden nicht angepasst, setzt error_reporting = E_ALL  usw.)

rcapache2 start sagt "failed". Toll, und was steht in error_log? Nichts!
Ach so, super: in messages steht "segfault at 10 ip b70aba06 sp bf82d9f4 error 4 in mod_php5.so[b7049000+285000]"
Also darf ich jetzt Apache neu installieren?
Mach ich doch gerne :-\

Also Yast: Software installieren. Kein Zugriff auf Repository http://irgendwas.
Wie bitte? Die DVD liegt noch drin!
Bei den Repositories ist "CD" aktiviert (DVD nicht!). Mal probieren (frickeln). Ja jetzt geht's. Aber bei Novell/Suse geht's wohl nicht mehr :-((

Nebenbei nervt es tierisch, dass Yast (bei PuTTY Zugriff) Umlaute als Ā usw. anzeigt :-(

Also alles, was Apache heißt: aktualisieren (von DVD)
Jetzt kann der irgendsoeinen "fetchmsttfonts" Dreck von opensuse.org nicht runterladen (wir erinnern uns: er soll von DVD installieren, weil der Internetzugriff offenbar defekt ist)

rcapache2 start sagt immer noch "failed" :-((
So langsam geht mir der Hut hoch. Ich wollte heute eigentlich noch was arbeiten..

Jetzt sehe ich noch in messages: "UDF-fs: No partition found". Beim Zugriff auf die DVD also auch Fehler??
Wenn ich hinlaufe und per KDE reinschaue, zeigt die DVD keine Fehler..

Ich habe echt genug. Ich überlege, was alles damit verbunden wäre, wenn ich opensuse jetzt komplett lösche und Ubuntu installiere. Leider sehr viel..
Man denkt ja immer, viel kann es nicht mehr sein - und dann sitzt man wieder Stunden an einem kleinen Fitzelproblem.

openSUSE 11.2 Installation

Jetzt ist endlich mal Zeit, openSUSE 11.2 zu installieren (Update von 11.0)

Hauptsächlich interessiert mich, ob damit endlich mein WLAN USB-Stick läuft. Ich will gar nicht daran denken, wie viele Stunden ich damit schon verbraten habe :-(

Beim ersten Update-Versuch gleich wieder Linux-Typisches: "Ihre Partitionen sind nach der kernel-irgendwas-Methode eingehängt, was leider unzuverlässig ist" (hä - ich habe die Partitionen immer ganz konservativ per YaST eingehängt). "Bitte starten Sie das alte System und ändern Sie dies".
Grummel..
ok, altes System gestartet. YaST | System | Partitionierung. Erstmal eine dicke Warnung, die einen Anfänger sicher abschrecken würde. Naja, nicht mich ;-)

Die Einhänge-Methode findet sich unter "Bearbeiten | fstab-Optionen.
Großes Rätselraten: was soll ich wählen - Gerätename (was auch immer das sein mag), Volume-Kennung, Geräte-ID (was auch immer das sein mag), Gerätepfad (was auch immer das sein mag), UUID (was auch immer das sein mag). Erklärt wird jedenfalls nix.

Dabei kommt die Ahnung auf, dass beim nächsten Booten die Partitionen nicht mehr erkannt werden. Ein Test an dieser Stelle? Fehlanzeige.

Ich muss wieder auf die root-Konsole, mich an "/etc/fstab" und "mount" erinnern. Diese Ausgaben in eine Datei umleiten und auf einem anderen Rechner sichern. Sehr unkomfortabel.
Wo sehe ich nochmal in der Konsole die rohen Partitionsdaten (Start-/Endzylinder..)? Vergessen :-\

Ok - "fdisk". Gibt jede Menge Warnungen aus, "Das Gerät enthält weder eine gültige DOS-Partitionstabelle,
noch einen »Sun«, »SGI« oder »OSF disklabel«" Nicht sehr vertrauenserweckend.
Bei jeder Partiition dieselbe Ausgabe "Einheiten = Zylinder von 16065 - 512 = 8225280 Bytes" - definitiv falsch. Noch weniger vertrauenserweckend, geschweige denn hilfreich. Buggy Frickel-Software :-(



Sch.. ich will doch nur ein Betriebssystem-Update machen.


Ich bin mutig und setze alle fstab-Optionen auf  "Geräte-ID", nachdem mir mit "Details anzeigen" für jede Partition unterschiedliche IDs angezeigt werden.

Kleiner Ärger am Rande: das Partitionsprogramm lässt mich nicht mit "OK" raus. "Keine ungespeicherten Änderungen". Soll ich nun "Verwerfen" oder was? Ein Holzkopf, der das programmiert hat.
Also extra nochmal starten und siehe da: er hat's gespeichert.


Neustart & Gebet..


Na gut, Neustart hat jedenfalls geklappt.
In fstab steht jetzt statt /dev/sda5 sowas wie "/dev/disk/by-id/scsi-SATA_ST1234021A_1JS00G2H-part5". Hoffentlich muss ich das nie raussuchen und eintippen :-\

Also zurück zur eigentlichen Aufgabe. Neustart und Update.

Das Update-Setup hat zwar ewig lang gerödelt, aber offenbar doch nicht festgestellt, welche Pakete ich installiert habe bzw. updaten will. (Bsp. die ganzen dev Pakete, kernel source usw.; da hätte ich später wieder alles zusammensuchen dürfen :-\
Hoffentlich schmeisst der mir jetzt keine installierten Pakete raus, sonst gehe ich aber in die Luft.

Nach dem Neustart
"Natürlich" geht erstmal nichts :-(
Keine Netzwerkverbindung!
Meine Netzwerkkarte wird mal wieder der "internen Zone" zugewiesen.(Das passierte auch schon in früheren Versionen)

Dann verliert sie ihre feste IP.
Und dann wird "eth0" einfach deaktiviert.
So geht's nicht, verehrte Novell-SUSE-Künstler.


Nach langem Gefrickel (ich fürchte, dabei wird es nicht bleiben) kann ich die ursprüngliche Netzwerkkonfiguration wiederherstellen.


Ich bin so stinkesauer, dass ich gute Lust hätte, SUSE auf den Müll zu schmeißen und Ubuntu zu benutzen.
Geht aber leider nicht, weil ich bei Kunden leider vor Jahren SUSE installiert hatte, und nun einen Rechner für Tests brauche.



Sonntag, 11. Oktober 2009

Perl

will gerade mal wieder ein Progrämmchen installieren.
In der INSTALL Datei heißt es:
For Perl package import scripts:
Perl Module: XML::DOM
Perl Module: DBI
Perl Module: DBD-mysql

So. Jetzt weiß man natürlich als normaler Benutzer
  • was "Perl" ist
  • wie man "Module installiert"
  • nachdem man sich zu CPAN vorgewühlt hat: dass es ein Programm "cpan" gibt, welches einem die Installation erheblich vereinfacht
  • was man korrigieren muss, wenn die Eingabe install DBD-mysql eine Fehlermeldung bekommt: "Warning: Cannot install DBD-mysql, don't know what it is.". Richtig: man muss "install DBD::mysql" eingeben. Weiß doch jeder, oder?
Glücklicherweise hatte ich dieses CPAN-Geraffel schonmal früher durchexerziert, so dass dieser Teil wenigstens nur 10 Minuten aufgehalten hat.
Nun rufe ich das Programm auf, das diese Module braucht. Was kommt?
Can't locate Connect.pm in @INC (@INC contains: /usr/lib/perl5/5.10.0/i586-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/i586-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i586-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .) at scripts/packages_xml_in line 4.

Mir reicht's schon wieder.
Ich wollte mich noch nie mit Perl beschäftigen. Wowereit.

Samstag, 10. Oktober 2009

apache2 mod_rewrite

Heute wollte ich ein Programm installieren, das ein Web-Interface zur Verfügung stellt, und dabei über eine .htaccess Datei auf die Apache RewriteEngine zugreift.

Ich habe Apache schon lange installiert, und auch schon etliche VirtualHosts für diverse Zwecke konfiguriert. Die RewriteEngine hatte ich zwar noch nie benötigt, aber nicht schlecht gestaunt, als das Programm (wpkgExpress) nicht lief.
Ok, wieder Rumsucherei, und im Wiki stand glücklicherweise "könnte mit .htaccess zu tun haben.

Um jetzt zu testen, ob das Modul mod_rewrite bei Apache installiert ist, sind auch schon kleinere Kopfstände notwendig, aber man bleibt ja eh gelenkig, wenn man Linux benutzt ;-}

Jetzt kommt's: mod_rewrite war nicht aktiv. Aber warum? In der (kruschtel, kruschtel) /etc/sysconfig/apache2 Datei war doch "rewrite" bei APACHE_MODULES eingetragen!

Wiederum durch Rumsucherei kam ich dahinter, dass es speziell mit SuSE zu tun haben könnte. Hier fand ich den Hinweis, doch einmal SuSEconfig laufen zu lassen. Und tatsächlich - jetzt geht's.

Sollte SuSEconfig tatsächlich seit Jahren nicht mehr gestartet worden sein? Wieder mal ein Linux-Mysterium.

Freitag, 9. Oktober 2009

vmware suspend

Jetzt bin ich schon wieder seit zwei Stunden am Rumbosseln.
Es geht darum, dass VMware Server 2 keine Möglichkeit eingebaut hat, beim Runterfahren die laufenden Clients in den Suspend-Zustand zu versetzen. Dadurch gibt es Lock-Files, die ein neues Starten der Clients verhindern.

Also rasch ein Script geklaut und wieder mal nachlesen müssen, wie man eigentlich ein Programm beim Shutdown starten lassen kann.
Ok, nach /etc/init.d kopieren und dann chkconfig -a vmsuspend laufen lassen.
Dann muss man noch nach rc5.d/ schauen (weiß man doch, oder?), ob dort die Datei K##vmsuspend mit einer kleineren Zahl als K##vmware vorhanden ist. Nicht gerade intuitiv, aber naja.

Da steht dann aber
lrwxrwxrwx 1 root root 9 8. Okt 15:17 K15vmware -> ../vmware
lrwxrwxrwx 1 root root 17 8. Okt 15:17 K16vmware-suspend -> ../vmware-suspend


Toll - das bedeutet: mein vmware-suspend Script wird aufgerufen, nachdem vmware beendet ist. So kann das natürlich nicht funktionieren, da mein Script ja noch vmware-Funktionen benutzen will.

Also wieder stundenlang nachgelesen, was LSB-Header sind und wie man damit die Reihenfolge steuern kann. Um es kurz zu machen: es klappt wieder mal nicht so, wie beschrieben. Es ist eine elende Rumprobiererei, weil das Konzept einfach von Fricklern ausgedacht wurde.

Warum ist das unter Windows eigentlich gar kein Thema?
Weil alle Dienste einfach die benötigten Dienste anfordern, so dass automatisch alle in der richtigen Reihenfolge geladen werden. So einfach kann es gehen.

Aber da ich nicht locker lasse ;-) habe ich es doch hinbekommen. Hier die Lösung:

#!/usr/bin/bash
# /etc/init.d/vmware-suspend
#
# chkconfig: 0356 19 07
# description: Stopping this service will suspend all running vmware guests
# (chkconfig vmware = 235 19 08)

### BEGIN INIT INFO
# Provides: vmsuspend
# Required-Start: $network VMware
# Should-Start:
# Required-Stop: VMware
# Should-Stop:
# Default-Start: 2 3 5
# Default-Stop: 0 6
# Short-Description: Suspends running vmware guests
# Description: Stopping this service will suspend all running vmware guests
### END INIT INFO

########################### syslog

SYSLOG=1
VERBOSE=0
LOGGER="/bin/logger"
FACILITY=`basename $0 | cut -d '.' -f1`

LOG() {
PRIORITY="`echo $* | cut -d ':' -f1`"
LOGMESSAGE="`echo $* | cut -d ':' -f2-`"
LOGMESSAGE="[$$]:$LOGMESSAGE"
if [ $VERBOSE ]; then
echo "`date '+%b %e %H:%M:%S'`: $LOGMESSAGE"
[ "$SYSLOG" = 1 ] && $LOGGER -t $FACILITY $LOGMESSAGE
else
[ "$SYSLOG" = 1 ] && $LOGGER -t $FACILITY $LOGMESSAGE
fi
}
########################### eof syslog

VMRUN_BIN=/usr/bin/vmrun

VM_TYPE=server
HOST="https://localhost:8333/sdk"

# vmx=$(echo ${VMX} | sed 's/ /\\ /g')
# vmx="${VMX// /\\ }"

# read username=.., password=..
. /root/.auth/vmware-auth


test -x $VMRUN_BIN || {
echo "$VMRUN_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi
}

. /etc/rc.status
rc_reset


case "$1" in
start)
echo -n "Starting vmsuspend (nothing to do) "
rc_status -v
;;

stop)
echo -n "vmsuspend: suspending vmware guests..."
# LOG LIST=$($VMRUN_BIN -T $VM_TYPE -h "$HOST" -u """$username""" -p """$password""" list 2>>/dev/null | grep "\.vmx")
for VMX in """$($VMRUN_BIN -T $VM_TYPE -h """$HOST""" -u """$username""" -p """$password""" list 2>>/dev/null | grep "\.vmx")"""
do
if [ -n "$VMX" ]
then
$VMRUN_BIN -T $VM_TYPE -h """$HOST""" -u """$username""" -p """$password""" suspend """$VMX"""
LOG "suspend $VMX (ExitCode=$?)"
fi
done
rc_status -v
;;

*)
echo "Usage: $0 {start|stop|}"
exit 1
;;

esac
rc_exit

Diese Datei (vmware-suspend) nach /etc/init.d schreiben und..
cd /etc/init.d
insserv -r
vmware-suspend
insserv -r vmware
insserv vmware
insserv
vmware-suspend
um die Aufruf-Reihenfolge festzulegen.

Das Script liest die Datei /root/.auth/vmware-auth ein. Diese sollte enthalten:
username=..
password=..

Nun werden beim Reboot/Shutdown des Host-Rechners alle laufenden VMs in den Suspend-Status gebracht.
Wenn man das unterlässt, bleiben evtl. .lck-Dateien übrig, die einen neuerlichen Start der VM verhindern.

Donnerstag, 8. Oktober 2009

linuxhaters

Ich habe gerade den linuxhaters Blog entdeckt.
Ich muss dazu sagen: ich habe den Namen linuxhasser nicht dort abgeguckt.

Aber es ist sicher kein Zufall, dass es mehr als einen Linux-Hasser auf der Welt gibt ;-)
Vermutlich gibt es solche Foren auch in weiteren Sprachen.

Frust!

Ich muss jetzt wirklich mal anfangen, mir meinen Frust mit Linux von der Seele zu schreiben.

Fast jedes Mal, wenn ich mit Linux etwas tun will, wird aus einem "mal eben schnell" ein viele Stunden oder gar Tage dauernder Frust. Da kann man eben zum Linux-Hasser werden :-\

Wenn es dann mal läuft, ist Linux wie ein Arbeitspferd, das zuverlässig auf seinem Acker seine Runden dreht.

Aber wehe, es ist eine Änderung nötig! Dann funktionieren die kleinsten Teilschritte oft nicht wie gedacht, und ich bin gezwungen, mich durch ellenlange, unverständlich geschriebene man-pages oder Internetforen zu wühlen. Wie viel Zeit habe ich schon verbraten, mich in Betriebssystem-Details einzulesen, die mich eigentlich überhaupt nicht interessieren! Ich will Lösungen - und bekomme von Linux immer weitere Probleme präsentiert.

Dieser Blog soll mir einerseits dazu dienen, ab und zu Dampf abzulassen (auch wenn das zusätzlich Zeit kostet). Andererseits will ich auch Lösungen für meine Problem(chen) posten, damit vielleicht andere etwas davon haben.

Ich bin seit über zwanzig Jahren Software-Entwickler (ich schreibe Programme für Windows), habe also durchaus Erfahrung mit Software und Betriebssystem-Macken.
Dennoch bin ich im Laufe der letzten 3-4 Jahre, seitdem ich mich auch mit Linux beschäftige, über so viele Fallen gestolpert, dass ich mich frage, wie ein Normal-User mit diesem Betriebssystem zurechtkommen soll.

Nichtsdestotrotz hat Linux seine Berechtigung, besonders wenn es um "Arbeitspferd"-Aufgaben im Serverbereich geht.

Wenn Linux aber den Sprung auf den Desktop des Normal-Users machen soll, muss sich noch einiges ändern. Unter anderem die Dinge, über die in diesem Blog berichtet werden wird.