Sziasztok,
a cimben szereplo shared libraries / ldconfig / LD_LIBRARY_PATH-rol lenne egy erdeklodo kerdesem. Igazabol nincs gondom, csak nem ertem teljesen hogy mukodik.
Adott egy python2.7.3 telepitett shell RHEL5.8-as masinan, ahonnan IBM MQ csatornakba kene belepni, lekerdezni, meghivni dolgokat stb. Ehhez van egy remek kis plugin a PyMQI .
Ahogy az mar lenni szokott, hogy ez rendesen mukodjon kellenek neki az mqm (mq cliens) lib-jei.
Na mar most kerdesem az lenne, hogy mi a kulonbseg es mi a jobb megoldas:
1, a user .bash_profile-jaba (vagy a kozos /etc/profiles-ba) bele rakom egyszeruen a kovetkezo sort:
export LD_LIBRARY_PATH=/opt/mqm/lib64
2, ldconfig paranncsal "ossze linkelni", vagyis $ldconfig /opt/mqm/lib64
Mindket verzio mukodik, en az 1-est hasznaltam, de a kedves es mindig okoskodo fejlesztok google-zas kozben talaltak egy doksit mi szerint ez nem helyes csak temp megoldasnak jo, hasznaljam a 2-es verziot.
Lehet igazuk van, de en nem vagom mi a kulonbseg a ketto kozott es melyiket hasznaljam inkabb?
koszi a tippeket elore is.
- 6708 megtekintés
Hozzászólások
Üdv,
hogy telepul az "mqm"? Gondolom nem csomagkezelovel, mivel a /opt-ban van... Igazabol telepiteskor kene a libnek gondoskodnia arrol, hogy elerheto legyen, akar ugy, hogy default helyre telepiti magat, akar ugy, hogy ldconfigot hiv a telepitesi path-al. Imho a te esetedben az ldconfig a szebb megoldas, de az idealis helyzet az lenne, ha az mqm rendesen, csomagbol lenne telepitve.
- A hozzászóláshoz be kell jelentkezni
mqm nem csomagbol van, hanem source-bol forditva. Tehat akkor az "ldconfig /opt/mqm/lib" parancs megfelel?
Miert jobb ez? Nem kotozkodom - igy fogom csinalni - csak tenyleg kivancsi vagyok :)
- A hozzászóláshoz be kell jelentkezni
LD_LIBRARY_PATH-ot szoktam használni, ha valami külön fordított dolgot nem standard helyre teszek.
Azért preferálom ezt a megoldást, mert nem szeretném, ha a linker "keresgélne", az adott library-k között, amikor nem az adott alkalmazást használom.
♲♻♲
- A hozzászóláshoz be kell jelentkezni
Egyébként meg tele van vele a google, hogy mér nem jó:
https://blogs.oracle.com/ali/entry/avoiding_ld_library_path_the
http://xahlee.info/UnixResource_dir/_/ldpath.html
Hozzáteszem nekem soha nem volt vele bajom, de ez nem jelent semmit.
♲♻♲
- A hozzászóláshoz be kell jelentkezni
igen jo tipp. koszi akkor ez lesz.
- A hozzászóláshoz be kell jelentkezni
Na igen csak az ld.so.conf használatával meg az a baj, hogy ha mondjuk két alkalmazásnak is kell két külön verzió egy adott lib-ből, akkor rohadtul nem fog menni az egyik amiatt, hogy mondjuk a sorrendben elsőt veszi, ami nem az igazi.
Lehet anyázni az LD_LIBRARY_PATH-ot, de csomószor nagyon nagy segítség, amikor a nagy cégeknek fogalmuk sincs, hogy kellene egy szoftvert összerakni a Linux-ra. :)
- A hozzászóláshoz be kell jelentkezni
Nos, koszi az elozoget, vegulis az ldconfigot hasznaltam.
Viszont amit nem ertek, idorol idore ujra kell "ldconfigolni". Ugye ahogy irtam, konkretan az IBM MQ kliens lib-jeit kell a python-nak ismernie. ldconfig nelkul a kovetkezot kapom:
Python 2.7.3 (default, Jul 19 2012, 10:58:55)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymqi
Traceback (most recent call last):
File "", line 1, in
File "/apps/Python-2.7.3/lib/python2.7/site-packages/pymqi.py", line 104, in
import pymqe, CMQC, CMQCFC, CMQXC
ImportError: libmqic_r.so: cannot open shared object file: No such file or directory
Az MQ kliens telepiteskor auto symlinkeli ezt a libmqic_r.so file-t az /usr/lib-be.
De ahoz hogy a python is lassa, a kovetkezo parancsot kell kiadni:
ldconfig /opt/mqm/lib
vagy ldconfig /usr/lib
Ez igy meg mindig rendben van, es rendes megoldasnak is tunik nekem, viszont rendszeresen ELFELEJTI ezt es idonkent (par hetenkent) ujra kell ldconfigolnom. Ez hogy lehet? Vmi otlet?
koszi
- A hozzászóláshoz be kell jelentkezni
Ha még nem késő: Az /etc/ld.so.conf (vagy hasonló) fájlba kellene beletenni a /opt/mqm/lib -et, aztán futtatni a ldconfig-ot (paraméter nélkül). Vagy be lehetne symlinkelni a kérdéses lib-eket az /opt/lib-be (vagy más neked tetsző helyre, ami benne van a ld.so.conf-ban).
- A hozzászóláshoz be kell jelentkezni