# [python 2.7] Safe Update (+ noticina x Wicd)

## .:deadhead:.

Ciao scrivo queste note per chi è curioso e/o si trova nel periglio :

È stato stabilizzato python 2.7. Come fare ad usarlo?

Primo assicuriamoci che sia installato:

```

# eix -e python

[I] dev-lang/python

     Available versions:  

        (2.4)   2.4.6

        (2.5)   2.5.4-r4

        (2.6)   2.6.5-r3 2.6.6-r1 2.6.6-r2

        (2.7)   2.7.1-r1

        (3.1)   3.1.2-r4 3.1.3-r1

        (3.2)   [M]~3.2

        {-berkdb bootstrap build +cxx doc elibc_uclibc examples gdbm ipv6 +ncurses +readline sqlite +ssl +threads tk +wide-unicode wininst +xml}                                                                                                                            

     Installed versions:  2.6.6-r2(2.6)(00:47:00 28/02/2011)(ncurses readline ssl threads wide-unicode xml -berkdb -build -doc -elibc_uclibc -examples -gdbm -ipv6 -sqlite -tk -wininst) 2.7.1-r1(2.7)(00:56:09 25/03/2011)(ncurses readline ssl threads wide-unicode xml -berkdb -build -doc -elibc_uclibc -examples -gdbm -ipv6 -sqlite -tk -wininst) 3.1.3-r1(3.1)(00:51:57 28/02/2011)(ncurses readline ssl threads wide-unicode xml -build -doc -elibc_uclibc -examples -gdbm -ipv6 -sqlite -tk -wininst)                                          

     Homepage:            http://www.python.org/

     Description:         Python is an interpreted, interactive, object-oriented programming language.

```

se non avete eix, correte ad installarlo.

Ora non rimane che abilitarlo system-wide. Diventate root e lanciate:

```

eselect python set python2.7

```

ora, lanciate 

```

# python -V

```

se ottenete come risultato:

```

Python 2.7.1

```

è andato tutto bene. Ma aspettate, non è mica finita qui, dovete ricordarvi anche di lanciare:

```

python-updater

```

per ricompilare su python 2.7 eventuali pacchetti installati.

Fatto questo vi potrete godere l'ultima release del ramo 2.7... prima del passaggio a python3.

Potrà succedere che alcuni tools che usate basati su python smettano di funzionare: se così fosse, cercate nel bugzilla di gentoo https://bugs.gentoo.org/ includendo i bugs risolti, e se proprio non trovate nulla, aprite la segnalazione.

Nel mio caso avevo un problema con il network manages wicd, ho trovato che altri prima di me avevano riscontrato il problema https://bugs.gentoo.org/333001 ed ho semplicemente installato la versione ~ del pacchetto: voilà problema risolto  :Very Happy: 

Have a lot of fun, with gentoo!

----------

## canduc17

Really appreciated...

----------

## ago

Io aggiungerei anche di fare un check in 

```
/usr/lib
```

 se esiste python2.6 ( il tutto ovviamente dopo un emerge -c )

Se esiste possiamo approfondire con 

```
qfile -v /usr/lib/python2.6
```

 e cercare di fixare se qualcosa non va

----------

## djinnZ

io aggiungerei per gli utonti come me di amd64 multilib di attendere che sia corretto emul-linux-x86-baselibs se non volete la scocciatura di python updater che lo vuol ricompilare sempre.

python-updater lanciato prima dell'eselct non fa danni, ovviamente. Quindi se avete sbagliato non fatevi prendere dal panico e rilanciatelo (possibile che qualche pacchetto sia stato ignorato od abbia comunque compilato per 2.6).

edit

----------

## ago

 *djinnZ wrote:*   

> io aggiungerei per gli utonti come me di amd64 multilib di attendere che sia corretto emul-linux-x86-baselibs se non volete la scocciatura di python updater che lo vuol ricompilare sempre

 

Anche per boost è cosi e comunque non vedo il problema in quanto python-updater va lanciato dopo l'aggiornamento di python, non è una cosa da fare quotidianamente  :Very Happy:  ( quindi in sostanza che si "ricompila" le baselibs non è un problema visto che ci mette pochi secondi )

----------

## djinnZ

Me ne ero scordato (ho fatto confusione con altra discussione dove era citato già) quel che mi scoccia di più è emul-linux perchè al momento non posso farne a meno ed è un bug. Hanno smascherato il 2.7 senza considerare tutte le dipendenze.

Il problema lo è perchè hai una libreria che non punta a nulla e che potrebbe ingannare qualche makefile/installer a tentare il build anche per 2.6 o ad ignorare il python installato per dirne una.

