User Tools

Site Tools


doc:appunti:prog:python27_on_debian6

This is an old revision of the document!


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.

Archivi da installare

doc/appunti/prog/python27_on_debian6.1545214395.txt.gz · Last modified: 2018/12/19 11:13 by niccolo