Installa python 2.6 in CentOS


85

Ho una shell che esegue CentOS.

Per un progetto che sto facendo, ho bisogno di python 2.5+, ma centOS dipende abbastanza da 2.4.

Da quello che ho letto, una serie di cose si interromperanno se esegui l'aggiornamento a 2.5.

Voglio installare 2.5 separatamente da 2.4, ma non sono sicuro di come farlo. Finora ho scaricato il tarball dei sorgenti, l'ho decompresso e ho fatto una ./configure --prefix=/optcosa che è dove voglio che finisca. Posso solo adesso make, make install? O c'è di più?


8
Personalmente usavo molto CentOS e sono passato a Ubuntu a causa di quanto siano croccanti le distribuzioni RedHat / CentOS (Python 2.4 ...). Se politicamente puoi fare il salto, fallo. Sarai molto più felice e non dovrai più preoccuparti di questo tipo di cose.
Adam Nelson,

1
Compilare dal sorgente e installarli in /usr/local(impostazione predefinita) non dovrebbe causare alcun problema. O, ancora meglio, eliminare i centos e installare Debian: P
o0 '.

19
Eh? Il punto di CentOS / RHEL è il supporto a lungo termine. Se esiste un'opzione per passare all'ultima distribuzione, il passaggio a Fedora ha molto più senso che passare a Ubuntu per qualcuno con un background CentOS.
Muhammad Alkarouri

1
Giusto per essere chiari, senza alcuna barra laterale sarcastica: SI. Puoi installare una versione più recente di Python, dal sorgente, in / opt proprio come hai elencato. Oppure per impostazione predefinita va in / usr / local / {bin, lib, share, man} che funziona anche alla grande e non interferirà con python 2.4, che è ANCORA la versione in CentOS 5. CentOS 6 viene fornito con python 2.6.6.
IcarusNM

Risposte:


79

Potresti anche usare il repository EPEL e poi fare sudo yum install python26per installare python 2.6


8
Come usare EPEL: fedoraproject.org/wiki/EPEL/FAQ#howtouse - Ma ricorda di sostituire l'i386 con il tuo arco se non è x86 a 32 bit
rakslice

Ha funzionato per me! Avevo bisogno di questi anche per un altro progetto, quindi sono doppiamente felice!
rholmes

1
sembra che Python 2.6 non sia più in epel.
Mujimu

1
@mujimu, penso che potrebbero aver reso 2.6 il valore predefinito su 2.4. Quindi comandi come yum install python26possono dipendere solo yum install pythondal gusto / versione del sistema operativo.
James Oravec

31

Prova 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

L'eseguibile Python sarà disponibile all'indirizzo /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

Ora il pythoncomando verrà eseguitopython 2.6


Grazie per l'ultimo bit: ho appena installato python26 e mi chiedevo come fare in modo che il "default" (2.4) si riferisca al 2.6. La creazione di un collegamento simbolico e la regolazione del percorso lo hanno fatto.
Jay Sidri

Questo ovviamente funzionerà ... per un utente ... finché uno non sostituisce python2.6 con 3.0 o qualsiasi altra cosa ... ma sembra essere il modo consigliato per farlo. Ho problemi a credere che CentOS non sia dotato di uno strumento per selezionare la versione di vari pacchetti installati contemporaneamente da utilizzare (spesso incontro 2 versioni di Java, PostgreSQL e ora python), qualcosa come configure_python -s 2.6 e tutto "magicamente" va a posto dietro le quinte, senza che l'utente debba pensare a casi d'angolo anni nel futuro.
Tomislav Nakic-Alfirevic

Penso che il motivo sia che, essendo un sistema operativo aziendale utilizzato principalmente per i server, le persone non sviluppano molto su Cent OS. Una volta che tutto è configurato correttamente, non toccano il server se non per aggiornamenti di sicurezza occasionali.
Joyce Babu

1
@ TomislavNakic-Alfirevic Non l'ho ancora provato, ma github.com/yyuu/pyenv sembra promettente. Crea tutto dalla sorgente e installa ogni versione nella propria directory. Sembra che sia più mirato per l'installazione degli sviluppatori nelle proprie directory home, ma le build possono essere eseguite come sudo e indirizzare una directory condivisa.
Mark Evans

@MarkEvans Python non è davvero il mio punto di forza, quindi potrei facilmente sbagliarmi, ma pyenv sembra una soluzione per un problema diverso. Se sostituissi "python" con "JDK", non sarei sicuramente entusiasta di compilarlo solo per poter distribuire un'app Java: voglio la versione JDK che qualcun altro ha compilato, testato, ritestato e testato di nuovo con quale versione mai di CentOS che sto usando. Tenderei ad applicare la stessa logica a Python. Detto questo, sono sicuro che ci sono casi d'uso in cui pyenv brilla, come dev. (al contrario della distribuzione) macchine.
Tomislav Nakic-Alfirevic

28

Quando mi trovo in situazioni simili, generalmente evito il gestore di pacchetti, soprattutto se sarebbe imbarazzante rompere qualcosa, cioè un server di produzione. Invece, andrei su Activestate e scarica il loro pacchetto binario:

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

Questo viene installato eseguendo uno script che inserisce tutto in una cartella e non tocca alcun file di sistema. In effetti, non hai nemmeno bisogno dei permessi di root per configurarlo. Quindi cambio il nome del binario in qualcosa come apy26, aggiungo quella cartella alla fine del PERCORSO e inizio a codificare. Se installi pacchetti con apy26 setup.py installo se usi virtualenv e easyinstall, hai un ambiente python flessibile quanto ti serve senza toccare lo standard di sistema python.