Boost e boost-build invece sono noti per avere problemi ad ogni nuova versione di python (sarebbe buona norma ricompilarli sempre dopo aver aggiornato a meno che non sia una -rqualcosa) quindi a meno che non usi -dmanual updater te lo vuol sempre ricompilare anche se non hai modificato niente. Cosa nota.

Dato che non ho ricompilato in una unica soluzione (eh già, fino al depclean si può allegramente interrompere e riprendere non è mica un revdep-rebuild su un applicativo critico, tutto continua a funzionare benissimo) emul-linux lo avrò renstallato almeno 10 volte.

Il tutto a beneficio di eventuali nuovi sfigati  :Laughing:  che usano gentoo e non si sono ancora trovati a combattere con gli update di python (che detesto cordialmente, credo si sia capito)

----------

## ago

 *djinnZ wrote:*   

> Hanno smascherato il 2.7 senza considerare tutte le dipendenze

 

C'è stato il suo motivo  :Smile: 

----------

## djinnZ

E quale? Che il python 2.7 è la versione corrente come per il 3? Allora perchè non hanno aggiunto un avviso come per il 3 che non è ancora pronto per essere il python "di sistema"?

----------

## ago

 *djinnZ wrote:*   

> E quale?

 

Vulnerabilità su python2.6 link

Cmq in generale sapere se c'è qualche motivo particolare per una stabilizzazione è semplice..basta andare sullo changelog su znurt e non devi fare neanche la fatica di copiare e incollare dato che con un clic vai direttamente sul bug su bugzilla  :Wink: 

----------

## djinnZ

era una domanda retorica...  :Confused: 

----------

## pascalbrax

ho seguito il procedimento di trepunti testamorta trepunti... è andato tutto alla perfezione!  :Very Happy: 

----------

## Onip

aggiungerei alle ottime istruzioni di .:deadhead:. il passo indicato in questo post. Mi è stato caldamente raccomandato su #gentoo-it

----------

## fbcyborg

Io ho ancora la seguente versione di python installata: 2.5.4-r4.

Però depclean non mi chiede di rimuoverla. Possibile che ci siano ancora programmi che la usano? 

Attualmente ho la 2.7 impostata come principale anche se ho anche la 3.1 sul sistema.

----------

## Onip

ce l'hai in world?

prova a controllare con equery depends dev-lang/python se c'è qualcuno che la vuole. Oppure puoi quickpaccettizzarla rimuoverla e dare un emerge -DutNav --with-bdeps=y world e vedere se c'è qualcuno che te la richiede.

----------

## fbcyborg

Ok, ho rimosso dev-lang/python-2.5.4-r4, e mi ha subito chiesto di fare un emerge @preserved-rebuild.

Credo sia Virtualbox a richiederlo. 

```
!!! existing preserved libs:

>>> package: dev-lang/python-2.5.4-r4

 *  - /usr/lib64/libpython2.5.so

 *  - /usr/lib64/libpython2.5.so.1.0

 *      used by /opt/VirtualBox/VBoxPython2_5.so (app-emulation/virtualbox-bin-4.0.8)
```

Il comando emerge -DutNav --with-bdeps=y world sputa fuori questo però:

```
[nomerge       ] net-misc/unison-2.27.57-r1  USE="gtk ocamlopt threads -debug -doc -static" 

[nomerge       ]  net-misc/x11-ssh-askpass-1.2.4.1-r1 

[nomerge       ]   x11-misc/imake-1.0.4 

[ebuild     U  ]    x11-misc/xorg-cf-files-1.0.4 [1.0.3] 359 kB

[nomerge       ] sys-apps/v86d-0.1.10  USE="(x86emu) -debug" 

[ebuild     U  ]  dev-libs/klibc-1.5.20 [1.5.12-r1] USE="-debug (-n32)" 69,125 kB

[nomerge       ] sys-boot/syslinux-4.03  USE="-custom-cflags" 

[ebuild     U  ]  dev-lang/nasm-2.09.08 [2.09.04] USE="-doc" 785 kB

[nomerge       ] app-misc/tomboy-1.4.2-r1  USE="applet -eds -galago" 

[nomerge       ]  dev-dotnet/gnome-sharp-2.24.2  USE="-debug" 

[nomerge       ]   dev-dotnet/gtk-sharp-2.12.10  USE="-debug" 

[nomerge       ]    dev-dotnet/atk-sharp-2.12.10  USE="-debug" 

[nomerge       ]     sys-devel/automake-1.10.3 

[ebuild     U  ]      sys-apps/help2man-1.38.2 [1.36.4-r1] USE="nls" 134 kB

[nomerge       ] kde-base/kdegraphics-meta-4.6.2  USE="(-aqua) (-kdeprefix) -scanner" 

[nomerge       ]  kde-base/thumbnailers-4.6.2  USE="(-aqua) -debug (-kdeenablefinal) (-kdeprefix)" 

[nomerge       ]   kde-base/libkdcraw-4.6.2  USE="(-aqua) -debug (-kdeenablefinal) (-kdeprefix)" 

[nomerge       ]    media-libs/lcms-1.19  USE="jpeg python static-libs tiff zlib" 

[ebuild     U  ]     dev-lang/swig-2.0.2 [1.3.40-r1] USE="pcre%* -ccache -doc" 4,980 kB

[nomerge       ] app-text/texlive-core-2008-r7  USE="X -doc -source -tk" 

[ebuild     U  ]  sys-apps/ed-1.4 [1.0] 89 kB
```

