Python/upgrade

From zeroincombenze
Jump to: navigation, search
Tb arrow up.jpg File:Tb upgrade.png File:Tb upgrade.png File:Tb upgrade.png File:Tb upgrade.png Lang english.png

Aggiornamento di Python

Python è un linguaggio di programmazione Questa pagina illustra come aggiornare la versione standard 2.6.6 fornita su CentOS con la V2.7.9 richiesta da numerosi package. L'aggiornamento documentato in questa pagina è sicuro e reversibile.

32px warning.jpg
Non tentare di aggiornare Python sulla versione già esistente di CentOS: questa operazione provocherebbe la rottura di alcune funzionalità di CentOS, tra cui yum.

L'aggiornamento di Python non si propaga automaticamente ai package installati. Dopo che l'aggiornamento è stato completato con successo è necessario procedere alla reinstallazione dei package. Si consigli di leggere la documentazione relativa ai package di python.

32px warning.jpg
I seguenti package, dopo l'aggiornamento possono sparire, soprattutto sui server 64 bit.
  1. . acutilmodule
  2. . bzrlib
  3. . cairo
  4. . coverage
  5. . Crypto
  6. . curl
  7. . dsml
  8. . ethtool
  9. . gpgme
  10. . iwlib
  11. . jinja2
  12. . ldap
  13. . ldapurl
  14. . ldif
  15. . libxml2mod
  16. . libxslt
  17. . lxml
  18. . markupsafe
  19. . PIL
  20. . psutil
  21. . psycopg2
  22. . pycurl
  23. . pyHnj
  24. . reportlab
  25. . rpm
  26. . selinux
  27. . sgmlop
  28. . simplejson
  29. . snack
  30. . yaml

Prerequisiti

Vedere prerequisiti di installazione


Verifica installato

Il comando per visualizzare la versione installata:

python -V


Sequenza operativa

Utenti

Non è necessario definire utenti specifici.


Software e Package preparatori

Dipendono dal sistema operativo e dal tipo di installazione. Vedere package di installazione

Per Linux CentOS e con core Red Hat sono da installare:

yum install zlib-devel
yum install bzip2-devel
yum install openssl-devel
yum install ncurses-devel
yum install sqlite-devel
# per gestire editing in interprete python
yum install readline-devel
# importante! per gestire file xml
yum install libxml2-devel
# Se si vuole il supporto tk
yum install tk-devel
# Se si vuole il debugger gdbm
yum install gdbm-devel
#
yum install db4-devel
#
yum install libpcap-devel
yum install xz-devel

Si consiglia di creare una directory per i package da reimportare:

mkdir /usr/local/lib64/python2.7
mkdir /usr/local/lib64/python2.7/site-packages/
chown -R root:root /usr/local/lib64/python2.7
chmod -R +r /usr/local/lib64/python2.7

Notare che /usr/local/lib/python2.7 diventerà un symbolic link ai package già presenti


Download

32px warning.jpg
Per abilitare la compilazione delle librerie al comando ./configure sono state aggiunte le opzioni --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"


La versione più recente ad oggi è la V2.7.9; per Linx i comandi per il download sono:

cd /tmp
wget --no-check-certificate https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz
tar -xf Python-2.7.9.tar.xz
cd Python-2.7.9
./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
 make && make altinstall #<-- Importante altinstall per evitare problemi con installato

Ora la versione originale V2.6.6 è rimasta intatta nella directory /usr/bin. Verifica con

ls -ltr /usr/bin/python*

Il risultato è:

-rwxr-xr-x 1 root root 1418 Jan 22  2014 /usr/bin/python2.6-config
-rwxr-xr-x 2 root root 4864 Jan 22  2014 /usr/bin/python2.6
-rwxr-xr-x 2 root root 4864 Jan 22  2014 /usr/bin/python
lrwxrwxrwx 1 root root    6 Feb 17  2014 /usr/bin/python2 -> python
lrwxrwxrwx 1 root root   16 Feb 17  2014 /usr/bin/python-config -> python2.6-config

La nuova versione V2.7.9 è in locale. Verifica con:

ls -ltr /usr/local/bin/python*

Il risultato è:

-rwxr-xr-x 1 root root 6224569 Apr 18 09:43 /usr/local/bin/python2.7
-rwxr-xr-x 1 root root    1687 Apr 18 09:44 /usr/local/bin/python2.7-config

Se nella path la directory /usr/local/bin è antecedente /usr/bin, la V2.7.9 è prioritaria e disponibile all'uso. Verifica con:

python -V
which python

Il risultato è:

V2.7.9
./python

Ritornando della home directory, si può verificare che python è ancora la V2.6.6

cd
python -V
which python

Il risultato è:

V2.6.6
/usr/bin/python

Per verificare il funzionamento eseguire i regression test:

cd /tmp/Python-2.7.9
./python Lib/test/regrtest.py -j3 


Notare che alcuni test falliscono o sono ignorati. Sono correttamente ignorati i seguenti test:

  • test_bsddb* (non più supportati da python)
  • test_bsddb3 (non più supportato da python)
  • test_dbm (se non installato modulo gdbm-devel)
  • test_idle (se non installato modulo tcl)
  • test_tcl (se non installato modulo tcl)
  • test_tk (se non installato modulo tcl)
  • test_ttk_guionly (se non installato modulo tcl)
  • test_ttk_textonly (se non installato modulo tcl)
  • test_gdbm (test assente !?)
  • test_gdb (il debugger gdb non permette il test, da approfondire)

Attenzione ai seguenti test:

  • test_readline

Il fallimento del test readline implica l'impossibilità di utilizzare i tasti freccia per richiamare i comandi in editing nell'interprete python o potrebbe implicare qualche problema in editing durante le sessioni interattive.

Controllare anche che le dipendenze siano le stesse o assimilabili:

ldd /usr/bin/python
ldd ./python

Ora provare i collegamenti con alcune librerie (non deve apparire alcun messaggio di errore)

./python
>>>import os
>>>import libxml2

Se viene segnalato errore riferente a libxml2 leggere Aggiornamento moduli aggiuntivi


Configurazione

Per rendere attiva la nuova creare un link

ln -s /usr/local/bin/python2.7 /usr/local/bin/python

La rimozione del link permette di ripristinare la V2.6.6

Se si vuole riportare i package già installati sulla nuova versione, eseguire un link:

ln -s /usr/lib/python2.6/site-packages /usr/local/lib/python2.7/site-packages

correggendo opportunamente i percorsi.


Controlli Post-Installazione

Ripetere i regression test:

python -m test.regrtest -j3


Troubleshooting

N/D


Collegamenti esterni