Red Hat Training
A Red Hat training course is available for RHEL 8
Capítulo 15. Linguagens de programação dinâmica, servidores web, servidores de banco de dados
15.1. Linguagens de programação dinâmica
15.1.1. Mudanças notáveis em Python
15.1.1.1. Python 3
é o padrão Python
implementação no RHEL 8
O Red Hat Enterprise Linux 8 é distribuído com Python 3.6
. O pacote pode não ser instalado por default. Para instalar Python 3.6
, use o comando yum install python3
.
Python 2.7
está disponível no pacote python2
. Entretanto, Python 2
terá um ciclo de vida mais curto e seu objetivo é facilitar uma transição mais suave para Python 3
para os clientes.
Nem o pacote padrão python
nem o executável não versionado /usr/bin/python
são distribuídos com o RHEL 8. Os clientes são aconselhados a usar diretamente python3
ou python2
. Alternativamente, os administradores podem configurar o comando python
não versionado usando o comando alternatives
.
Para detalhes, veja Usando o Python no Red Hat Enterprise Linux 8.
15.1.1.2. Migrando de Python 2 para Python 3
Como desenvolvedor, você pode querer migrar seu antigo código escrito em Python 2 para Python 3. Para mais informações sobre como migrar grandes bases de código para Python 3, veja The Conservative Python 3 Porting Guide.
Note que após esta migração, o código Python 2 original torna-se interpretável pelo intérprete Python 3 e permanece interpretável também para o intérprete Python 2.
15.1.2. Configurando o Python não versionado
Os administradores do sistema podem configurar o comando python
não versionado, localizado em /usr/bin/python
, usando o comando alternatives
. Note que o pacote necessário, python3
, python38
, ou python2
, precisa ser instalado antes de configurar o comando não versionado para a respectiva versão.
O executável /usr/bin/python
é controlado pelo sistema alternatives
. Quaisquer alterações manuais podem ser sobrescritas após uma atualização.
Comandos adicionais relacionados ao Python, tais como pip3
, não possuem variantes não versionadas configuráveis.
15.1.2.1. Configurando o comando python não versionado diretamente
Para configurar o comando não versionado python
diretamente para uma versão selecionada do Python, use este procedimento.
Procedimento
Para configurar o comando não versionado
python
para Python 3.6, execute este comando:# alternativas --set python /usr/bin/python3
Para configurar o comando não versionado
python
para Python 3.8, use o seguinte comando:# alternativas --set python /usr/bin/python3.8
Para configurar o comando não versionado
python
para Python 2, use:# alternativas --set python /usr/bin/python2
15.1.2.2. Configurando o comando python não versionado para a versão Python requerida interativamente
Você também pode configurar o comando python
não versionado para a versão Python exigida de forma interativa.
Para configurar o comando não versionado python
de forma interativa, use este procedimento.
Procedimento
Executar o seguinte comando:
# alternativas --config python
- Selecione a versão desejada da lista fornecida.
Para reiniciar esta configuração e remover o comando
python
não versionado, execute:# alternativas --auto python
15.1.2.3. Os scripts Python devem especificar a versão principal em hashbangs no tempo de construção RPM
No RHEL 8, os scripts Python executáveis devem usar hashbangs (shebangs) especificando explicitamente pelo menos a principal versão Python.
O script /usr/lib/rpm/redhat/brp-mangle-shebangs
buildroot policy (BRP) é executado automaticamente ao construir qualquer pacote RPM. Este script tenta corrigir hashbangs em todos os arquivos executáveis. Quando o script encontra hashbangs Python ambíguos que não especificam a versão principal do Python, ele gera erros e a construção do RPM falha. Exemplos de tais hashbangs ambíguos incluem:
-
#! /usr/bin/python
-
#! /usr/bin/env python
Para modificar hashbangs nos scripts Python causando estes erros de construção em tempo de construção RPM, use o script pathfix.py
do pacote platform-python-devel:
pathfix.py -pn -i %{__python3} PATH ...
Múltiplos PATHs podem ser especificados. Se um PATH é um diretório, pathfix.py
escaneia recursivamente qualquer script Python que corresponda ao padrão ^[a-zA-Z0-9_] \.py$
, e não apenas aqueles com um hashbang ambíguo. Adicione o comando para rodar pathfix.py
à seção %prep
ou ao final da seção %install
.
Para mais informações, consulte Manuseio de hashbangs em scripts Python.
15.1.2.4. Python
não está disponível o pacote net-snmp
O conjunto de ferramentas Net-SNMP
não oferece vínculo para Python 3
, que é a implementação padrão Python
no RHEL 8. Consequentemente, python-net-snmp
, python2-net-snmp
, ou python3-net-snmp
pacotes não estão disponíveis no RHEL 8.
15.1.2.5. Recursos adicionais
15.1.3. Mudanças notáveis em PHP
O Red Hat Enterprise Linux 8 é distribuído com PHP 7.2
. Esta versão introduz as seguintes mudanças principais sobre PHP 5.4
, que está disponível no RHEL 7:
-
PHP
utiliza o FastCGI Process Manager (FPM) por padrão (seguro para uso com um threadedhttpd
) -
As variáveis
php_value
ephp-flag
não devem mais ser usadas nos arquivos de configuraçãohttpd
; em vez disso, elas devem ser definidas na configuração do pool/etc/php-fpm.d/*.conf
-
PHP
os erros de script e avisos são registrados no arquivo/var/log/php-fpm/www-error.log
ao invés de/var/log/httpd/error.log
-
Ao alterar a variável de configuração do PHP
max_execution_time
, a configuraçãohttpd
ProxyTimeout
deve ser aumentada para corresponder -
O usuário executando scripts
PHP
agora está configurado na configuração do pool FPM (o arquivo/etc/php-fpm.d/www.conf
; o usuárioapache
é o padrão) -
O serviço
php-fpm
precisa ser reiniciado após uma mudança de configuração ou após a instalação de uma nova extensão -
A extensão
zip
foi movida do pacotephp-common
para um pacote separado,php-pecl-zip
As seguintes extensões foram removidas:
-
aspell
-
mysql
(note que as extensõesmysqli
epdo_mysql
ainda estão disponíveis, fornecidas pelo pacotephp-mysqlnd
) -
memcache
15.1.4. Mudanças notáveis em Perl
Perl 5.26
, distribuído com a RHEL 8, introduz as seguintes mudanças em relação à versão disponível na RHEL 7:
-
Unicode 9.0
é agora suportado. -
São fornecidas novas sondas
op-entry
,loading-file
, eloaded-file
SystemTap
. - O mecanismo de cópia-em-escrita é usado ao atribuir escalares para melhorar o desempenho.
-
O módulo
IO::Socket::IP
para lidar com soquetes IPv4 e IPv6 foi adicionado de forma transparente. -
O módulo
Config::Perl::V
para acessar os dadosperl -V
de forma estruturada foi adicionado. -
Um novo pacote
perl-App-cpanminus
foi adicionado, que contém o utilitáriocpanm
para obter, extrair, construir e instalar módulos do repositório Comprehensive Perl Archive Network (CPAN). -
O diretório atual
.
foi removido do caminho de busca do módulo@INC
por razões de segurança. -
A declaração
do
agora retorna uma advertência de depreciação quando falha em carregar um arquivo por causa da mudança de comportamento descrita acima. -
A chamada
do subroutine(LIST)
não é mais suportada e resulta em um erro de sintaxe. -
Os hashes são randomizados por padrão agora. A ordem na qual chaves e valores são retornados de um hash muda em cada execução
perl
. Para desabilitar a randomização, defina a variável de ambientePERL_PERTURB_KEYS
para0
. -
Não é mais permitido o uso de caracteres não-formatados no formato
{
em padrões de expressão regular. -
O suporte de escopo léxico para a variável
$_
foi removido. -
A utilização do operador
defined
em uma matriz ou hash resulta em um erro fatal. -
A importação de funções do módulo
UNIVERSAL
resulta em um erro fatal. -
As ferramentas
find2perl
,s2p
,a2p
,c2ph
, epstruct
foram removidas. -
A instalação
${^ENCODING}
foi removida. O modo padrão do pragmaencoding
não é mais suportado. Para escrever o código fonte em outras codificações além deUTF-8
, use a opção de codificaçãoFilter
. -
A embalagem
perl
está agora alinhada com o upstream. O pacoteperl
também instala módulos centrais, enquanto o intérprete/usr/bin/perl
é fornecido pelo pacoteperl-interpreter
. Em versões anteriores, o pacoteperl
incluía apenas um intérprete mínimo, enquanto que o pacoteperl-core
incluía tanto o intérprete quanto os módulos principais. -
O módulo
IO::Socket::SSL
Perl não carrega mais um certificado de autoridade de certificado do arquivo./certs/my-ca.pem
ou do diretório./ca
, uma chave privada do servidor do arquivo./certs/server-key.pem
, um certificado do servidor do arquivo./certs/server-cert.pem
, uma chave privada do cliente do arquivo./certs/client-key.pem
, e um certificado do cliente do arquivo./certs/client-cert.pem
. Especifique os caminhos para os arquivos explicitamente em seu lugar.
15.1.5. Mudanças notáveis em Ruby
A RHEL 8 fornece Ruby 2.5
, que introduz inúmeras novas características e melhorias em relação a Ruby 2.0.0
, disponível na RHEL 7. As mudanças notáveis incluem:
- Foi adicionado um coletor de lixo incremental.
-
A sintaxe
Refinements
foi adicionada. - Os símbolos são agora coletados de lixo.
-
Os níveis de segurança
$SAFE=2
e$SAFE=3
estão agora obsoletos. -
As classes
Fixnum
eBignum
foram unificadas na classeInteger
. -
O desempenho foi melhorado otimizando a classe
Hash
, melhorando o acesso às variáveis de instância, e a classeMutex
sendo menor e mais rápida. - Certas APIs antigas foram depreciadas.
-
Bibliotecas agrupadas, tais como
RubyGems
,Rake
,RDoc
,Psych
,Minitest
, etest-unit
, foram atualizadas. -
Outras bibliotecas, como
mathn
,DL
,ext/tk
, eXMLRPC
, que anteriormente eram distribuídas comRuby
, são depreciadas ou não estão mais incluídas. -
O esquema de versão
SemVer
é agora usado para a versãoRuby
.
15.1.6. Mudanças notáveis em SWIG
RHEL 8 inclui o Empacotador Simplificado e o Gerador de Interface (SWIG) versão 3.0, que fornece inúmeras novas características, melhorias e correções de bugs sobre a versão 2.0 distribuída no RHEL 7. Mais notavelmente, o suporte ao padrão C 11 foi implementado. SWIG
agora suporta também Go 1.6
, PHP 7
, Octave 4.2
, e Python 3.5
.
15.1.7. Node.js
novo na RHEL
Node.js
, uma plataforma de desenvolvimento de software para a construção de aplicações de rede rápidas e escaláveis na linguagem de programação JavaScript, é fornecida pela primeira vez na RHEL. Anteriormente, estava disponível apenas como uma Coleção de Software. A RHEL 8 fornece Node.js 10
.
15.1.8. Tcl
Tool command language (Tcl) é uma linguagem de programação dinâmica. O intérprete para esta linguagem, juntamente com a biblioteca C, é fornecido pelo pacote tcl
.
Usando Tcl emparelhado com Tk (Tcl/Tk) permite a criação de aplicações GUI em várias plataformas Tk é fornecido pelo pacote tk
.
Note que Tk pode se referir a qualquer um dos seguintes itens:
- Um kit de ferramentas de programação para várias linguagens
- Uma biblioteca Tk C disponível para várias línguas, tais como C, Ruby, Perl e Python
- Um intérprete de desejos que instancia um console Tk
- Uma extensão Tk que acrescenta uma série de novos comandos a um determinado intérprete Tcl
15.1.8.1. Mudanças notáveis no Tcl/Tk 8.6
O RHEL 8 é distribuído com Tcl/Tk version 8.6que proporciona múltiplas mudanças notáveis sobre Tcl/Tk version 8.5:
- Apoio à programação orientada a objetos
- Implementação de avaliação sem empilhamento
- Tratamento melhorado de exceções
- Coleta de pacotes de terceiros construídos e instalados com Tcl
- Operações com múltiplas roscas habilitadas
- Suporte a scripts com base em banco de dados SQL
- Suporte a redes IPv6
- Compressão Zlib embutida
Processamento de listas
Dois novos comandos,
lmap
edict map
estão disponíveis, que permitem a expressão de transformações sobre Tcl contêineres.Canais empilhados por roteiro
Dois novos comandos,
chan push
echan pop
estão disponíveis, que permitem adicionar ou remover transformações de ou para os canais de E/S.
Para informações mais detalhadas sobre Tcl/Tk version 8.6 mudanças e novas resistências, veja os seguintes recursos:
Se você precisar migrar para Tcl/Tk 8.6ver Migrando para Tcl/Tk 8.6.