Invece il comando equery depends =dev-lang/python-2.5.4-r4 mi restituisce questo output. Sono una marea di pacchetti.

EDIT1: fra l'altro VirtualBox mi parte senza problemi e il preserved-rebuild mi ha voluto far installare solo virtualbox.

EDIT2: anche revdep-rebuild dice che è tutto OK. Quindi posso stare tranquillo insomma!

----------

## Onip

Guardando l'output di equery e leggendo un po' di ebuild credo che il problema fosse proprio virtualbox-bin, che ha specificate tre versioni di python in or come dipendenza. Una di queste è proprio relativa al 2.5 e, trovandoselo installato, impediva a --depclean di toglierla.

----------

## fbcyborg

Un errore nell'ebuild sostanzialmente(?).

----------

## Onip

potrebbe anche essere, anche se più probabilmente c'è un qualche motivo per non specificare la dipendenza come >=dev-lang/python-VERSIONE_MINIMA. potresti provare con un bug report a sentire cosa ti dicono, o magari a contattare qualcuno della (delle) herd interessate in modo più informale.

----------

## funkoolow

 *.:deadhead:. wrote:*   

> Ciao scrivo queste note per chi è curioso e/o si trova nel periglio :
> 
> È stato stabilizzato python 2.7. Come fare ad usarlo?
> 
> [...]
> ...

 

salve a tutti,

nel mio caso seguendo praticamente alla lettera queste istruzioni, al momento del comando python -V in output mi continua a uscire python 2.6.6:

```
funkserver funkoolow # python -V

Python 2.6.6

```

tutto questo nonostante eselect mi dica che la versione settata è la 2.7:

```
funkserver funkoolow # eselect python list

Available Python interpreters:

  [1]   python2.6

  [2]   python2.7 *

  [3]   python3.1

```

ho anche provato a proseguire con il comando python-update ma per ogni pacchetto la compilazione esce con un errore simile:

```
* Path to 'python':                 '/usr/local/bin/python'

 * ABI:                              ''

 * DEFAULT_ABI:                      'default'

 * EPYTHON:                          'python2.7'

 * PYTHON_ABI:                       '2.7'

 * Locally active version of Python: '2.6'

 * ERROR: dev-python/pygobject-2.26.0-r1 failed (prepare phase):

 *   'python' does not respect EPYTHON variable

```

come posso procedere?

----------

## fbcyborg

Qui uno dice di aver avuto un problema simile al tuo. 

Prova anche tu a rimuovere la versione 2.6. Alle brutte la reinstalli. E ovviamente vai di revdep-rebuild.

----------

## funkoolow

ho rimosso sia la 2.6 che la 3.1 e proceduto come mi suggerivi, ecco l'output dei vari eselect, python -V e revdep-rebuild:

