Instalar python 2.6 en CentOS


85

Tengo un shell que ejecuta CentOS.

Para un proyecto que estoy haciendo, necesito python 2.5+, pero centOS depende bastante de 2.4.

Por lo que he leído, varias cosas se romperán si actualiza a 2.5.

Quiero instalar 2.5 por separado de 2.4, pero no estoy seguro de cómo hacerlo. Hasta ahora he descargado el archivo tar de origen, lo he desmarcado e hice un ./configure --prefix=/optque es donde quiero que termine. ¿Puedo ahora solo make, make install? ¿O hay más?


8
Yo personalmente solía usar mucho CentOS e hice el cambio a Ubuntu debido a lo crudas que son las distribuciones de RedHat / CentOS (Python 2.4 ...). Si políticamente puedes dar el salto, hazlo. Estarás mucho más feliz y ya no tendrás que preocuparte por este tipo de cosas.
Adam Nelson

1
Compilar desde la fuente e instalarlos /usr/local(por defecto) no debería causar ningún problema. O, mejor aún, elimine centos e instale debian: P
o0 '.

19
¿Eh? El objetivo de CentOS / RHEL es el soporte a largo plazo. Si hay una opción para cambiar a la última distribución, entonces cambiar a Fedora tiene mucho más sentido que cambiar a Ubuntu para alguien con experiencia en CentOS.
Muhammad Alkarouri

1
Para ser claro, sin ninguna barra lateral sarcástica: SÍ. Puede instalar una versión más reciente de Python, desde la fuente, en / opt tal como lo enumeró. O por defecto va a / usr / local / {bin, lib, share, man} que también funciona muy bien y no interferirá con python 2.4, que TODAVÍA es la versión en CentOS 5. CentOS 6 viene con python 2.6.6.
IcarusNM

Respuestas:


79

También puede usar el repositorio EPEL y luego hacerlo sudo yum install python26para instalar Python 2.6


8
Cómo usar EPEL: fedoraproject.org/wiki/EPEL/FAQ#howtouse - Pero recuerde reemplazar el i386 con su arco si no es x86 de 32 bits
rakslice

¡Trabajó para mi! ¡También los necesitaba para otro proyecto, así que estoy doblemente feliz!
rholmes

1
Parece que Python 2.6 ya no está en epel.
mujimu

1
@mujimu, creo que pueden haber hecho de 2.6 el valor predeterminado sobre 2.4. Por lo tanto, los comandos como yum install python26pueden yum install pythondepender solo del sabor / versión del sistema operativo.
James Oravec

31

Prueba 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

El ejecutable de Python estará disponible en /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

Ahora, el pythoncomando se ejecutarápython 2.6


Gracias por el último bit: acabo de instalar python26 y me preguntaba cómo hacer que el 'predeterminado' (2.4) se refiera al 2.6. La creación de un enlace simbólico y el ajuste de la ruta lo hicieron.
Jay Sidri

Obviamente, esto funcionará ... para un usuario ... hasta que uno reemplace python2.6 con 3.0 o lo que sea ... pero parece ser la forma recomendada de hacerlo. Tengo problemas para creer que CentOS no viene con una herramienta para seleccionar la versión de varios paquetes instalados simultáneamente para usar (a menudo encuentro 2 versiones de Java, PostgreSQL y ahora python), algo como configure_python -s 2.6 y todo "mágicamente" se coloca detrás de las cortinas, sin que el usuario tenga que pensar en casos de esquina en el futuro.
Tomislav Nakic-Alfirevic

Creo que la razón es que, al ser un sistema operativo empresarial que se utiliza principalmente para servidores, la gente no desarrolla mucho en Cent OS. Una vez que todo está configurado correctamente, no tocan el servidor a menos que se realicen actualizaciones de seguridad ocasionales.
Joyce Babu

1
@ TomislavNakic-Alfirevic No lo he probado todavía, pero github.com/yyuu/pyenv parece prometedor. Construye todo desde la fuente e instala cada versión en su propio directorio. Parece que está dirigido más a la instalación de los desarrolladores en sus propios directorios de inicio, pero las compilaciones se pueden ejecutar como sudo y apuntar a un directorio compartido.
Mark Evans

@MarkEvans Python no es realmente mi punto fuerte, por lo que podría equivocarme fácilmente, pero pyenv parece una solución para un problema diferente. Si reemplaza "python" con "JDK", definitivamente no estaría encantado de compilarlo solo para poder implementar una aplicación Java: quiero la versión JDK que otra persona compiló, probó, volvió a probar y volvió a probar con cualquier versión de CentOS que estoy usando. Yo tendería a aplicar la misma lógica a Python. Dicho esto, estoy seguro de que hay casos de uso en los que pyenv brilla, como dev. (a diferencia de las máquinas de implementación).
Tomislav Nakic-Alfirevic

28

Cuando me encuentro en situaciones similares, generalmente evito el administrador de paquetes, especialmente si sería vergonzoso romper algo, es decir, un servidor de producción. En su lugar, iría a Activestate y descargaría su paquete binario:

https://www.activestate.com/activepython/downloads/

Esto se instala ejecutando un script que coloca todo en una carpeta y no toca ningún archivo del sistema. De hecho, ni siquiera necesita permisos de root para configurarlo. Luego cambio el nombre del binario a algo como apy26, agrego esa carpeta al final del PATH y comienzo a codificar. Si instala paquetes con apy26 setup.py installo si usa virtualenv y easyinstall, entonces tiene un entorno de Python tan flexible como necesita sin tocar el estándar del sistema Python.

