Capítulo 5. Problemas a serem considerados para a stretch

Índice

5.1. Itens específicos da atualização para stretch
5.1.1. Montagem tardia de /usr não tem mais suporte
5.1.2. Acesso via FTP aos espelhos hospedados pelo Debian será removido
5.1.3. Pacotes obsoletos dignos de nota
5.1.4. Coisas para fazer depois da atualização e antes de reinicializar
5.1.5. Executáveis agora são compilados como executáveis independentes de posição (PIE) por padrão
5.1.6. A maioria dos pacotes de compatibilidade com a LSB foram removidos
5.2. Limitações no suporte de segurança
5.2.1. Situação da segurança dos navegadores web
5.2.2. Falta de suporte de segurança para o ecossistema em torno da libv8 e Node.js
5.3. Cuidados especiais com pacotes específicos
5.3.1. Cifras antigas e protocolo SSH1 desabilitados no OpenSSH por padrão
5.3.2. Possíveis mudanças retro incompatíveis no APT
5.3.3. Desktops migrarão para o driver Xorg libinput
5.3.4. Upstart removido
5.3.5. A ferramenta debhelper agora gera pacotes dbgsym por padrão
5.3.6. Mudanças relacionadas ao OpenSSL
5.3.7. Mudanças no Perl que podem quebrar software de terceiros
5.3.8. Incompatibilidade em PostgreSQL PL/Perl
5.3.9. O pacote net-tools se tornará obsoleto em favor do iproute2
5.3.10. A opção de montagem _netdev é recomendada ao usar dispositivos AoE (ATA over ethernet)
5.3.11. Avisos inofensivos Unescaped ... in regex is deprecated, ... durante a atualização
5.3.12. Migração do armazenamento de políticas SELinux

Algumas vezes, mudanças introduzidas em uma nova versão têm efeitos colaterais que não podem ser evitados ou que acabam expondo bugs em outros locais. Esta seção documenta problemas conhecidos. Por favor, leia também a errata, a documentação dos pacotes relevantes, relatórios de bugs e outras informações mencionadas na Seção 6.1, “Leitura complementar”.

5.1. Itens específicos da atualização para stretch

Esta seção aborda itens relacionados à atualização da jessie para a stretch.

5.1.1. Montagem tardia de /usr não tem mais suporte

[Nota]Nota

Esta seção somente se aplica a sistemas que usam um kernel personalizado, onde /usr está em um ponto de montagem separado de /. Se você usa os pacotes de kernel fornecidos pelo Debian, você não é afetado por esse problema.

A montagem de /usr usando somente ferramentas encontradas em / não tem mais suporte. Isso tem funcionado somente para algumas poucas configurações específicas no passado, e agora elas estão explicitamente sem suporte.

Isso significa que para a stretch todos os sistemas onde /usr seja uma partição separada precisam usar um gerador de initramfs que montará /usr. Todos os geradores de initramfs na Stretch fazem isso.

5.1.2. Acesso via FTP aos espelhos hospedados pelo Debian será removido

Os espelhos hospedados pelo Debian cessarão o fornecimento de acesso via FTP. Se você tem usado o protocolo ftp: no seu sources.list, por favor, migre para http:. Por favor, considere o seguinte exemplo para a migração:

deb http://deb.debian.org/debian          stretch         main
deb http://deb.debian.org/debian-security stretch/updates main

# variante tor (requer apt-transport-tor)
# deb  tor+http://vwakviie2ienjx6t.onion/debian          stretch            main
# deb  tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates    main

Os exemplos acima não incluem non-free e contrib. Por favor, lembre-se de incluí-los caso você precise desses componentes habilitados.

Para mais informação, por favor, consulte este anúncio: Shutting down public FTP services.

5.1.3. Pacotes obsoletos dignos de nota

A seguinte lista é de pacotes conhecidos e obsoletos dignos de nota (veja Seção 4.8, “Pacotes obsoletos” para uma descrição).

