This is an old revision of the document!
Table of Contents
Backport di Pyhton 2.7
Su Debian 6 Squeeze
Nel caso sia necessario fare il backporting di un Python più recente su una distribuzione molto datata, c'è una alternativa rispetto a scaricare i sorgenti e procedere alla compilazione. Si tratta di pyenv, che si definisce in questo modo: pyenv lets you easily switch between multiple versions of Python. It's simple and unobtrusive.
Il tool pyenv è in grado di automatizzare gran parte del processo, che comunque prevede il download e la compilazione dei sorgenti. Quindi è necessario installare a livello di systema i tool di compilazione e le gli header delle librerie da cui dipende Python. L'installazione del Python 2.7 e delle librerie aggiuntive desiderate invece può risiedere nella $HOME di un utente, senza disturbare il resto del sistema.
Queste le installazioni da fare come root:
apt-get install git gcc build-essential \ libmysqlclient-dev libadns1-dev \ libreadline-dev libgdbm-dev zlib1g-dev libsqlite3-dev \ libssl-dev libbz2-dev libncurses5-dev libdb-dev
Questa è l'installazione di pyenv effettuata nella directory utente $HOME/.pyenv/ che è sconsigliata se deve essere usata a livello di sistema:
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer \ > pyenv-installer cat pyenv-installer | bash
Più opportunamente si può usare una directory di sistema, pur eseguendo il tutto da utente non privilegiato. L'impostazione USE_GIT_URI serve ad utilizzre http invece di https per aggirare il problema di SSL su vecchie distribuzioni: tlsv1 alert protocol version.
ATTENZIONE: la directory destinazione (nell'esempio /usr/local/lib/pyenv
NON deve esistere, ma la directory parente deve essere scrivibile dall'utente che esegue il comando:
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer \ > pyenv-installer export USE_GIT_URI='yes' export PYENV_ROOT='/usr/local/lib/pyenv' cat pyenv-installer | bash
Dopo aver installato il tool pyenv è necessario inizializzare l'ambiente prima di usarlo (conviene aggiungere i comandi a .bashrc
o simili):
export PYENV_ROOT='/usr/local/lib/pyenv' export PYTHON_BUILD_CACHE_PATH=/usr/local/lib/pyenv/cache export PATH="/usr/local/lib/pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
Per evitare il problema di download su https, si è scaricato da altro host il file Python-2.7.13.tar.xz e lo si è messo nella directory PYTHON_BUILD_CACHE_PATH (che va creata), a questo punto si può eseguire
pyenv install 2.7.13
Per selezionare l'ambiente Python 2.7.13 appena installato invece di quello di sistema, si deve aggiungere questa variabile d'ambiente (oltre a quelle viste in precedenza):
export PYENV_VERSION=2.7.13
Dopo avere settato queste variabili è possibile installare librerie con il gestore pip (resta il problema del download automatico via https, per aggirarlo è necessario fare il download del pacchetto da un altro host e quindi eseguire pip install nomefile.tar.gz).
Ricollocazione dell'installazione
La directory $HOME/.pyenv/
non può essere spostata altrove facilmente. Ad esempio tutti gli script creati in $HOME/.pyenv/versions/2.7.13/bin/ contengono hard-coded il percorso di installazione originale.
Su Fedora 12
L'operazione è del tutto analoga, salvo che i pacchetti per la compilazione si chiamano in modo diverso:
yum install gcc git readline-devel zlib-devel bzip2-devel libsq3-devel openssl-devel
Per fare pip install lxml servono anche i seguenti pacchetti (probabilmente è necessario solo il libxml2-devel):
yum install libxml2-python libxslt-python libxml2-devel libxslt-devel
Su Fedora 12 c'è il grave problema della libreria SSL obsoleta, per cui tutti i download su protocollo https falliscono. È necessario scaricare i file localmente per altra via (scp) e poi usare i trucchi sopra per eseguire le installazioni da file locali.