我在CentOS 5.8上执行Python 2.7.3的altinstall,并且我想分发给出pip和所有爵士乐。但是,我无法理解正确的过程,并且分发的安装脚本给我带来了错误。在执行Python的altinstall时安装分发
命令的当前顺序:(最终将被用于我的一个项目中的安装脚本)
sudo yum groupinstall "Development tools"
sudo yum install {zlib,bzip2,openssl,ncurses}-devel
cd /tmp && mkdir python273 && cd python273
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
tar -xf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/usr/local --enable-shared
make
sudo make altinstall # installs to /usr/local/{bin,lib}
# Fix path to shared lib - http://stackoverflow.com/a/7880519/1076493
echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf > /dev/null
sudo ldconfig
# Distribute
wget http://python-distribute.org/distribute_setup.py
sudo python2.7 distribute_setup.py
# Done, install whatever interesting packages I want + clean up
sudo pip install virtualenv yolk bpython
rm -rf /tmp/python273
但是我得到试图运行distribute_setup.py
时拒绝“权限”,甚至尽管它与sudo一起运行。在root shell中执行它时工作正常。我猜测这个脚本并不尊重最初在制作子过程时使用的UID。
这让我感到惊讶;这是正确的顺序进行Python(2.7.3)的altinstall与分布?或者仅仅是分发安装脚本不尊重给定的UID?如果脚本是问题,我将如何使用sudo来运行它,因为我不希望我的设置需要root shell?
$ sudo python2.7 distribute_setup.py
Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.35.tar.gz
Extracting in /tmp/tmpE9UJke
Now working in /tmp/tmpE9UJke/distribute-0.6.35
Installing Distribute
Traceback (most recent call last):
File "distribute_setup.py", line 546, in <module>
sys.exit(main())
File "distribute_setup.py", line 543, in main
return _install(tarball, _build_install_args(options))
File "distribute_setup.py", line 87, in _install
if not _python_cmd('setup.py', 'install', *install_args):
File "distribute_setup.py", line 37, in _python_cmd
return subprocess.call(args) == 0
File "/usr/local/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/local/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/local/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied
我刚刚下载了tarball手动instea d使用distribute_setup。然而,即使它起作用,它也不能回答我的问题。 – timss 2013-03-18 21:27:16