A lista de pacotes obsoletos inclui:

  • A maior parte dos pacotes -dbg foi removida do repositório main. Eles foram substituídos por pacotes -dbgsym, que estão disponíveis no repositório debian-debug. Por favor, veja Seção 2.2.7, “A new archive for debug symbols”.

  • Os gerenciadores de senhas fpm2 e kedpm não são mais mantidos pelo upstream. Por favor, use outro gerenciador de senhas, como o pass, keepassx, ou keepass2. Certifique-se de extrair as suas senhas do fpm2 e kedpm antes de remover os pacotes.

  • O pacote net-tools tornou-se obsoleto em favor do iproute2. Veja Seção 5.3.9, “O pacote net-tools se tornará obsoleto em favor do iproute2 ou o manual de referência Debian para mais informação.

  • O pacote de ferramentas de monitoramento nagios3 foi removido da stretch. O pacote icinga é o substituto mais próximo. Ele lê os seus arquivos de configuração a partir de um caminho diferente do usado pelo nagios mas, fora isso, é compatível.

5.1.4. Coisas para fazer depois da atualização e antes de reinicializar

Quando o apt-get dist-upgrade terminar, a atualização formal estará completa. Para a atualização da stretch, não é necessária nenhuma ação especial antes de executar uma reinicialização.

5.1.5. Executáveis agora são compilados como executáveis independentes de posição (PIE) por padrão

Por padrão, o compilador GNU GCC 6 fornecido pelo Debian stretch compilará todos os executáveis como independentes de posição. Isso fornece uma forma de mitigar uma classe inteira de vulnerabilidades.

Infelizmente, o kernel Linux fornecido no Debian 8 (até o 8.7) apresenta um problema que pode fazer com que alguns programas compilados como executáveis independentes de posição falhem com uma mensagem não descritiva como falha de segmentação. Esse problema está resolvido na versão de Linux fornecida na 8.8 (versão 3.16.43 ou posterior) e no kernel fornecido no Debian 9 (versão 4.9 ou posterior).

Nós recomendamos que você atualize o seu kernel para uma versão corrigida e então reinicialize antes de atualizar para a stretch. Se você estiver executando o kernel do Debian 8.8 ou mais novo, você não é afetado por esse problema.

Se você estiver executando uma versão afetada do kernel durante a atualização, nós recomendamos fortemente que você faça uma reinicialização no kernel da stretch imediatamente depois da atualização para evitar de ser atingido por esse problema.

5.1.5.1. Mudanças de comportamento de PIE para administradores de sistemas e desenvolvedores

[Nota]Nota

Esta seção é direcionada principalmente a desenvolvedores ou administradores de sistemas. Usuários de desktop dificilmente serão afetados por esta seção.

O que foi citado acima também leva a algumas mudanças das quais deve-se estar ciente.

  • A ferramenta file (entre outras) classificará tais binários como um objeto compartilhado em vez de um executável. Se você tiver filtros baseados em arquivos binários, pode ser preciso atualizá-los (por exemplo, filtros de spam).

  • Bibliotecas estáticas sendo compiladas em um executável agora também precisam ser compiladas como código independente de posição. A seguinte mensagem de erro do "linker" é um sintoma disso:

    relocação ... contra "[SÍMBOLO]" não pode ser usada ao fazer um objeto compartilhado; recompile com -fPIC
    

    Note que, mesmo apesar de a mensagem de erro dizer -fPIC, é suficiente recompilar com -fPIE (que é o padrão nos pacotes GCC 6 que são parte da stretch).

  • Historicamente, executáveis independentes de posição têm sido associados com perda de desempenho em alguns tipos de equipamento. Notadamente, a arquitetura Debian i386 (máquinas Intel 32-bit). Enquanto o GCC 5 e o GCC 6 têm grandemente melhorado o desempenho para executáveis independentes de posição em Intel 32-bit, essa otimização pode não ser aplicável para todas as arquiteturas. Por favor, considere avaliar o desempenho do seu código se você estiver usando como alvo arquiteturas de máquina com um número muito limitado de registradores.

