0

古いCentOSで新しいPython(2.7.3)を使用しようとしています。

Pythonを非標準の場所にインストールするレシピがあります:

 ./configure --prefix=#{install_path} --with-threads --enable-shared --with-zlib=/usr/include
 make
 make install

を使用して、検索する変数PATHとファイルを設定します。これはほとんど機能しているようです。LD_LIBRARY_PATHbin/python.so/etc/profile.d/

root以外のユーザーの場合、適切なPythonを取得します。

[vagrant@localhost ~]$ python
Python 2.7.3 (default, Dec 24 2012, 15:18:59) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

rootユーザーを使用すると、適切なPythonを取得できます。

[vagrant@localhost ~]$ sudo su
[root@localhost vagrant]# python
Python 2.7.3 (default, Dec 24 2012, 15:18:59) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

ただし、$LD_LIBRARY_PATHsudoを使用すると、ハックが少し不安定になるようです。

[vagrant@localhost ~]$ sudo python
python: error while loading shared libraries: libpython2.7.so.1.0:
cannot open shared object file: No such file or directory

変数は正しく見えますが、次のようになります。

[vagrant@localhost ~]$ sudo which python
/opt/Python-2.7.3/bin/python

に追加Defaults env_keep += "LD_LIBRARY_PATH"/etc/sudoersても機能しません。

sudo -i python動作します。 sudo -E python動作しません。

sudoなしで適切なPythonを取得するために何ができるのか興味があり-iますか?

関連している:

sudoがPATHを変更する-なぜですか?

https://stackoverflow.com/questions/12593336/odd-path-behaviour-on-centos-python

4

1 に答える 1

1

このブログ投稿に感謝します。$LD_LIBRARY_PATH構成でとリンクすることにより、の使用を控えることができLDFLAGSます。どこ#{ldlibpath}にありますか#{install_path}/lib

./configure --prefix=#{install_path} --with-threads --enable-shared \
--with-zlib=/usr/include LDFLAGS="-Wl,-rpath #{ldlibpath}"

ブログ投稿に記載されているように、configureを実行する前に、このldlibpathをmkdirする必要があります。

于 2012-12-24T22:34:47.120 に答える