```
funkserver funkoolow # eselect python list

Available Python interpreters:

  [1]   python2.7 *

funkserver funkoolow # python -V

Python 2.6.6

funkserver funkoolow # revdep-rebuild

 * Configuring search environment for revdep-rebuild

 * Checking reverse dependencies

 * Packages containing binaries and libraries broken by a package update

 * will be emerged.

 * Collecting system binaries and libraries

 * Found existing 1_files.rr

 * Collecting complete LD_LIBRARY_PATH

 * Found existing 2_ldpath.rr.

 * Checking dynamic linking consistency

[ 33% ]  *   broken /usr/bin/vim (requires libpython2.6.so.1.0)

[ 36% ]  *   broken /usr/lib/alsa-lib/smixer/smixer-python.so (requires libpython2.6.so.1.0)

[ 55% ]  *   broken /usr/lib/graphviz/python/libgv_python.so (requires libpython2.6.so.1.0)

[ 68% ]  *   broken /usr/lib/libwireshark.so.0.0.1 (requires libpython2.6.so.1.0)

[ 79% ]  *   broken /usr/lib/python3.1/site-packages/Cython/Compiler/Parsing.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/Cython/Compiler/Scanning.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/Cython/Compiler/Visitor.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/Cython/Plex/Scanners.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/Cython/Runtime/refnanny.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/numpy/core/multiarray.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/numpy/core/scalarmath.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/numpy/core/_sort.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/numpy/core/umath.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/numpy/core/umath_tests.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/numpy/fft/fftpack_lite.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/numpy/lib/_compiled_base.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/numpy/linalg/lapack_lite.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/numpy/numarray/_capi.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/numpy/random/mtrand.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/OpenSSL/crypto.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/OpenSSL/rand.so (requires libpython3.1.so.1.0)

 *   broken /usr/lib/python3.1/site-packages/OpenSSL/SSL.so (requires libpython3.1.so.1.0)

[ 100% ]

 * Generated new 3_broken.rr

 * Assigning files to packages

 *   /usr/bin/vim -> app-editors/vim

 *   /usr/lib/alsa-lib/smixer/smixer-python.so -> media-libs/alsa-lib

 *   /usr/lib/graphviz/python/libgv_python.so -> media-gfx/graphviz

 *   /usr/lib/libwireshark.so.0.0.1 -> net-analyzer/wireshark

 *   /usr/lib/python3.1/site-packages/Cython/Compiler/Parsing.so -> dev-python/cython

 *   /usr/lib/python3.1/site-packages/Cython/Compiler/Scanning.so -> dev-python/cython

 *   /usr/lib/python3.1/site-packages/Cython/Compiler/Visitor.so -> dev-python/cython

 *   /usr/lib/python3.1/site-packages/Cython/Plex/Scanners.so -> dev-python/cython

 *   /usr/lib/python3.1/site-packages/Cython/Runtime/refnanny.so -> dev-python/cython

 *   /usr/lib/python3.1/site-packages/numpy/core/multiarray.so -> dev-python/numpy

 *   /usr/lib/python3.1/site-packages/numpy/core/multiarray_tests.so -> dev-python/numpy

 *   /usr/lib/python3.1/site-packages/numpy/core/scalarmath.so -> dev-python/numpy

 *   /usr/lib/python3.1/site-packages/numpy/core/_sort.so -> dev-python/numpy

 *   /usr/lib/python3.1/site-packages/numpy/core/umath.so -> dev-python/numpy

 *   /usr/lib/python3.1/site-packages/numpy/core/umath_tests.so -> dev-python/numpy

 *   /usr/lib/python3.1/site-packages/numpy/fft/fftpack_lite.so -> dev-python/numpy

 *   /usr/lib/python3.1/site-packages/numpy/lib/_compiled_base.so -> dev-python/numpy

 *   /usr/lib/python3.1/site-packages/numpy/linalg/lapack_lite.so -> dev-python/numpy

 *   /usr/lib/python3.1/site-packages/numpy/numarray/_capi.so -> dev-python/numpy

 *   /usr/lib/python3.1/site-packages/numpy/random/mtrand.so -> dev-python/numpy

 *   /usr/lib/python3.1/site-packages/OpenSSL/crypto.so -> dev-python/pyopenssl

 *   /usr/lib/python3.1/site-packages/OpenSSL/rand.so -> dev-python/pyopenssl

 *   /usr/lib/python3.1/site-packages/OpenSSL/SSL.so -> dev-python/pyopenssl

 * Generated new 4_raw.rr and 4_owners.rr

 * Cleaning list of packages to rebuild

 * Generated new 4_pkgs.rr

 * Assigning packages to ebuilds

 * Generated new 4_ebuilds.rr

 * Evaluating package order

 * Generated new 5_order.rr

 * All prepared. Starting rebuild

emerge --oneshot   app-editors/vim:0

dev-python/cython:0

dev-python/numpy:0

dev-python/pyopenssl:0

media-gfx/graphviz:0

media-libs/alsa-lib:0

net-analyzer/wireshark:0

..........

>>> Verifying ebuild manifests

>>> Starting parallel fetch

>>> Emerging (1 of 7) app-editors/vim-7.3.135

 * vim-7.3.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                                                                                    [ ok ]

 * vim-patches-7.3.135.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                                                                        [ ok ]

 * Package:    app-editors/vim-7.3.135

 * Repository: gentoo

 * Maintainer: vim@gentoo.org

 * USE:        X acl bash-completion elibc_glibc gpm kernel_linux nls perl python userland_GNU x86

 * FEATURES:   sandbox

 * Path to 'python':                 '/usr/local/bin/python'

 * ABI:                              ''

 * DEFAULT_ABI:                      'default'

 * EPYTHON:                          'python2.7'

 * PYTHON_ABI:                       '2.7'

 * Locally active version of Python: '2.6'

 * ERROR: app-editors/vim-7.3.135 failed (setup phase):

 *   'python' does not respect EPYTHON variable

 *

 * Call stack:

 *       ebuild.sh, line   56:  Called pkg_setup

 *       ebuild.sh, line 1439:  Called vim_pkg_setup

 *      vim.eclass, line  244:  Called python_set_active_version '2'

 *   python.eclass, line 1548:  Called _python_final_sanity_checks

 *   python.eclass, line  317:  Called die

 * The specific snippet of code:

 *                              die "'python' does not respect EPYTHON variable"

 *

 * If you need support, post the output of 'emerge --info =app-editors/vim-7.3.135',

 * the complete build log and the output of 'emerge -pqv =app-editors/vim-7.3.135'.

 * The complete build log is located at '/var/tmp/portage/app-editors/vim-7.3.135/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/app-editors/vim-7.3.135/temp/die.env'.

 * S: '/var/tmp/portage/app-editors/vim-7.3.135/work/vim73'

>>> Failed to emerge app-editors/vim-7.3.135, Log file:

>>>  '/var/tmp/portage/app-editors/vim-7.3.135/temp/build.log'
```

