¿Python no está instalado por defecto en RHEL 8?

Si habéis estado jugando un poco con la nueva versión de Red Hat Enterprise Linux (RHEL 8), puede que os hayáis dado cuenta de que aparentemente no hay ninguna versión de Python instalada por defecto:

[root@rhel8 ~]# python
-bash: python: command not found

¿Cómo es posible? Es conocido que Red Hat tiene muchas dependencias internas a nivel de sistema operativo con Python, la primera que nos viene a la cabeza es el gestor de paquetes yum o dnf. Precisamente por este mismo motivo no hay una versión visible instalada por defecto.

Instalar Python 3 y/o Python 2

¿Recordáis el artículo que publiqué hace unos días sobre cómo instalar Python 3 en RHEL 7 (y CentOS 7)? Ahí explicaba como estas dependencias a nivel de sistema operativo provocaban que instalar una versión actualizada de Python complican la tarea, y que haciéndolo mal, puede llevar a graves problemas en el sistema. Precisamente este es el motivo por el cual, en RHEL 8 ya no hay bloqueo a nivel de instalación de Python y se permite que el administrador del sistema pueda utilizar la versión que necesite:

# yum install @python36 
# yum install @python27

Los comandos anteriores instalan el grupo de paquetes necesario para instalar cada versión. Si sólo se quiere instalar los binarios, omitid el @, que es lo que define instalar el grupo completo:

# yum install python36 
# yum install python27

¿Cómo funciona yum sin Python?

Entonces…¿cómo funciona yum? Funciona gracias a que Red Hat ha movido la versión de Python utilizada por el sistema a una ubicación independiente, una versión embebida/empotrada cuya finalidad es únicamente servir para la ejecución del gestor de paquetes de Red Hat u otros componentes internos. Esto lo podéis ver claramente si miráis la cabecera del ejecutable de yum:

[root@rhel8 ~]# head /usr/bin/yum
#!/usr/libexec/platform-python
# The dnf executable script.
#
# Copyright (C) 2012-2016 Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions of
# the GNU General Public License v.2, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY expressed or implied, including the implied warranties of
[root@rhel8 ~]# /usr/libexec/platform-python -V
Python 3.6.8

Así que ya sabéis, podéis instalar la versión que necesitéis en lugar de estas bloqueados con la del sistema con en versiones anteriores. Incluso podéis instalar varias y configurar por defecto la que necesitéis con el comando alternatives:

[root@rhel8 ~]# alternatives --config python