Hallo, Am Fri, 13 Jan 2006, Al Bogner schrieb:
Am Freitag, 13. Januar 2006 00:16 schrieb David Haller:
Am Thu, 12 Jan 2006, Al Bogner schrieb:
SuSE 10 - Amavisd lässt sich mit Runlevel-Editor nicht starten:
/etc/init.d/amavis start gab 7 (Programm wird nicht ausgeführt) zurück ^^^^^^^^^^^^^^^^^^^^^^^^!!!
Starting virus-scanner (amavisd-new):ERROR: MISSING REQUIRED BASIC MODULES:
Aeh, kam da keine Ausgabe _welche_ Module vermisst werden? das 'die' das naemlich obigen Teil der Fehlermeldung ausgibt gibt _gleichzeitig auch noch aus _welche_ Module fehlen. Vielleicht ist das Meldungsfenster zu schmal? Ruf '/etc/init.d/amavisd start' mal von Hand auf.
Das Fenster ist extrem schmal. Ich bin aus der restl. Meldung nicht schlau geworden.
/etc/init.d/amavisd start -bash: /etc/init.d/amavisd: Datei oder Verzeichnis nicht gefunden
Das haette natuerlich '/etc/init.d/amavis start' sein sollen, s.o.
/usr/sbin/amavisd ERROR: MISSING REQUIRED BASIC MODULES: Unix::Syslog BEGIN failed--compilation aborted at /usr/sbin/amavisd line 148.
Aha. Dir fehlt Unix::Syslog. Installier das nach. Sollte als RPM vorliegen (=> pin 'Unix/Syslog.pm'), zur Not hau's per 'cpan' rein: cpan -i Unix::Syslog (ich pflege mein perl sowieso nur noch per CPAN / per Hand und nicht per RPM, das perl liegt meist unbenutzt in /usr/, siehe meine andere Mail).
Mittlerweile kommt auch diese Meldung im Runlevel-Editor, vorher war es eine andere.
Ggfs. die Module wie oben nachinstallieren.
Schau mal mit less in die Datei /usr/sbin/amavisd (vorher ggfs. mit file schauen, ob das auch bei der 10.0 noch ein perlscript ist). Dort suche dann die Stelle:
file /usr/sbin/amavisd /usr/sbin/amavisd: perl script text
Ok :)
fetch_modules('REQUIRED BASIC MODULES', 1, qw( Exporter POSIX Fcntl ... )
und schau dann ob du alle dort aufgefuehrten Module installiert hast und ob diese auch verwendet werden koennen.
BEGIN { fetch_modules('REQUIRED BASIC MODULES', 1, qw( Exporter POSIX Fcntl Socket Errno Carp Time::HiRes IO::Handle IO::File IO::Socket IO::Socket::UNIX IO::Socket::INET IO::Wrap IO::Stringy Digest::MD5 Unix::Syslog File::Basename ^^^^^^^^^^^^!!
Mail::Field Mail::Address Mail::Header Mail::Internet Compress::Zlib MIME::Base64 MIME::QuotedPrint MIME::Words MIME::Head MIME::Body MIME::Entity MIME::Parser MIME::Decoder MIME::Decoder::Base64 MIME::Decoder::Binary MIME::Decoder::QuotedPrint MIME::Decoder::NBit MIME::Decoder::UU MIME::Decoder::Gzip64 Net::Cmd Net::SMTP Net::Server Net::Server::PreForkSimple ));
Obige brauchst du, folgende sind optional...
# with earlier versions of Perl one may need to add additional modules # to the list, such as: auto::POSIX::setgid auto::POSIX::setuid ... fetch_modules('OPTIONAL BASIC MODULES', 0, qw( Carp::Heavy auto::POSIX::setgid auto::POSIX::setuid MIME::Decoder::BinHex )); }
Sorry ich blick da nicht ganz durch. Da sind Module in Paketen zusammengefasst.
Ja. Das ist unangenehm. Sowohl fuer die, die die RPMs erstellen als auch fuer die Anwender.
perl-Unix-Syslog-0.100-29
Hm. Kopiere mal, wie von mir vorgeschlagen, obige "REQUIRED BASIC"
Liste aus /usr/sbin/amavisd (zwischen 'qw(' und dem naechsten ')') in
ein Editor-Fenster, ergaenze die '\' an den Zeilenenden und packe das
Ergebnis in die von mir geschriebene 'for'-Schleife.
Dann werden wir sehen, was perl _tatsaechlich_ an Modulen auch findet!
Und den dann als 'missing:' markierten Modulen kann man dann
"nachsteigen", per pin oder eben ggfs. am RPM vorbei per CPAN.
Langfristig, so meine Erfahrung, brauchst du so oder so das ein oder
andere Modul, das nicht bei der SUSE dabei ist, und das du auch nicht
als RPM (oder deb) findest, das du also sowieso selber installieren
musst. Und perl bringt ja ein eigenes Packagemanagement mit (CPAN /
CPANPLUS), und damit kannst du Pakete auch deinstallieren (auch wenn
das nicht direkt dokumentiert ist bzw. per 'cpan' bzw. 'perl -MCPAN'
zugaenglich ist. Ich haeng mal mein 'perluninstall.pl' an...
Habe also nicht zuviel Hemmungen RPM zu umgehen und Module in dein
vorhandes perl in /usr/ nachzuinstallieren, frueher oder spaeter wird
das aber muehsam. Spaetestens, wenn $foo Modul $bar >= x.y braucht und
dieses wiederum ein neueres perl als du hast. Spaetestens dann kommt
man nach meiner Erfahrung nicht drum rum ein aktuelleres perl in
/usr/local zu installieren. Denn das alte perl kannst du nicht einfach
aktualisieren, wenn du nicht dein halbes System aktualisieren
willst.[1]
Jedenfalls: ohne perl geht fast nix. Und ohne das mitgelieferte perl
funktionieren je nach Update alle oder keine der Binaries, die gegen
die libperl linken. Und das koennten mehr sein als man denkt... Siehe
oben also.
Noch mehr Details, Tips und Warnungen dazu kannst du von mir gerne
bekommen.
Aber schau erstmal, was konkret fehlt, ueberpruefe mit pin und rpm -V
was nicht passt... und dann sehen wir weiter.
-dnh
[1] Vergleiche deine Liste von apt... Und es gibt evtl. sogar noch ein
paar mehr. Kannst ja mal folgendes laufen lassen, wenn du's
verstanden hast... *eg*
OIFS="$IFS"; \
IFS=":"; \
find $PATH -type f -perm +111 -o -iname '*.so*' \
| while read -r f; do \
file "$f" | grep -q "ELF" && ldd "$f" | grep -q 'libperl' \
&& echo "$f" \
|| file "$f" | grep -qi "perl commands" && echo "$f";
done; \
IFS="$OIFS"
Die Ausgabe koennte man ggfs. noch an 'rpm -qf' verfuettern...
==== /usr/local/bin/perluninstall.pl ====
#!/usr/bin/perl
### nope, no '-w', we 'use warnings' later.
#
### Copyright (c)2004 David Haller
(Diva's Law of Software: quality is inversely proportional to price.) Stevo's Addendum to Diva's Law of Software: But try explaining that to the PHB