5.1.6. A maioria dos pacotes de compatibilidade com a LSB foram removidos

Devido à falta de interesse e testabilidade, o Debian removeu a vasta maioria dos pacotes de compatibilidade com a "Linux Standard Base" (LSB).

O Debian ainda fornecerá alguns poucos utilitários LSB chave usados internamente e externamente, tais como lsb-release e as funções de inicialização do sysvinit em lsb-base. Além disso, o Debian ainda firmemente apresenta suporte ao "Filesystem Hierarchy Standard" (FHS) versão 2.3 com as pequenas alterações descritas no Manual de Políticas Debian.

5.2. Limitações no suporte de segurança

Há alguns pacotes onde o Debian não pode prometer fornecer portes retroativos mínimos para problemas de segurança. Esses são abordados nas subseções a seguir.

Note que o pacote debian-security-support ajuda a acompanhar a situação do suporte de segurança dos pacotes instalados.

5.2.1. Situação da segurança dos navegadores web

O Debian 9 inclui diversos motores de navegadores que são afetados por um fluxo constante de vulnerabilidades de segurança. A alta taxa de vulnerabilidades e a ausência parcial de suporte do upstream na forma de ramos de longo prazo tornam muito difícil o suporte a esses navegadores com correções de segurança portadas retroativamente. Além disso, as interdependências das bibliotecas tornam impossível atualizar para uma versão upstream mais nova. Por isso, navegadores feitos sobre os motores webkit, qtwebkit e khtml foram incluídos na stretch, mas não estão cobertos pelo suporte de segurança. Esses navegadores não devem ser usados em sites web não confiáveis.

Para uso geral de navegador web recomendamos Firefox ou Chromium.

Chromium - enquanto construído sobre a base de código Webkit - é um pacote sem dependência, que será mantido atualizado através da reconstrução das versões atuais do Chromium para a estável. O Firefox e o Thunderbird também serão mantidos atualizados através da reconstrução das versões ESR atuais para a estável.

5.2.2. Falta de suporte de segurança para o ecossistema em torno da libv8 e Node.js

A plataforma Node.js é construída em cima da libv8-3.14, que vivencia um alto volume de problemas de segurança, mas atualmente não há voluntários no projeto ou na equipe de segurança suficientemente interessados e dispostos a gastar a grande quantidade de tempo necessária para conter esses problemas encontrados.

Infelizmente, isso significa que a libv8-3.14, o nodejs e o ecossistema de pacotes node-* associados não devem ser atualmente utilizados com conteúdo não confiável, tal como dados não avaliados oriundos da Internet.

Além disso, esses pacotes não receberão quaisquer atualizações de segurança durante o tempo de vida da versão stretch.

5.3. Cuidados especiais com pacotes específicos

Na maioria dos casos, os pacotes deverão atualizar sem problemas entre jessie e stretch. Existe um pequeno número de casos onde alguma intervenção pode ser necessária, seja antes ou durante a atualização; esses estão detalhados a seguir, baseados por pacote.

5.3.1. Cifras antigas e protocolo SSH1 desabilitados no OpenSSH por padrão

O OpenSSH versão 7 desabilitou algumas cifras antigas e o protocolo SSH1 por padrão. Por favor, seja cuidadoso ao atualizar máquinas nas quais você somente tem acesso via SSH.

Por favor, veja a documentação do OpenSSH para mais informação.

5.3.2. Possíveis mudanças retro incompatíveis no APT

Esta seção aborda algumas mudanças incompatíveis no APT que podem afetar o seu sistema.

5.3.2.1. O APT agora obtém arquivos com um usuário sem privilégios (_apt)

O APT agora tentará descartar todos os privilégios de "root" antes de obter arquivos a partir dos espelhos. O APT pode detectar alguns casos comuns onde isso falharia e alternativamente obter coisas como "root" com um aviso. Entretanto, ele pode falhar em detectar algumas configurações exóticas (por exemplo, regras de "firewall" específicas por "UID").

Se você encontrar problemas com essa funcionalidade, por favor, mude para o usuário _apt e verifique se ele:

  • tem acesso de leitura aos arquivos em /var/lib/apt/lists e /var/cache/apt/archives.

  • tem acesso de leitura ao armazenamento de confiança do APT (/etc/apt/trusted.gpg e /etc/apt/trusted.gpg.d/)

  • pode resolver nomes DNS e baixar arquivos. Exemplos de métodos para testar:

    # A partir do pacote dnsutils (se estiver usando tor, por favor, verifique com tor-resolve).
    $ nslookup debian.org >/dev/null || echo "Não pode resolver debian.org"
    $ wget -q https://debian.org/ -O- > /dev/null || echo "Não pode baixar a página inicial de debian.org"
    

    Para problemas com o DNS, por favor, verifique se /etc/resolv.conf pode ser lido.

5.3.2.2. Novo motor para APT "pinning"

O APT 1.1 introduziu um novo motor de "pinning" que agora combina com a descrição na página de manual.

O antigo motor atribuía uma prioridade de "pin" por pacote; o novo motor atribui prioridades de "pin" por versão. Ele então escolhe a versão com o valor de "pin" mais alto que não seja um rebaixamento de versão ou que tenha um valor de "pin" > 1000.

Isso muda o efeito de alguns "pins", especialmente os negativos. Anteriormente, fazer "pinning" em uma versão para -1 efetivamente prevenia o pacote de ser instalado (o "pin" do pacote era -1); isso agora apenas previne de ser instalada a versão desse pacote.

5.3.2.3. Novos requisitos para repositório APT

[Nota]Nota

Esta seção somente se aplica se você tem (ou pretende ter) repositórios de terceiros habilitados ou se você mantém um repositório APT.

Para melhorar a estabilidade do download e assegurar a segurança do conteúdo baixado, o APT agora exige o seguinte de um repositório APT:

  • O arquivo InRelease deve estar disponível.

  • Todos os metadados devem incluir pelo menos somas de verificação SHA256 de todos os itens. Isso inclui a assinatura GPG do arquivo InRelease.

  • Assinaturas no arquivo InRelease devem ser feitas com um tamanho de chave de 2048 bits ou maior.

Se você depende de um repositório de terceiros que não consegue atender os requisitos acima, por favor, encoraje-os a atualizarem o repositório. Mais informação sobre o arquivo InRelease pode ser encontrada na Wiki do Debian.

5.3.3. Desktops migrarão para o driver Xorg libinput

[Nota]Nota

Esta seção somente é relevante se você ajustou ou precisa mudar a configuração padrão de entrada do Xorg.

Na jessie, o driver padrão de entrada para o Xorg é o driver evdev. Na stretch, o padrão mudou para libinput. Se você tem uma configuração do Xorg que depende do driver evdev, você terá que convertê-la para o driver libinput ou reconfigurar o seu sistema para usar o driver evdev.

O que segue é uma configuração de exemplo para libinput para habilitar a funcionalidade Emulate3Buttons.

Section "InputClass"
        Identifier "mouse"
        MatchIsPointer "on"
        Driver "libinput"
        Option "MiddleEmulation" "on"
EndSection

Insira-a em /etc/X11/xorg.conf.d/41-middle-emulation.conf, reinicialize o computador (ou reinicie o seu Xserver) e ela deverá estar agora habilitada.

O driver evdev ainda está disponível no pacote xserver-xorg-input-evdev.

5.3.4. Upstart removido

Devido à falta de mantenedores no upstream, o sistema de inicialização Upstart foi removido da stretch. Se o seu sistema depende desse pacote, você deve notar que ele não será atualizado durante o tempo de vida do Debian 9 e, a partir do Debian 10 (burster), trabalhos do Upstart poderão ser removidos dos pacotes.

