有没有办法指定一个可执行文件的自定义dynamic库searchpath?
我想要/ usr / bin / python引用/usr/lib64/libpython2.7.so和/usr/local/bin/python2.7来使用/usr/local/lib/libpython2.7.so。
目前,我已经将Python 2.7.5作为/usr/bin/python(旧的,由CentOS使用)和Python 2.7.13作为/usr/local/bin/python2.7(新的用于开发)。 但是,这两个可执行文件都给我Python 2.7.13。
$ /usr/bin/python2.7 --version#Python 2.7.5 Python 2.7.13 ←错误! $ /usr/local/bin/python2.7 --version#Python 2.7.13 Python 2.7.13
他们绝对是独立的可执行文件。
-rwxr-xr-x. 1 root root 7136 Nov 5 2016 /usr/bin/python2.7 -rwxr-xr-x. 1 root root 11368 May 13 18:21 /usr/local/bin/python2.7
这是令人困惑的,直到我意识到它们都dynamic链接到libpython2.7.so,并且都在/ usr / local / lib中search它。 这是使用ldd确认的。 我可以通过修改/etc/ld.so.conf或$ LD_LIBRARY_PATH来得到旧的Python。
$ LD_LIBRARY_PATH = / usr / lib64 / usr / bin / python --version#Python 2.7.5 Python 2.7.5 $ LD_LIBRARY_PATH = / usr / lib64 / usr / local / bin / python --version#Python 2.7.13 Python 2.7.5 ←错误!
这是一个问题,因为yum依赖于系统Python。 如果我解决了这个问题(例如通过修改/etc/ld.so.conf),它会打破Python 2.7.13以及依赖于这个更新的libpython2.7.so(例如embeddedPython的Vim)的东西。 我的/etc/ld.so.conf包含/ usr / local / lib。
将此添加到您的.bashrc中:
alias yum='LD_LIBRARY_PATH=/usr/lib64 yum'
这将确保在运行yum(仅yum)时,系统将首先在/ usr / lib64中search共享对象(dynamic库),而不是/ usr / local / lib。 这是一个黑客,但据我所知,这是不可避免的。
重要提示:只有当/ usr / bin中的2.7.x和/ usr / local / bin中的2.7.y(例如2.7.5和2.7.13)出现问题时,此解决scheme才适用。 如果你的问题是由于2.x和2.y相冲突(例如2.4和2.7),那么这可能不会有帮助,甚至可能让事情变得更糟。 祝你好运!