Modifiche ... Recentemente ho lavorato per creare un binario Python portatile per Linux che dovrebbe essere eseguito su qualsiasi distribuzione senza dipendenze esterne. Ciò significa che qualsiasi libreria condivisa binaria necessaria al modulo Python portatile fa parte della build, inclusa nel tarball e installata nella struttura della directory privata di Python. In questo modo puoi installare Python per la tua applicazione senza interferire con il sistema installato Python.

Il mio sito GitHub ha uno script di compilazione che è stato accuratamente testato su Ubuntu Lucid 10.04 LTS sia per installazioni a 32 che a 64 bit. L'ho creato anche su Debian Etch ma è stato un po 'di tempo fa e non posso garantire di non aver cambiato qualcosa. Il modo più semplice per farlo è inserire la tua scelta di Ubuntu Lucid in una macchina virtuale, controllare lo script con git clone git://github.com/wavetossed/pybuild.gite quindi eseguire lo script.

Una volta creato, usa il tarball su qualsiasi distribuzione Linux recente. C'è un piccolo inconveniente nello spostarlo in una directory diversa dalla /data1/packages/python272quale è che devi eseguire l'incluso patchelfper impostare il percorso dell'interprete PRIMA di spostare la directory. Ciò influisce su tutti i file binari in/data1/packages/python272/bin

Tutto ciò si basa sulla creazione con RUNPATH e sulla copia delle librerie condivise dipendenti. Anche se lo script è in diversi file, è effettivamente un lungo script di shell organizzato nello stile delle directory /etc/rc.d.


4
Non so quale fosse la licenza in passato, ma sfortunatamente ora non ti consente di utilizzare ActivePython su server rivolti all'esterno a meno che non acquisti la Business Edition ($$$). activestate.com/compare-editions
Nate

2
per evitare di rompere un server con il gestore di pacchetti ti affidi a script di provider di terze parti? eh
akostadinov

26

Non c'è bisogno di fare yum o creare il tuo RPM. Crea python26dalla fonte.

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

Può esserci un errore di dipendenza nell'uso

yum install gcc cc

Aggiungi il percorso di installazione ( /usr/local/bin/pythonper impostazione predefinita) a ~/.bash_profile.

Non si romperà yumo altre cose da cui dipendono python24.


1
Nota: per il funzionamento è necessario il compilatore AC. Non sembra che uno venga fornito con CentOS 5 (almeno, il mio non ne ha uno sul PERCORSO)
Cody S

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

24

No, è tutto. Potresti voler assicurarti di aver installato anche tutte le intestazioni di libreria opzionali in modo da non doverle ricompilare in seguito. Sono elencati nella documentazione credo.

Inoltre, puoi installarlo anche nel percorso standard, se lo fai make altinstall. In questo modo non sovrascriverà il tuo "python" predefinito corrente.


4
wget python.org/ftp/python/2.6.6/Python-2.6.6.tgz quindi ./configure make altinstall
Olivier Refalo

12

Chris Lea fornisce un repository YUM per gli RPM python26 che possono coesistere con il 2.4 "nativo" necessario per alcuni strumenti di amministrazione su CentOS.

Istruzioni rapide che hanno funzionato almeno per me:

$ 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
Questo non ha funzionato con CentOS 5.4: nessun pacchetto python26 disponibile.
Joseph Turian


3

Quando installi la tua versione di python (in questo caso è python2.6), emetti questo comando per creare il tuo virtualenv:

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

2

In ritardo alla festa, ma l'OP sarebbe dovuto andare con Buildout o Virtualenv e aggirare completamente il problema.

Attualmente sto lavorando su un server Centos, beh, faticare sarebbe il termine corretto e posso assicurare a tutti che l'unico modo in cui sono in grado di ricacciare indietro le lacrime mentre uso gli equivalenti software delle lance temprate dal fuoco, è costruire.


2
puoi usare virtualenv per installare python2.6 quando è installato solo python2.4?
Collin Anderson

Certamente. Usa l'opzione --no-site-packages in virtualenv credo, o crea un python in buildout.
chiggsy

NO, virtualenv si occupa solo di moduli / pacchetti python e delle loro versioni. Deve ancora essere puntato su un binario dell'interprete Python funzionante (già sul 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

per cose che proprio non so: =)


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

Scarica e installa 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

Scarica e installa Distribute for 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

Installa e usa virtualenv per 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

Ho disinstallato la versione originale di python (2.6.6) e installato 2.7 (con opzione make && make altinstall) ma quando ho provato a installare qualcosa con yum non ha funzionato.

Quindi ho risolto questo problema come segue:

  1. # ln -s /usr/local/bin/python /usr/bin/python
  2. Scarica il pacchetto RPM python-2.6.6-36.el6.i686.rpm da http://rpm.pbone.net/index.php3/stat/4/idpl/20270470/dir/centos_6/com/python-2.6. 6-36.el6.i686.rpm.html
  3. Esegui come root rpm -Uvh python-2.6.6-36.el6.i686.rpm

Fatto


-1

Digita i seguenti comandi sul terminale per installare Python 3.6 su CentOS 7:

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

Quindi fa :

$ sudo yum install python36u 

Puoi anche installare qualsiasi versione invece di 3.6 (se lo desideri) sostituendo semplicemente 36 con il tuo numero di versione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.