Capítulo 15. Lenguajes de programación dinámicos, servidores web, servidores de bases de datos
15.1. Lenguajes de programación dinámicos Copiar enlaceEnlace copiado en el portapapeles!
15.1.1. Cambios notables en Python Copiar enlaceEnlace copiado en el portapapeles!
15.1.1.1. Python 3 es la implementación por defecto de Python en RHEL 8 Copiar enlaceEnlace copiado en el portapapeles!
Red Hat Enterprise Linux 8 se distribuye con Python 3.6. El paquete puede no estar instalado por defecto. Para instalar Python 3.6, utilice el comando yum install python3.
Python 2.7 está disponible en el paquete python2. Sin embargo, Python 2 tendrá un ciclo de vida más corto y su objetivo es facilitar a los clientes una transición más suave a Python 3.
Ni el paquete por defecto python ni el ejecutable no versionado /usr/bin/python se distribuyen con RHEL 8. Se aconseja a los clientes que utilicen directamente python3 o python2. Como alternativa, los administradores pueden configurar el comando no versionado python mediante el comando alternatives.
Para más detalles, consulte Uso de Python en Red Hat Enterprise Linux 8.
15.1.1.2. Migración de Python 2 a Python 3 Copiar enlaceEnlace copiado en el portapapeles!
Como desarrollador, es posible que quieras migrar tu antiguo código escrito en Python 2 a Python 3. Para obtener más información sobre cómo migrar grandes bases de código a Python 3, consulta The Conservative Python 3 Porting Guide.
Tenga en cuenta que después de esta migración, el código original de Python 2 se convierte en interpretable por el intérprete de Python 3 y sigue siendo interpretable para el intérprete de Python 2 también.
15.1.2. Configurar el Python no versionado Copiar enlaceEnlace copiado en el portapapeles!
Los administradores del sistema pueden configurar el comando no versionado python, ubicado en /usr/bin/python, utilizando el comando alternatives. Tenga en cuenta que el paquete requerido, python3, python38, o python2, necesita ser instalado antes de configurar el comando no versionado a la versión respectiva.
El ejecutable /usr/bin/python está controlado por el sistema alternatives. Cualquier cambio manual puede ser sobrescrito en una actualización.
Otros comandos relacionados con Python, como pip3, no tienen variantes configurables sin versionar.
15.1.2.1. Configurar directamente el comando python no versionado Copiar enlaceEnlace copiado en el portapapeles!
Para configurar el comando no versionado python directamente a una versión seleccionada de Python, utilice este procedimiento.
Procedimiento
Para configurar el comando
pythonno versionado a Python 3.6, ejecute este comando:# alternatives --set python /usr/bin/python3Para configurar el comando
pythonno versionado a Python 3.8, utilice el siguiente comando:# alternatives --set python /usr/bin/python3.8Para configurar el comando
pythonno versionado a Python 2, utilice:# alternativas --set python /usr/bin/python2
15.1.2.2. Configurar el comando python no versionado a la versión de Python requerida de forma interactiva Copiar enlaceEnlace copiado en el portapapeles!
También puede configurar el comando python no versionado a la versión de Python requerida de forma interactiva.
Para configurar el comando python no versionado de forma interactiva, utilice este procedimiento.
Procedimiento
Ejecute el siguiente comando:
# alternativas --config python- Seleccione la versión requerida de la lista proporcionada.
Para restablecer esta configuración y eliminar el comando
pythonno versionado, ejecute:# alternativas --auto python
15.1.2.3. Los scripts de Python deben especificar la versión principal en los hashbangs en el momento de construir el RPM Copiar enlaceEnlace copiado en el portapapeles!
En RHEL 8, se espera que los scripts ejecutables de Python utilicen hashbangs (shebangs) especificando explícitamente al menos la versión principal de Python.
El script /usr/lib/rpm/redhat/brp-mangle-shebangs buildroot policy (BRP) se ejecuta automáticamente al construir cualquier paquete RPM. Este script intenta corregir los hashbangs en todos los archivos ejecutables. Cuando el script encuentra hashbangs de Python ambiguos que no especifican la versión mayor de Python, genera errores y la construcción del RPM falla. Ejemplos de tales hashbangs ambiguos incluyen:
-
#! /usr/bin/python -
#! /usr/bin/env python
Para modificar los hashbangs en los scripts de Python que causan estos errores de compilación en el momento de construir el RPM, utilice el script pathfix.py del paquete platform-python-devel:
pathfix.py -pn -i %{__python3} PATH ...
Se pueden especificar múltiples PATHs. Si un PATH es un directorio, pathfix.py busca recursivamente cualquier script de Python que coincida con el patrón ^[a-zA-Z0-9_] \.py$, no sólo aquellos con un hashbang ambiguo. Añade el comando para ejecutar pathfix.py a la sección %prep o al final de la sección %install.
Para más información, consulte Manejo de hashbangs en scripts de Python.
15.1.2.4. Python la unión del paquete net-snmp no está disponible Copiar enlaceEnlace copiado en el portapapeles!
El conjunto de herramientas Net-SNMP no proporciona enlaces para Python 3, que es la implementación por defecto de Python en RHEL 8. En consecuencia, los paquetes python-net-snmp, python2-net-snmp, o python3-net-snmp no están disponibles en RHEL 8.
15.1.2.5. Recursos adicionales Copiar enlaceEnlace copiado en el portapapeles!
15.1.3. Cambios notables en PHP Copiar enlaceEnlace copiado en el portapapeles!
Red Hat Enterprise Linux 8 se distribuye con PHP 7.2. Esta versión introduce los siguientes cambios importantes con respecto a PHP 5.4, que está disponible en RHEL 7:
-
PHPutiliza por defecto el gestor de procesos FastCGI (FPM) (seguro para su uso con un hilohttpd) -
Las variables
php_valueyphp-flagya no deben utilizarse en los archivos de configuración dehttpd; en su lugar, deben establecerse en la configuración del grupo/etc/php-fpm.d/*.conf -
PHPlos errores y advertencias de los scripts se registran en el archivo/var/log/php-fpm/www-error.logen lugar de/var/log/httpd/error.log -
Al cambiar la variable de configuración de PHP
max_execution_time, la configuración dehttpdProxyTimeoutdebe aumentarse para que coincida con -
El usuario que ejecuta los scripts de
PHPestá ahora configurado en la configuración del pool de FPM (el archivo/etc/php-fpm.d/www.conf; el usuarioapachees el predeterminado) -
El servicio
php-fpmdebe reiniciarse después de un cambio de configuración o de la instalación de una nueva extensión -
La extensión
zipse ha trasladado del paquetephp-commona un paquete separado,php-pecl-zip
Se han eliminado las siguientes extensiones:
-
aspell -
mysql(tenga en cuenta que las extensionesmysqliypdo_mysqlsiguen estando disponibles, proporcionadas por el paquetephp-mysqlnd) -
memcache
15.1.4. Cambios notables en Perl Copiar enlaceEnlace copiado en el portapapeles!
Perl 5.26, distribuido con RHEL 8, introduce los siguientes cambios respecto a la versión disponible en RHEL 7:
-
Unicode 9.0es ahora compatible. -
Se proporcionan nuevas sondas
op-entry,loading-file, yloaded-fileSystemTap. - El mecanismo de copia en escritura se utiliza al asignar escalares para mejorar el rendimiento.
-
Se ha añadido el módulo
IO::Socket::IPpara manejar de forma transparente los sockets IPv4 e IPv6. -
Se ha añadido el módulo
Config::Perl::Vpara acceder a los datos deperl -Vde forma estructurada. -
Se ha añadido un nuevo paquete
perl-App-cpanminus, que contiene la utilidadcpanmpara obtener, extraer, construir e instalar módulos del repositorio Comprehensive Perl Archive Network (CPAN). -
El directorio actual
.ha sido eliminado de la ruta de búsqueda del módulo@INCpor razones de seguridad. -
La sentencia
dodevuelve ahora una advertencia de desaprobación cuando no consigue cargar un archivo debido al cambio de comportamiento descrito anteriormente. -
La llamada
do subroutine(LIST)ya no es compatible y da lugar a un error de sintaxis. -
Ahora los hash son aleatorios por defecto. El orden en que se devuelven las claves y los valores de un hash cambia en cada ejecución de
perl. Para desactivar la aleatorización, establezca la variable de entornoPERL_PERTURB_KEYSen0. -
Ya no se permiten los caracteres literales de
{sin esconder en los patrones de expresiones regulares. -
Se ha eliminado el soporte del ámbito léxico para la variable
$_. -
El uso del operador
defineden un array o en un hash produce un error fatal. -
La importación de funciones del módulo
UNIVERSALda lugar a un error fatal. -
Se han eliminado las herramientas
find2perl,s2p,a2p,c2phypstruct. -
Se ha eliminado la facilidad de
${^ENCODING}. El modo por defecto del pragmaencodingya no es soportado. Para escribir el código fuente en otra codificación que no seaUTF-8, utilice la opciónFilterde la codificación. -
El paquete
perlestá ahora alineado con el upstream. El paqueteperlinstala también los módulos principales, mientras que el intérprete/usr/bin/perles proporcionado por el paqueteperl-interpreter. En versiones anteriores, el paqueteperlincluía sólo un intérprete mínimo, mientras que el paqueteperl-coreincluía tanto el intérprete como los módulos centrales. -
El módulo Perl
IO::Socket::SSLya no carga un certificado de autoridad de certificación del archivo./certs/my-ca.pemo del directorio./ca, una clave privada del servidor del archivo./certs/server-key.pem, un certificado del servidor del archivo./certs/server-cert.pem, una clave privada del cliente del archivo./certs/client-key.pemy un certificado del cliente del archivo./certs/client-cert.pem. En su lugar, especifique las rutas de acceso a los archivos de forma explícita.
15.1.5. Cambios notables en Ruby Copiar enlaceEnlace copiado en el portapapeles!
RHEL 8 proporciona Ruby 2.5, que introduce numerosas nuevas características y mejoras respecto a Ruby 2.0.0 disponibles en RHEL 7. Los cambios más destacados son:
- Se ha añadido el recolector de basura incremental.
-
Se ha añadido la sintaxis
Refinements. - Los símbolos son ahora recolectados por la basura.
-
Los niveles de seguridad de
$SAFE=2y$SAFE=3han quedado obsoletos. -
Las clases
FixnumyBignumse han unificado en la claseInteger. -
Se ha mejorado el rendimiento gracias a la optimización de la clase
Hash, a la mejora del acceso a las variables de instancia y a que la claseMutexes más pequeña y rápida. - Algunas API antiguas han quedado obsoletas.
-
Se han actualizado las librerías agrupadas, como
RubyGems,Rake,RDoc,Psych,Minitestytest-unit. -
Otras bibliotecas, como
mathn,DL,ext/tk, yXMLRPC, que antes se distribuían conRuby, están obsoletas o ya no se incluyen. -
El esquema de versionado
SemVerse utiliza ahora para el versionadoRuby.
15.1.6. Cambios notables en SWIG Copiar enlaceEnlace copiado en el portapapeles!
RHEL 8 incluye la versión 3.0 del Simplified Wrapper and Interface Generator (SWIG), que ofrece numerosas novedades, mejoras y correcciones de errores respecto a la versión 2.0 distribuida en RHEL 7. Lo más destacable es que se ha implementado la compatibilidad con el estándar C 11. SWIG soporta ahora también Go 1.6, PHP 7, Octave 4.2, y Python 3.5.
15.1.7. Node.js nuevo en RHEL Copiar enlaceEnlace copiado en el portapapeles!
Node.js, una plataforma de desarrollo de software para crear aplicaciones de red rápidas y escalables en el lenguaje de programación JavaScript, se proporciona por primera vez en RHEL. Anteriormente sólo estaba disponible como colección de software. RHEL 8 proporciona Node.js 10.
15.1.8. Tcl Copiar enlaceEnlace copiado en el portapapeles!
Tool command language (Tcl) es un lenguaje de programación dinámico. El intérprete de este lenguaje, junto con la librería C, lo proporciona el paquete tcl.
Utilizando Tcl emparejado con Tk (Tcl/Tk) permite crear aplicaciones GUI multiplataforma Tk es proporcionada por el paquete tk.
Tenga en cuenta que Tk puede referirse a cualquiera de los siguientes:
- Un conjunto de herramientas de programación para múltiples lenguajes
- Una librería Tk C disponible para múltiples lenguajes, como C, Ruby, Perl y Python
- Un intérprete de deseos que instancie una consola Tk
- Una extensión de Tk que añade una serie de nuevos comandos a un determinado intérprete de Tcl
15.1.8.1. Cambios notables en Tcl/Tk 8.6 Copiar enlaceEnlace copiado en el portapapeles!
RHEL 8 se distribuye con Tcl/Tk version 8.6que proporciona múltiples cambios notables con respecto a Tcl/Tk version 8.5:
- Apoyo a la programación orientada a objetos
- Aplicación de la evaluación sin pilas
- Gestión de excepciones mejorada
- Colección de paquetes de terceros construidos e instalados con Tcl
- Operaciones multihilo habilitadas
- Soporte de scripts con base de datos SQL
- Soporte de red IPv6
- Compresión Zlib integrada
Procesamiento de la lista
Están disponibles dos nuevos comandos,
lmapydict map, que permiten la expresión de transformaciones sobre Tcl contenedores.Canales apilados por guión
Están disponibles dos nuevos comandos,
chan pushychan pop, que permiten añadir o eliminar transformaciones hacia o desde los canales de E/S.
Para obtener información más detallada sobre Tcl/Tk version 8.6 cambios y nuevas funciones, consulte los siguientes recursos:
Si necesita migrar a Tcl/Tk 8.6consulte la sección Migración a Tcl/Tk 8.6.