[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Problem mit ldconfig bzw. mit ld.so auf Debian Etch Server



Hallo,
auf meinem Server habe ich ein merkwürdiges Problem. Obwohl ich fast täglich 
Libraries installiere oder aktualisiere, habe ich eine (eigene) Library, die 
das System (ld.so, Apache) nicht findet.

Server: Debian Etch.

Das Problem begann damit, dass mein Apache-Modul diese eine Library plötzlich 
nicht laden konnte:
mod_cpweb.c:cp_handler: cannot load library [libcpbswebsite.so] for 
[cpbswebsite] on host [www.bkupserver.de] status: 20019, libhdl: 0x882d9b0
mod_cpweb.c:cp_handler: error description: /usr/lib/cpiapp/libcpbswebsite.so: 
undefined symbol: _ZTVN8comparat5BSWebE

Tatsächlich, ein Symbol wird nicht aufgelöst, auch der Linker verrät es, wenn 
ich mit "Wl -z,defs" arbeite. Da der Source einwandfrei war und kein Fehler 
zu entdecken, habe ich kurzerhand die Library komplett neu erstellt, ist 
klein und standardisiert. Etliche so erstellte Libraries funktionieren. Die 
nun neu erstellte Library vermeldet keinen Fehler mehr.

Ich habe auf dem Server nun die neue Library installiert, die alte gelöscht 
und den Apache neu gestartet. Es geht aber immer noch nicht (neuer Name 
ohne "cp" am Anfang):

mod_cpweb.c:cp_post_config: cannot load library [libbswebsite.so] for 
[bswebsite] on host [www.bkupserver.de] status: 20019, libhdl: 0x8249458
mod_cpweb.c:cp_post_config: error description: libbswebsite.so: cannot open 
shared object file: No such file or directory

Wenn ich ldconfig aufrufe, muß ich in diesem Fall vorher den Apache beenden - 
was natürlich richtig **Käse** ist. Dennoch:

# ldconfig -v | grep bsweb
        libcpbswebsite.so -> libbswebsite.so

Das einzige, was ldconfig macht, ist einen symbolischen Link vom alten 
Libnamen auf den neuen Namen zu erzeugen. Ich weiß nicht, wie das 
funktioniert. Ich staune immer noch.

Ich habe das System rebootet, habe manuell den Link entfernt, 
habe /etc/ld.so.cache gelöscht, Apache gestoppt, ldconfig aufgerufen und es 
bleibt immer das gleiche Ergebnis. Wie um Himmels willen kann ich dem System 
klar machen, dass ld.so die Library "libbswebsite.so" verwenden soll? 

Wieso stellt ldconfig eine Verbindung zwischen der alten und der neuen Lib her 
(SymLink)??? 

In der man-page von ldconfig steht:

BUGS
ldconfig, being a user process, must be run manually and has no means of 
dynamically determining and relinking shared libraries for use by ld.so when 
a new shared library is installed.

Gibt es da irgendeinen Workaround?

Der Parameter -l (ein kleines L) wird in der man-page so beschrieben:

-l     Library mode.  Manually link individual libraries.  Intended for use by 
experts only.

Hat jemand mehr Info dazu? Die Angabe ist ja nicht wirklich hilfreich.

Ich freue mich auf eine hilfreiche Antwort!

Manfred



Reply to: