在 CentOS 中安装 python 2.6
Posted
技术标签:
【中文标题】在 CentOS 中安装 python 2.6【英文标题】:Install python 2.6 in CentOS 【发布时间】:2010-11-30 16:54:51 【问题描述】:我有一个运行 CentOS 的 shell。
对于我正在做的一个项目,我需要 python 2.5+,但 centOS 非常依赖 2.4。
根据我的阅读,如果升级到 2.5,很多事情都会中断。
我想将 2.5 与 2.4 分开安装,但我不知道该怎么做。到目前为止,我已经下载了源 tarball,解压缩它,并做了一个./configure --prefix=/opt
,这是我希望它结束的地方。我现在可以make, make install
吗?还是还有更多?
【问题讨论】:
我个人过去经常使用 CentOS 并切换到 Ubuntu,因为 RedHat/CentOS 发行版非常糟糕(Python 2.4...)。如果你在政治上可以跳跃,那就去做吧。你会更快乐,再也不用担心这种事情了。 从源代码编译并将它们安装在/usr/local
(默认)中应该不会造成任何问题。或者,更好的是,丢弃 centos 并安装 debian:P
嗯? CentOS/RHEL 的重点是长期支持。如果可以选择切换到最新的发行版,那么对于有 CentOS 背景的人来说,切换到 Fedora 比切换到 Ubuntu 更有意义。
只是为了清楚,没有任何讽刺的侧边栏:是的。您可以将更新版本的 Python 从源代码安装到 /opt 中,就像您列出的那样。或者默认情况下它进入 /usr/local/bin,lib,share,man 这也很好用并且不会干扰 python 2.4,它仍然是 CentOS 5 中的版本。CentOS 6 带有 python 2.6.6。
toomuchdata.com/2014/02/16/how-to-install-python-on-centos
【参考方案1】:
如果您想让自己更轻松,可以使用 CentOS RPM 为新的 Python 版本在网上流传。例如。见:
http://www.geekymedia.com/python_26_centos.html
【讨论】:
【参考方案2】:不,就是这样。您可能想确保您也安装了所有可选的库头文件,这样您以后不必重新编译它。它们列在我认为的文档中。
另外,如果您使用make altinstall
,您甚至可以在标准路径中安装它。这样它就不会覆盖您当前的默认“python”。
【讨论】:
wget python.org/ftp/python/2.6.6/Python-2.6.6.tgz then ./configure them make altinstall【参考方案3】:Chris Lea 为 python26 RPM 提供了一个 YUM 存储库,它可以与 CentOS 上很多管理工具所需的“本机”2.4 共存。
至少对我有用的快速说明:
$ sudo rpm -Uvh http://yum.chrislea.com/centos/5/i386/chl-release-5-3.noarch.rpm
$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CHL
$ sudo yum install python26
$ python26
【讨论】:
这在 CentOS 5.4 下不起作用:没有可用的包 python26。【参考方案4】:当我遇到类似情况时,我通常会避开包管理器,尤其是如果破坏某些东西会很尴尬,例如生产服务器。相反,我会去 Activestate 下载他们的二进制包:
https://www.activestate.com/activepython/downloads/
这是通过运行将所有内容放入文件夹并且不涉及任何系统文件的脚本来安装的。事实上,您甚至不需要 root 权限来设置它。然后我将二进制文件的名称更改为 apy26 之类的名称,将该文件夹添加到 PATH 的末尾并开始编码。如果您使用apy26 setup.py install
安装软件包,或者如果您使用virtualenv 和easyinstall,那么您将拥有一个灵活的python 环境,而无需触及系统标准python。
编辑... 最近我做了一些工作来为 Linux 构建一个可移植的 Python 二进制文件,它应该可以在没有外部依赖的任何发行版上运行。这意味着可移植 Python 模块所需的任何二进制共享库都是构建的一部分,包含在 tarball 中并安装在 Python 的私有目录结构中。这样您就可以为您的应用程序安装 Python,而不会干扰系统安装的 Python。
My github site 有一个构建脚本,该脚本已在 Ubuntu Lucid 10.04 LTS 32 位和 64 位安装上进行了全面测试。我也在 Debian Etch 上构建了它,但那是不久前的事了,我不能保证我没有改变任何东西。最简单的方法是您只需将您选择的 Ubuntu Lucid 放在虚拟机中,使用 git clone git://github.com/wavetossed/pybuild.git
签出脚本,然后运行该脚本。
构建完成后,在任何最近的 Linux 发行版上使用 tarball。将其移动到/data1/packages/python272
以外的目录有一点问题,即您必须在移动目录之前运行包含的patchelf
来设置解释器路径。这会影响/data1/packages/python272/bin
中的所有二进制文件
所有这些都基于使用 RUNPATH 构建并复制相关的共享库。尽管该脚本位于多个文件中,但它实际上是一个以 /etc/rc.d 目录样式排列的长 shell 脚本。
【讨论】:
我不知道过去的许可证是什么,但不幸的是现在它不允许您在面向外部的服务器上使用 ActivePython,除非您购买商业版 ($$$)。 activestate.com/compare-editions 为了避免使用包管理器破坏服务器,您依赖第三方提供商的脚本?呵呵【参考方案5】:您始终可以制作自己的 RPM:
http://www.grenadepod.com/2009/12/26/building-python-2-6-4-rpm-for-centos-5-4/
【讨论】:
【参考方案6】:派对迟到了,但 OP 应该选择 Buildout 或 Virtualenv,并完全回避问题。
我目前在 Centos 服务器上工作,好吧,辛苦劳作是恰当的术语,我可以向所有人保证,在使用与火硬化长矛等效的软件时,我能够让眼泪眨眼的唯一方法是扩展.
【讨论】:
只安装python2.4的情况下,能不能用virtualenv安装python2.6? 当然可以。我相信在 virtualenv 中使用 --no-site-packages 选项,或者在 buildout 中构建一个 python。 不,virtualenv 只处理 python 模块/包及其版本。它仍然需要指向一个工作 python 解释器二进制文件(已经在系统上)。【参考方案7】:你也可以使用EPEL-repository,然后sudo yum install python26
来安装python 2.6
【讨论】:
如何使用 EPEL:fedoraproject.org/wiki/EPEL/FAQ#howtouse -- 但如果不是 32 位 x86,请记住用您的 arch 替换 i386 为我工作!我也需要这些用于另一个项目,所以我很高兴! 看来 Python 2.6 已经不在 epel 中了。 @mujimu,我认为他们可能会将 2.6 设为默认值而不是 2.4。所以像yum install python26
这样的命令可能只是yum install python
,这取决于操作系统的风格/版本。【参考方案8】:
缺少依赖:libffi.so.5 在这里:
ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/libffi-3.0.5-1.el5.kb.i386.rpm
【讨论】:
【参考方案9】:无需做 yum 或制作自己的 RPM。从源代码构建python26
。
wget https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz
tar -zxvf Python-2.6.6.tgz
cd Python-2.6.6
./configure && make && make install
可能存在依赖错误使用
yum install gcc cc
将安装路径(默认为/usr/local/bin/python
)添加到~/.bash_profile
。
它不会破坏yum
或任何其他依赖于python24
的东西。
【讨论】:
注意:需要 C 编译器才能工作。它看起来不像 CentOS 5 的库存(至少,我的 PATH 上没有) ./configure && make && make alt install (toomuchdata.com/2014/02/16/how-to-install-python-on-centos)【参考方案10】:rpm -Uvh http://yum.chrislea.com/centos/5/i386/chl-release-5-3.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CHL
rpm -Uvh ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/libffi-3.0.5-1.el5.kb.i386.rpm
yum install python26
python26
对于那些只是不知道的事情:=)
【讨论】:
【参考方案11】:试试epel
wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
sudo rpm -ivh epel-release-5-4.noarch.rpm
sudo yum install python26
python 可执行文件将在/usr/bin/python26
提供
mkdir -p ~/bin
ln -s /usr/bin/python26 ~/bin/python
export PATH=~/bin:$PATH # Append this to your ~/.bash_profile for persistence
现在,python
命令将执行 python 2.6
【讨论】:
感谢最后一点 - 我刚刚安装了 python26 并且想知道如何使“默认”(2.4)引用 2.6。创建一个符号链接并调整路径就可以了。 这显然可以工作......对于一个用户......直到一个用户用 3.0 或其他东西替换 python2.6......但它似乎是完成这项工作的推荐方法。我很难相信 CentOS 没有提供一个工具来选择要使用的各种同时安装的软件包的版本(我经常遇到 2 个版本的 Java、PostgreSQL 和现在的 python),比如 configure_python -s 2.6 和一切“神奇”落在窗帘后面,用户无需考虑未来几年的极端案例。 我认为原因是,作为一个主要用于服务器的企业操作系统,人们对Cent OS的开发并不多。一旦一切配置正确,除非偶尔进行安全更新,否则它们不会接触服务器。 @TomislavNakic-Alfirevic 我还没有尝试过,但github.com/yyuu/pyenv 看起来很有希望。它从源代码构建所有内容并将每个版本安装在它自己的目录中。看起来它更适合开发人员在自己的主目录中安装,但构建可以作为 sudo 运行并以共享目录为目标。 @MarkEvans Python 真的不是我的强项,所以我很容易出错,但 pyenv 看起来像是解决不同问题的方法。如果您将“python”替换为“JDK”,我绝对不会因为仅仅为了能够部署 Java 应用程序而编译它而感到兴奋:我想要其他人使用哪个版本编译、测试、重新测试和再次测试的 JDK 版本我正在使用的 CentOS。我倾向于将相同的逻辑应用于 Python。也就是说,我敢肯定 pyenv 会在某些用例中发挥出色,例如 dev。 (而不是部署)机器。【参考方案12】:我卸载了原始版本的 python (2.6.6) 并安装了 2.7(带有选项 make && make altinstall
)但是当我尝试使用 yum 安装某些东西时不起作用。
所以我解决了这个问题如下:
# ln -s /usr/local/bin/python /usr/bin/python
从http://rpm.pbone.net/index.php3/stat/4/idpl/20270470/dir/centos_6/com/python-2.6.6-36.el6.i686.rpm.html下载RPM包python-2.6.6-36.el6.i686.rpm
以root身份执行rpm -Uvh python-2.6.6-36.el6.i686.rpm
完成
【讨论】:
【参考方案13】:# yum groupinstall "Development tools"
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
下载并安装 Python 3.3.0
# wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2
# tar xf Python-3.3.0.tar.bz2
# cd Python-3.3.0
# ./configure --prefix=/usr/local
# make && make altinstall
下载并安装适用于 Python 3.3 的 Distribute
# wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.35.tar.gz
# tar xf distribute-0.6.35.tar.gz
# cd distribute-0.6.35
# python3.3 setup.py install
为 Python 3.3 安装和使用 virtualenv
# easy_install-3.3 virtualenv
# virtualenv-3.3 --distribute otherproject
New python executable in otherproject/bin/python3.3
Also creating executable in otherproject/bin/python
Installing distribute...................done.
Installing pip................done.
# source otherproject/bin/activate
# python --version
Python 3.3.0
【讨论】:
【参考方案14】:当你安装你的python版本(在本例中是python2.6)然后发出这个命令来创建你的virtualenv
:
virtualenv -p /usr/bin/python2.6 /your/virtualenv/path/here/
【讨论】:
【参考方案15】:在终端输入以下命令,在 CentOS 7 上安装 Python 3.6:
$ sudo yum install https://centos7.iuscommunity.org/ius-release.rpm
然后做:
$ sudo yum install python36u
您也可以安装任何版本而不是 3.6(如果您愿意的话),只需将 36 替换为您的版本号。
【讨论】:
以上是关于在 CentOS 中安装 python 2.6的主要内容,如果未能解决你的问题,请参考以下文章