continuo a non capire perchè mi punti ancora tutto a python 2.6 (a parte qualche altra dipendenza da python 3.1 che penso sparirà tranquillamente appena  lo rimetto...). Che possa dipendere da questa variabile epython? forse va settata/modificata da qualche parte?

----------

## Onip

Inizia a vedere con

```
$ which python
```

qual è l'eseguibile che viene richiamato. Nel mio sistema è /usr/bin/python che è un symlink a /usr/bin/python-wrapper appartenente al pacchetto app-admin/eselect-python.

Sembra quasi che tu abbia una installazione "aliena" di python che portage non vede ma che, comunque, influisce sul sistema, anche a giudicare dall'output che hai postato.

 *funkoolow wrote:*   

> 
> 
> * Path to 'python':                 '/usr/local/bin/python' 
> 
> 

 

Se fosse effettivamente così ti consiglio di rimuoverla e di fare una bella pulizia dei file residui che ti può avere lasciato in giro.

----------

## funkoolow

hmmm, mi sa che hai colto il dettaglio importante... ora però per rimuoverlo? il portage mi ha viziato e non so come procedere manualmente...

la mia idea sarebbe quella di ripuntare con un symlink /usr/local/bin/python al normale python-wrapper ma ho il dubbio che sia la soluzione ottimale  :Embarassed: 

grazie intanto per l'ottimo aiuto  :Smile: 

----------

## Onip

ai bei vecchi tempi si faceva un

```
# make uninstall
```

da dentro la directory dei sorgenti che hai compilato e installato. Se li hai rimossi puoi provare a ri-scaricarli, ri-configurarli, ri-compilarli e poi a lanciare l'uninstall.

alternativamente puoi provare con 

```
# qlist dev-lang/python
```

vedere l'elenco dei file e aggiungere un local al path di ognuno e rimuoverli. Oppure googla...

----------

## funkoolow

 *Onip wrote:*   

> ai bei vecchi tempi si faceva un
> 
> ```
> # make uninstall
> ```
> ...

 

il make uninstall era la prima cosa che avevo provato ma come riportato da altri non funzionava uscendo con un:

```
funkserver Python-2.6.6 # make uninstall

make: *** No rule to make target `uninstall'.  Stop.
```

alla fine, verificata la presenza di un backup di sistema di al massimo qualche settimana fa libero dalla presenza dell'infausta /usr/local/bin/python:

1) una volta riscaricati i sorgenti e lanciato il ./configure e relativo make, ho fatto il record della lista dei file che installa il setup del python:

```
python setup.py install --record setup.txt
```

2) ho cancellato a mano tutti i files registrati nel file ottenuto:

```
for i in $(less setup.txt); do rm $i; done;
```

3) ho brutalmente cancellato ogni traccia residua  a python-2.6 in /usr/local/

4) ho lanciato env-update

5) ho lanciato source /etc/profile

non so cosa fosse o non fosse realmente utile (ho trovato qua e là le varie info) ma ora finalmente il python -V mi restituisce lo stesso output dell'eselect python list e il python-update sta finalmente macinando correttamente.

grazie quindi del suggerimento, per me il problema dovrebbe essere risolto  :Smile: 

----------