Ediciones ... Recientemente he trabajado para crear un binario Python portátil para Linux que debería ejecutarse en cualquier distribución sin dependencias externas. Esto significa que todas las bibliotecas compartidas binarias que necesita el módulo Python portátil son parte de la compilación, se incluyen en el tarball y se instalan en la estructura de directorios privados de Python. De esta manera, puede instalar Python para su aplicación sin interferir con el sistema Python instalado.

Mi sitio github tiene un script de compilación que se ha probado a fondo en instalaciones de Ubuntu Lucid 10.04 LTS de 32 y 64 bits. También lo construí en Debian Etch, pero eso fue hace un tiempo y no puedo garantizar que no haya cambiado algo. La forma más fácil de hacer esto es simplemente poner su elección de Ubuntu Lucid en una máquina virtual, verificar el script con git clone git://github.com/wavetossed/pybuild.gity luego ejecutar el script.

Una vez que lo haya construido, use el tarball en cualquier distribución reciente de Linux. Hay un pequeño inconveniente en moverlo a un directorio que no sea el /data1/packages/python272que es que debe ejecutar el incluido patchelfpara establecer la ruta del intérprete ANTES de mover el directorio. Esto afecta a los binarios en/data1/packages/python272/bin

Todo esto se basa en compilar con RUNPATH y copiar las bibliotecas compartidas dependientes. Aunque el script está en varios archivos, es efectivamente un script de shell largo organizado al estilo de los directorios /etc/rc.d.


4
No sé cuál era la licencia en el pasado, pero desafortunadamente ahora no le permite usar ActivePython en servidores externos a menos que compre la Business Edition ($$$). activestate.com/compare-editions
Nate

2
para evitar romper un servidor con el administrador de paquetes, ¿confía en los scripts de un proveedor externo? eh
akostadinov

26

No es necesario hacer yum o crear sus propias RPM. Construya python26desde la fuente.

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

Puede haber un uso de error de dependencia

yum install gcc cc

Agregue la ruta de instalación ( /usr/local/bin/pythonpor defecto) a ~/.bash_profile.

No se romperá yumni ninguna otra cosa de la que dependa python24.


1
Nota: Se requiere un compilador de CA para que esto funcione. No parece que uno venga de serie con CentOS 5 (al menos, el mío no tiene uno en el PATH)
Cody S

./configure && make && make alt install ( toomuchdata.com/2014/02/16/how-to-install-python-on-centos )
luismartingil

24

No, eso es. Es posible que desee asegurarse de tener instalados todos los encabezados de biblioteca opcionales para no tener que volver a compilarlos más tarde. Están enumerados en la documentación, creo.

Además, puede instalarlo incluso en la ruta estándar si lo hace make altinstall. De esa manera, no anulará su "python" predeterminado actual.


4
wget python.org/ftp/python/2.6.6/Python-2.6.6.tgz luego ./configurelos make altinstall
Olivier Refalo

12

Chris Lea proporciona un repositorio YUM para python26 RPM que puede coexistir con el 2.4 'nativo' que se necesita para bastantes herramientas de administración en CentOS.

Instrucciones rápidas que funcionaron al menos para mí:

$ 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

3
Esto no funcionó en CentOS 5.4: no hay paquete python26 disponible.
Joseph Turian


3

Cuando instale su versión de python (en este caso es python2.6), emita este comando para crear su virtualenv:

virtualenv -p /usr/bin/python2.6 /your/virtualenv/path/here/

2

Llegó tarde a la fiesta, pero el OP debería haberse ido con Buildout o Virtualenv y eludió el problema por completo.

Actualmente estoy trabajando en un servidor Centos, bueno, trabajar duro sería el término adecuado y puedo asegurarles a todos que la única forma en que puedo contener las lágrimas mientras uso los equivalentes de software de lanzas endurecidas al fuego, es construir.


2
¿Puedes usar virtualenv para instalar python2.6 cuando solo está instalado python2.4?
Collin Anderson

Ciertamente. Use la opción --no-site-packages en virtualenv, creo, o cree una python en buildout.
chiggsy

NO, virtualenv solo se ocupa de módulos / paquetes de Python y sus versiones. Todavía necesita apuntar a un binario de intérprete de Python que funcione (ya en el sistema).
Jason Antman



1
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

para dos que simplemente no saben: =)


1
# yum groupinstall "Development tools"
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

Descargue e instale 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

Descargue e instale Distribute para Python 3.3

# 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

Instalar y usar virtualenv para Python 3.3

# 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

0

Desinstalé la versión original de python (2.6.6) e instalé 2.7 (con opción make && make altinstall) pero cuando intenté instalar algo con yum no funcionó.

Entonces resolví este problema de la siguiente manera:

  1. # ln -s /usr/local/bin/python /usr/bin/python
  2. Descargue el paquete RPM python-2.6.6-36.el6.i686.rpm de http://rpm.pbone.net/index.php3/stat/4/idpl/20270470/dir/centos_6/com/python-2.6. 6-36.el6.i686.rpm.html
  3. Ejecutar como root rpm -Uvh python-2.6.6-36.el6.i686.rpm

Hecho


-1

Escriba los siguientes comandos en la terminal para instalar Python 3.6 en CentOS 7:

$ sudo yum install https://centos7.iuscommunity.org/ius-release.rpm

Entonces hazlo :

$ sudo yum install python36u 

También puede instalar cualquier versión en lugar de 3.6 (si lo desea) simplemente reemplazando 36 por su número de versión.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.