Pfad zu einer dynamisch gelinkten Bibliothek im Nachhinein ändern

KobRheTilla

used register
Hi,

um eine für ältere Anwendungen kompatible OpenSSL-Installation vorzuhalten, habe ich ein Paket aus dem aktuell installierten Port erstellt und diese einfach nach /opt/compat/openssl-1.0.2t entpackt:

Code:
# cd /tmp
# pkg create openssl
# mkdir -p /opt/compat/openssl-1.0.2t
# cd /opt/compat/openssl-1.0.2t
# tar --strip-components 3 -xzf /tmp/openssl-1.0.2t,1.txz

Nun habe ich aber das Problem, dass die Bibliiotheken dort noch den Standardpfad zu z.B. libcrypto.so innehaben:

Code:
# ldd /opt/compat/openssl-1.0.2t/lib/libssl.so
/opt/compat/openssl-1.0.2t/lib/libssl.so:
    libcrypto.so.9 => /usr/local/lib/libcrypto.so.9 (0x801674000)
    libthr.so.3 => /lib/libthr.so.3 (0x801a84000)
    libc.so.7 => /lib/libc.so.7 (0x800821000)

Kann ich diesen Pfad irgendwie im Nachhinein ändern?

Rob
 
Der eleganteste Weg ist die libmap.conf: https://www.freebsd.org/cgi/man.cgi?query=libmap.conf Das ist im Prinzip das Gleiche wie die ldconfig(8) Variablen, nur etwas kontrollierbarer. Ich würde das erstmal so versuchen.

Alternativ kann man mit einem Hexeditor den Pfad in der Bibliothek ändern. Voraussetzung dafür ist, dass der neue Pfad exakt gleich lang ist. Dort kann man ausnutzen, dass Unix-Dateisysteme mehrere aufeinanderfolgende Slashs ignorieren. Also fehlende Zeichen zur benötigten Länge so auffüllen: /pfad/zur/////////bibliothek.so
 
Alternativ kann man mit einem Hexeditor den Pfad in der Bibliothek ändern.
was benutzt man denn da heute so mit FreeBSD?
Den letzten, den ich selbst benutzt habe, war noch unter KDE und hieß khexedit. Es war bei meinem Abschied von KDE eines der Dinge, für die ich keine Alternativen finden konnte. Hatte es auch seither nicht mehr gebraucht (hätte einen Fall gehabt, konnte da aber mittels dd in GNU/Linux Bit-genau Bytes ersetzen).
 
was benutzt man denn da heute so mit FreeBSD?
Den letzten, den ich selbst benutzt habe, war noch unter KDE und hieß khexedit. Es war bei meinem Abschied von KDE eines der Dinge, für die ich keine Alternativen finden konnte. Hatte es auch seither nicht mehr gebraucht (hätte einen Fall gehabt, konnte da aber mittels dd in GNU/Linux Bit-genau Bytes ersetzen).

Auf der Konsole editors/hexedit
 
Sollte eigentlich am komfortabelsten mit sysutils/patchelf gehen, z.B.
Code:
patchelf --set-rpath /opt/compat/openssl-1.0.2t/lib/ /opt/compat/openssl-1.0.2t/lib/libssl.so.102
 
Der eleganteste Weg ist die libmap.conf: https://www.freebsd.org/cgi/man.cgi?query=libmap.conf Das ist im Prinzip das Gleiche wie die ldconfig(8) Variablen, nur etwas kontrollierbarer. Ich würde das erstmal so versuchen.

Alternativ kann man mit einem Hexeditor den Pfad in der Bibliothek ändern. Voraussetzung dafür ist, dass der neue Pfad exakt gleich lang ist. Dort kann man ausnutzen, dass Unix-Dateisysteme mehrere aufeinanderfolgende Slashs ignorieren. Also fehlende Zeichen zur benötigten Länge so auffüllen: /pfad/zur/////////bibliothek.so

Dein Vorschlag ist widerlich genug, dass mein Finger über dem Reportbutton schwebte :-P.
 
Zurück
Oben