Por favor, considere mudar para um sistema de inicialização com suporte, como systemd ou OpenRC.

5.3.5. A ferramenta debhelper agora gera pacotes dbgsym por padrão

[Nota]Nota

Esta seção é direcionada principalmente a desenvolvedores ou organizações que constroem os seus próprios pacotes debian.

A suíte de ferramentas debhelper agora gerará pacotes dbgsym por padrão para binários ELF. Se você desenvolve e empacota binários, por favor, verifique se as suas ferramentas têm suporte a esses pacotes extras gerados automaticamente.

Se você usa reprepro, você deve atualizá-lo para a versão 4.17.0 pelo menos. Para aptly, você precisará pelo menos a versão 1.0.0, que infelizmente não está disponível no Debian stretch.

Caso as suas ferramentas não sejam capazes de lidar com isso adequadamente, você pedir ao debhelper que desabilite essa funcionalidade adicionando noautodbgsym na variável DEB_BUILD_OPTIONS do seu serviço de construção. Por favor, veja a página de manual do dh_strip para mais informação.

5.3.6. Mudanças relacionadas ao OpenSSL

O aplicativo openssl espera argumentos do tipo opção antes de argumentos do tipo não opção. Por exemplo, isto não funciona mais:

openssl dsaparam 2048 -out file

enquanto isto ainda funciona:

openssl dsaparam -out file 2048

O comando openssl enc mudou o "digest" (usado para criar a chave a partir da "passphrase") de MD5 para SHA256. O "digest" pode ser especificado com a opção -md no caso de arquivos antigos precisarem ser descriptografados com um OpenSSL mais novo (ou vice-versa).

As cifras 3DES e RC4 não estão mais disponíveis para comunicação TLS/SSL. Servidores que usam OpenSSL não podem oferecê-las e clientes não podem conectar a servidores que oferecem somente elas. Isso significa que o OpenSSL e o Windows XP não compartilham nenhuma cifra em comum.

O pacote libssl-dev fornece arquivos de cabeçalho para compilar contra o OpenSSL 1.1.0. A API mudou consideravelmente e é possível que o software não vá compilar mais. Existe uma visão geral das mudanças. Se você não pode atualizar o seu software, existe também o pacote libssl1.0-dev, que fornece cabeçalhos para o OpenSSL 1.0.2.

5.3.7. Mudanças no Perl que podem quebrar software de terceiros

[Nota]Nota

Esta seção se aplica a código mantido fora do Debian - módulos e scripts Perl legados, de terceiros ou locais.

  • Alguns módulos foram removidos do Perl "core" e agora são distribuídos em pacotes separados. Exemplos notáveis são CGI, disponível no pacote libcgi-pm-perl, e Module::Build, disponível no pacote libmodule-build-perl.

  • O diretório de trabalho atual (.) foi removido da lista padrão de diretórios "include", @INC. Isso pode afetar o uso de require(), do(), etc, onde os argumentos são arquivos no diretório atual.

    Todos os programas e módulos perl distribuídos pelo Debian devem ter sido corrigidos para tratar quaisquer incompatibilidades causadas pelo descrito acima; por favor, relate bugs se esse não for o caso. Como a mudança foi agora feita no perl 5.26.0, software de terceiros deve também começar a ser corrigido. Informação para desenvolvedores sobre como corrigir esse problema é fornecida nas notas de lançamento do perl 5.26 (veja a seção SECURITY).

    Se necessário, você pode retornar temporariamente o . em @INC globalmente, comentando a linha em /etc/perl/sitecustomize.pl, mas você deve fazer isso somente se compreender os riscos potenciais. Essa medida paliativa será removida no Debian 10. Você pode também definir a variável de ambiente PERL_USE_UNSAFE_INC em um contexto específico que terá o mesmo efeito.

  • A lista completa de mudanças no Perl desde o Debian 8 está disponível em perl522delta e perl524delta.

