Translate

lunes, 9 de marzo de 2020

Instalación de Python 3.6 ( SCL ) en Centos 6 / Redhat 6

Versiones más recientes de software, por ejemplo Python 3.6, pueden instalarse en Centos 6.x empleando los SCL (Software collection).

El CentOS 6.10 trae por ejemplo el paquete python-2.6.6-68.el6_10.x86_64.
Pero si se requiere instalar una versión más reciente como la 3.6 se tendrían que actualizar un conjunto de directorios y bibliotecas que afectarían a la instalación original.

En vez de emplear un contenedor, es suficiente cambiar unas cuantas variables de ambiente para que estas apunten a otros nuevos directorios que contendrán las nuevas bibliotecas, códigos fuentes, etc. necesarios para que corran estas nuevas versiones de software y así no afecten a la configuración original de la instalación del sistema. Esto es lo que justamente se resuelve con el SCL.


 Instalación del SCL
1. Instalar los repositorios CentOS-SCLo-scl.repo y de  CentOS-SCLo-scl-rh.repo, mediante:
yum -y install centos-release-scl install centos-release-scl-rh

2. Instalar scl-utlis si aún no está instalado:
yum -y install scl-utils

3. Si es que ya existen, se pueden verificar qué versiones hay ya instaladas de SCL de Python:
scl -l | grep -i python

4. En mi caso, se instaló la rh-python36:
yum -y install rh-python36 rh-python36-runtime

En este caso, se puede ver que el paquete rh-python36 queda instalado en un directorio alternativo que está a partir de  /opt y que además se crea una nuevo árbol de directorios que contiene los archivos, bibliotecas, etc. necesarios para que corra dicha versión:

cd /opt/rh/rh-python36
ls
enable  root
ls root
bin   dev   lib    media  opt   root  selinux  sys  usr
boot  home  lib64  mnt    proc  sbin  srv      tmp


Algunos directorios están vacíos, pero los directorios como lib y lib64 contienen las bibliotecas correspondientes que son requeridas por el python36.


5. Conforme se fueron necesitando diferentes bibliotecas se instalaron los siguientes paquetes:

rh-python36-python-libs-3.6.9-2.el6.x86_64
rh-python36-2.0-1.el6.x86_64
rh-python36-python-virtualenv-15.1.0-2.el6.noarch
rh-python36-python-setuptools-36.5.0-1.el6.noarch
rh-python36-python-3.6.9-2.el6.x86_64
rh-python36-python-pip-9.0.1-2.el6.noarch
rh-python36-python-nose-1.3.7-3.el6.noarch
rh-python36-numpy-1.13.1-1.el6.x86_64
rh-python36-runtime-2.0-1.el6.x86_64
rh-python36-numpy-f2py-1.13.1-1.el6.x86_64
rh-python36-python-devel-3.6.9-2.el6.x86_64
rh-python36-python-tkinter-3.6.9-2.el6.x86_64
rh-python36-scipy-0.19.1-2.el6.x86_64


Por ejemplo: instalación de las bibliotecas necesarias para el ploteo:

yum -y install rh-python36-python-tkinter.x86_64

O si se desea instalar todos los paquetes mencionados:

yum -y install rh-python36-python-libs-3.6.9-2.el6.x86_64 rh-python36-2.0-1.el6.x86_64 rh-python36-python-virtualenv-15.1.0-2.el6.noarch rh-python36-python-setuptools-36.5.0-1.el6.noarch rh-python36-python-3.6.9-2.el6.x86_64 rh-python36-python-pip-9.0.1-2.el6.noarch rh-python36-python-nose-1.3.7-3.el6.noarch rh-python36-numpy-1.13.1-1.el6.x86_64 rh-python36-runtime-2.0-1.el6.x86_64 rh-python36-numpy-f2py-1.13.1-1.el6.x86_64 rh-python36-python-devel-3.6.9-2.el6.x86_64 rh-python36-python-tkinter-3.6.9-2.el6.x86_64 rh-python36-scipy-0.19.1-2.el6.x86_64

6. Algunos paquetes se tuvieron que instalar con el 'pip' ( ¿Package installer for Python ? ). Por ejemplo:

pip install scipy


Lista de paquetes que se necesitarion instalar por medio de pip:

pip list
cycler (0.10.0)
kiwisolver (1.1.0)
matplotlib (3.2.0)
nose (1.3.7)
numpy (1.18.1)
pandas (1.0.1)
pip (9.0.1)
pyparsing (2.4.6)
python-dateutil (2.8.1)
pytz (2019.3)
scipy (0.19.1)
setuptools (36.5.0)
six (1.14.0)
virtualenv (15.1.0)

7. Si se desean instalar todos los paquetes anteriores podemos poner:
pip install cycler kiwisolver matplotlib nose numpy pandas pip pyparsing python-dateutil pytz scipy setuptools six virtualenv

pip install sklearn sklearn-glvq sklearn-lvq sklearn-evaluation skippy scikit-learn

Nota para scikit-learn y sklearn: Es necesario que en el mismo directorio no exista un archivo que se llame queue.py , ya qua este produce errores de compilación en el sistema. Si existe, es necesario cambiarle de nombre o quitqalo de allí.

8. En ocasiones suele pedir que se actualice el pip. ejemplo:
pip install --upgrade pip

9. Una vez instalado el nuevo SCL y los paquetes necesarios de Python, para cambiarse de contexto de instalación (modificación de las variables de ambiente) y ejecutar un programa en este nuevo contexto, simplemente se le pone:

scl enable rh-python36 bash

Por ejemplo, en el caso del ambiente de desarrollo Geany, para que levante con el Python 3.6, se le pone:

/usr/bin/scl enable rh-python36 /usr/bin/geany

o si se desea siempre trabajar con dicho ambiente, se puede modificar el profile del usuario cambiando las variables con el comando:

source scl_source enable rh-python36

Esto es necesario ya que si se ejecuta el comando de scl enable rh-python36 bash en el profile, este indefinidamente, en forma recursiva, levantará shells en cuanto entre el usuario a su cuenta.


Algunas referencias: