Есть ли способ указать собственный путь поиска динамической библиотеки для исполняемого файла?
Я хочу, чтобы / 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
Это вызывало недоумение, пока я не понял, что они оба динамически связываются с libpython2.7.so, и оба ищут его в / usr / local / lib. Это было подтверждено с помощью ldd. Я могу получить старый Python, изменив /etc/ld.so.conf или $ LD_LIBRARY_PATH.
$ 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 (например, Vim со встроенным Python). Мой /etc/ld.so.conf содержит / usr / local / lib.
Добавьте это в свой .bashrc:
alias yum='LD_LIBRARY_PATH=/usr/lib64 yum'
Это гарантирует, что при запуске yum (и только yum) система будет искать общие объекты (динамические библиотеки) сначала в / usr / lib64, а не в / usr / local / lib. Это взлом, но, насколько я могу судить, он неизбежен.
Важный: Это решение применимо только в том случае, если ваша проблема связана с наличием 2.7.x в / usr / bin и 2.7.y в / usr / local / bin (например, 2.7.5 и 2.7.13). Если ваша проблема связана с конфликтом 2.x и 2.y (например, 2.4 и 2.7), это, вероятно, не поможет, а может даже ухудшить ваше положение. Удачи!