Buscar

Capítulo 15. Lenguajes de programación dinámicos, servidores web, servidores de bases de datos

download PDF

15.1. Lenguajes de programación dinámicos

15.1.1. Cambios notables en Python

15.1.1.1. Python 3 es la implementación por defecto de Python en RHEL 8

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

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

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.

Importante

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

Para configurar el comando no versionado python directamente a una versión seleccionada de Python, utilice este procedimiento.

Procedimiento

  • Para configurar el comando python no versionado a Python 3.6, ejecute este comando:

    # alternatives --set python /usr/bin/python3
  • Para configurar el comando python no versionado a Python 3.8, utilice el siguiente comando:

    # alternatives --set python /usr/bin/python3.8
  • Para configurar el comando python no 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

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

  1. Ejecute el siguiente comando:

    # alternativas --config python
  2. Seleccione la versión requerida de la lista proporcionada.
  3. Para restablecer esta configuración y eliminar el comando python no 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

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

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

15.1.3. Cambios notables en PHP

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:

  • PHP utiliza por defecto el gestor de procesos FastCGI (FPM) (seguro para su uso con un hilo httpd)
  • Las variables php_value y php-flag ya no deben utilizarse en los archivos de configuración de httpd; en su lugar, deben establecerse en la configuración del grupo /etc/php-fpm.d/*.conf
  • PHP los errores y advertencias de los scripts se registran en el archivo /var/log/php-fpm/www-error.log en lugar de /var/log/httpd/error.log
  • Al cambiar la variable de configuración de PHP max_execution_time, la configuración de httpd ProxyTimeout debe aumentarse para que coincida con
  • El usuario que ejecuta los scripts de PHP está ahora configurado en la configuración del pool de FPM (el archivo /etc/php-fpm.d/www.conf; el usuario apache es el predeterminado)
  • El servicio php-fpm debe reiniciarse después de un cambio de configuración o de la instalación de una nueva extensión
  • La extensión zip se ha trasladado del paquete php-common a un paquete separado, php-pecl-zip

Se han eliminado las siguientes extensiones:

  • aspell
  • mysql (tenga en cuenta que las extensiones mysqli y pdo_mysql siguen estando disponibles, proporcionadas por el paquete php-mysqlnd )
  • memcache

15.1.4. Cambios notables en Perl

Perl 5.26, distribuido con RHEL 8, introduce los siguientes cambios respecto a la versión disponible en RHEL 7:

  • Unicode 9.0 es ahora compatible.
  • Se proporcionan nuevas sondas op-entry, loading-file, y loaded-file SystemTap .
  • El mecanismo de copia en escritura se utiliza al asignar escalares para mejorar el rendimiento.
  • Se ha añadido el módulo IO::Socket::IP para manejar de forma transparente los sockets IPv4 e IPv6.
  • Se ha añadido el módulo Config::Perl::V para acceder a los datos de perl -V de forma estructurada.
  • Se ha añadido un nuevo paquete perl-App-cpanminus, que contiene la utilidad cpanm para 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 @INC por razones de seguridad.
  • La sentencia do devuelve 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 entorno PERL_PERTURB_KEYS en 0.
  • 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 defined en un array o en un hash produce un error fatal.
  • La importación de funciones del módulo UNIVERSAL da lugar a un error fatal.
  • Se han eliminado las herramientas find2perl, s2p, a2p, c2ph y pstruct.
  • Se ha eliminado la facilidad de ${^ENCODING}. El modo por defecto del pragma encoding ya no es soportado. Para escribir el código fuente en otra codificación que no sea UTF-8, utilice la opción Filter de la codificación.
  • El paquete perl está ahora alineado con el upstream. El paquete perl instala también los módulos principales, mientras que el intérprete /usr/bin/perl es proporcionado por el paquete perl-interpreter. En versiones anteriores, el paquete perl incluía sólo un intérprete mínimo, mientras que el paquete perl-core incluía tanto el intérprete como los módulos centrales.
  • El módulo Perl IO::Socket::SSL ya no carga un certificado de autoridad de certificación del archivo ./certs/my-ca.pem o 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.pem y 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

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=2 y $SAFE=3 han quedado obsoletos.
  • Las clases Fixnum y Bignum se han unificado en la clase Integer.
  • 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 clase Mutex es 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, Minitest y test-unit.
  • Otras bibliotecas, como mathn, DL, ext/tk, y XMLRPC, que antes se distribuían con Ruby, están obsoletas o ya no se incluyen.
  • El esquema de versionado SemVer se utiliza ahora para el versionado Ruby.

15.1.6. Cambios notables en SWIG

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

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

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

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, lmap y dict map, que permiten la expresión de transformaciones sobre Tcl contenedores.

  • Canales apilados por guión

    Están disponibles dos nuevos comandos, chan push y chan 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.

Red Hat logoGithubRedditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

© 2024 Red Hat, Inc.