Libraries suchen und finden

10/09/2011 - 09:45 von Stefan+Usenet | Report spam
Ich verzweifle hier gerade an der Installation eines (CAPT-)
Druckertreibers auf einem Debian/Squeeze-amd64 System. Nach einiger
Recherche laesst sich der Quelltext des Canon-Treibers compilieren, als
Debian-Paket verpacken und installieren - alleine, er druckt nicht.

Mit ausreichend Halbwissen ausgestattet, habe ich die Prozesse, von cups
ausgehend, mit strace nachverfolgt und bin dabei auf einen Fehler
aufmerksam geworden, dessen Klartextmeldung irgendwo in der Prozesskette
verschwindet und daher in keinem Logfile auftaucht:

| # Process 8220 attached
| # Elternprozess von 8220 ist /usr/bin/gs, das mit dem Canon-Treiber
| # als Argument aufgerufen worden ist
| execve("/usr/bin/c3pldrv", ["c3pldrv", "-i", "7", "-o", "10", ""], [/* 29 vars */] <unfinished ...>
| <... execve resumed> ) = 0
| brk(0) = 0x95cf000
| access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT
| mmap2(NULL, 8192, [...]) = 0xfffffffff7708000
| access("/etc/ld.so.preload", R_OK) = -1 ENOENT
| open("/etc/ld.so.cache", O_RDONLY) = 8
| fstat64(8, {st_mode=S_IFREG|0644, st_size™422, ...}) = 0
| mmap2(NULL, 99422, [...]) = 0xfffffffff76ef000
| close(8) = 0
| access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT
| open("/lib32/libdl.so.2", O_RDONLY) = 8
| read(8, "[...]", 512) = 512
| fstat64(8, {st_mode=S_IFREG|0644, st_size—36, ...}) = 0
| mmap2(NULL, 12408, [...]) = 0xfffffffff76eb000
| mmap2(0xf76ed000, 8192, [...]) = 0xfffffffff76ed000
| close(8) = 0
| access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT
| open("/lib32/tls/i686/sse2/cmov/libcaepcm.so.1", O_RDONLY) = -1 ENOENT
| stat64("/lib32/tls/i686/sse2/cmov", 0xffad341c) = -1 ENOENT
| open("/lib32/tls/i686/sse2/libcaepcm.so.1", O_RDONLY) = -1 ENOENT
| [...]
| open("/lib/i486-linux-gnu/tls/i686/sse2/cmov/libcaepcm.so.1", O_RDONLY) = -1 ENOENT
| stat64("/lib/i486-linux-gnu/tls/i686/sse2/cmov", 0xffad341c) = -1 ENOENT
| open("/lib/i486-linux-gnu/tls/i686/sse2/libcaepcm.so.1", O_RDONLY) = -1 ENOENT
| stat64("/lib/i486-linux-gnu/tls/i686/sse2", 0xffad341c) = -1 ENOENT
| open("/lib/i486-linux-gnu/tls/i686/cmov/libcaepcm.so.1", O_RDONLY) = -1 ENOENT
| [...]
| stat64("/usr/lib/i486-linux-gnu", 0xffad341c) = -1 ENOENT
| writev(2, [{"c3pldrv", 7}, {": ", 2}, {"error while loading shared libraries", 36}, {": ", 2}, {"libcaepcm.so.1", 14}, {": ", 2}, {"cannot open shared object file", 30}, {": ", 2}, {"No such file or directory", 25}, {"", 1}], 10) = 121
| exit_group(127) = ?
| # Process 8220 detached
| # woraufhin sich dann /usr/bin/gs dann mit der lapidaren meldung
| # "Can't receive READY message"
| # "**** Unable to open the initial device, quitting."
| # verabschiedet

So weit so schlecht - ohne library kann es ja auch gar nicht klappen. Nun
ist aber:

| sokrates:/etc# locate libcaepcm.so.1
| /usr/lib/libcaepcm.so.1
| /usr/lib/libcaepcm.so.1.0

...alles da, wo es hingehoert. Was um alles in der Welt bewegt das Programm
dazu, seine Bibliotheken in diesen (in meinen Augen erst einmal recht
abwegigen) Pfaden zu suchen? Die Verzeichnisnamen "sse2" und "cmov" tauchen
im gesamten Treiberpaket nirgendwo (explizit) auf, sind in der ld.so.conf
nicht eingetragen und werden auch sonst nie als Suchpfad verwendet.

Das muss doch irgendwie hinzubekommen sein...

Servus,
Stefan

http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan - nicht einer bemuttelt grauser oder auch begehrlicher.
(Sloganizer)
 

Lesen sie die antworten

#1 Bastian Blank
11/09/2011 - 09:09 | Warnen spam
Stefan Froehlich wrote:
Das muss doch irgendwie hinzubekommen sein...



Und von Hand ausgeführt tut es?

Bastian

Ähnliche fragen