5.3.8. Incompatibilidade em PostgreSQL PL/Perl

O pacote da linguagem procedural PostgreSQL PL/Perl na jessie é incompatível com a versão do Perl na stretch. O pacote postgresql-plperl-9.4 será removido durante a atualização, tornando procedimentos Perl no lado do servidor disfuncionais. Atualizar para PostgreSQL 9.6 não deverá ser afetado; os procedimentos funcionarão no novo cluster PostgreSQL se o pacote postgresql-plperl-9.6 estiver instalado. Em caso de dúvida, faça uma cópia de segurança de seus clusters PostgreSQL 9.4 antes de atualizar para a stretch.

5.3.9. O pacote net-tools se tornará obsoleto em favor do iproute2

O pacote net-tools não faz mais parte de novas instalações por padrão, uma vez que a sua prioridade foi rebaixada de importante para opcional. Os usuários são aconselhados a usar o moderno conjunto de ferramentas iproute2 no seu lugar (que tem sido parte de novas instalações já por vários lançamentos). Se você ainda prefere continuar usando os programas do net-tools, você pode simplesmente instalá-los via

apt install net-tools

[Atenção]Atenção

Por favor, tenha em mente que o net-tools pode ser desinstalado durante a atualização se ele foi instalado somente para satisfazer uma dependência. Se você depende do net-tools, por favor, lembre-se de marcá-lo como um pacote instalado manualmente antes da atualização via:

apt-mark manual net-tools

Aqui está um resumo dos comandos do net-tools, junto com os seus equivalentes do iproute2:

comandos legados do net-toolscomandos substitutos do iproute2
arpip n (ip neighbor)
ifconfigip a (ip addr), ip link, ip -s (ip -stats)
iptunnelip tunnel
nameifip link
netstatss, ip route (para netstat -r), ip -s link (para netstat -i), ip maddr (para netstat -g)
routeip r (ip route)

5.3.10. A opção de montagem _netdev é recomendada ao usar dispositivos AoE (ATA over ethernet)

[Nota]Nota

Isso somente se aplica a sistemas que têm dispositivos ATA over ethernet (AoE) montados. Se o sistema não monta nenhum compartilhamento de rede, você pode pular esta seção com segurança.

Devido a uma limpeza na forma de lidar com a desconfiguração de rede, dispositivos AoE em uso não são mais tratados como o esperado durante o desligamento, possivelmente resultando em travamentos e/ou perda de dados. Para mitigar essa situação, é sugerido montar tais dispositivos usando a opção de montagem _netdev. Essa opção está disponível ao usar swap sobre AoE também.

5.3.11. Avisos inofensivos Unescaped ... in regex is deprecated, ... durante a atualização

Durante a atualização, você poderá ver alguns avisos como:

Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^(.*?)(\\)?\${ <-- HERE ([^{}]+)}(.*)$/ at /usr/share/perl5/Debconf/Question.pm line 72.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ([^}]+)}/ at /usr/share/perl5/Debconf/Config.pm line 30.

Isso é inofensivo e acontece se o pacote perl-base é atualizado antes do pacote debconf.

5.3.12. Migração do armazenamento de políticas SELinux

[Nota]Nota

Esta seção somente se aplica a sistemas que estejam usando SELinux, o que não é habilitado por padrão.

Na stretch, o armazenamento de políticas SELinux foi movido de /etc/selinux/<nome_da_politica> para /var/lib/selinux/<nome_da_politica>. Além disso, o formato usado dentro do armazenamento mudou.

As políticas fornecidas pelo Debian (por exemplo, a partir do pacote selinux-policy-default) serão migradas automaticamente. Entretanto, políticas específicas do sistema precisam ser migradas manualmente.

O pacote semanage-utils fornece o script /usr/lib/selinux/semanage_migrate_store para fazer essa transição.