O RPM 4.15 será lançado este ano como a mais recente atualização do RPM4 e o Fedora 31 está planejando fazer uso imediato do RPM 4.15, dado seus recursos novos/aprimorados. Espera-se que o RPM 4.15 forneça desempenho de criação mais rápido, um gerador de dependência de construção dinâmico, operações chroot experimentais para usuários não-root, detecção aprimorada de ARM e muitas correções. Portanto, o Fedora 31 planeja atualizar para o RPM 4.15.
Mais detalhes sobre os recursos/alterações do RPM 4.15 estão provisoriamente descritos no RPM.org.
Agora há uma proposta de mudança aguardando avaliação pelo FESCo para aprovar a mudança do Fedora 31 para fazer uso do RPM 4.15. O Fedora 31 deve ser lançado em novembro deste ano.
Resumo das alterações do RPM 4.14.x
Correções de bugs e melhorias gerais
- Adicionar suporte para operações chroot sem raiz no Linux (experimental);
- Adiciona um banco de dados fictício para melhor suportar sistemas sem rpmdb (Debian);
- Melhora a detecção de ARM, adicione suporte armv8
- Adicionar mapeamento de compatibilidade de arquitetura entre aarch64 e arm64
- Atualizações de Documentação.
Linha de comando
- Corrigir –setcaps em arquivos sem recursos não removendo-os
- Corrigir rpm2archive retornando nomes inválidos em rpms de origem
- Corrigir rpm2archive silenciosamente ignorando argumentos após o primeiro
- Corrija o código de saída do rpmsign para ser consistente com outras ferramentas
- Corrigir o argumento –dbpath não validado (RhBug: 1696408)
- Erro de saída em arquivos com mais de 4 GB em rpm2cpio (RhBug: 1662481)
Transações
- Sincronizar sistemas de arquivos atualizados no final das transações (RhBug: 1461765)
- Garantir que as correspondências de dependência do rpmdb estejam realmente no intervalo
- Manipule os digests não suportados da mesma forma que os desabilitados (RhBug: 1652529)
- Corrigir% de dependências de scriptlet que afetam a ordem de instalação
- Corrigir o SUID, o SGID e os recursos do% _minimize_writes stripping dos arquivos
- Corrigir um obscuro segfault na impressão digital rodada symlink (RhBug: 1660232)
- Corrigir pacotes sendo apagados em uma atualização com falha com dnf (RhBug: 1620275)
Consultas e verificação
- Skip Relocations: linha em pacotes não relocáveis na saída -qi
- Mostrar DistTag na saída -qi se presente no pacote
- Distinguir os recursos vazios e sem recursos na verificação do RPM (# 585)
- Corrigir o valor de saída do rpm -ql quando a opção -p for omitida (RhBug: 1680610)
- Corrigir rpm -ql gerando várias cópias de listas de arquivos em múltiplos argumentos
Construção de pacotes
- Várias operações paralelizadas até% _smp_build_ncpus:
- classificação de arquivos
- criação de sub-pacotes binários (# 211)
- Verificação de consistência de consistência de buildroot (RhBug: 1704353)
- Script de Política buildroot brp-strip-static-archive (RhBug: 1691822)
Spec
- Adicione% patchlist e% sourcelist seções à especificação, útil para declarar patches e fontes com o mínimo de clichê
- Adicione a variável $ RPM_BUILD_NCPUS a todos os ambientes de script de construção
- Adicionar suporte para patch automático e numeração de fonte
- Adicionar suporte para classificar o cursor (‘^’) acima da versão base
- Adicionar a opção –scm cli para a seleção de% autosetup SCM
- Adicionar ModularityLabel: tag e macro correspondente
- Adicione aviso no texto seguindo as diretivas% else ou% endif
- Adicionar aviso em links simbólicos absolutos em pacotes
- Corrigir o rastreamento de dependência de til em dependências ricas
- Corrigir espaço em branco em nomes de arquivos compactados não compactados em% setup
- Corrigir o código de saída de descompactação de% de configuração inconsistente entre as variantes
- Corrigir qualificadores de dependência inválidos nem sempre detectados
- Corrija os scriptlets de construção que potencialmente deixam postos de trabalho em segundo plano (# 134)
- Corrigir sinalizadores de verificação incorretos nos diretórios% doc e% license (# 655)
- Corrigir macros criadas para muitas tags, onde não faz sentido (# 689, RhBug: 555926)
- Corrigir algumas combinações% if-% else-% endif inválidas que não geram erro
- Certifique-se de que SOURCE_DATE_EPOCH esteja no passado
Macros
- Adicione macros de sinalizador de compilação específicas ao idioma global% build_cflags,% build_cxxflags,% build_fflags e% build_ldflags para opções do vinculador
- Adicione a macro% set_build_flags que pode ser usada para definir variáveis de ambiente para flags do compilador (CFLAGS etc)
- Adicionar macro primitiva getncpus incorporada para retornar o número de CPUs disponíveis para o processo
- Adicione a macro% _smp_build_ncpus para determinar o número de CPUs usadas para compilação
- Adicionar macro de ativação de LTO com reconhecimento de SMP% _lto_cflags
- Adicione os parâmetros -m (in) e M (ax) ao% autopatch para aplicar o intervalo de patches
- Rastrear e registrar falhas ao carregar arquivos de macro
- Corrigir% _smp_mflags e% _lto_cflags não estarem com reconhecimento de afinidade (RhBug: 891588)
- Corrigir erro no repositório do Git preexistente em% autosetup (# 239)
- Corrigir uma detecção de fim de macro quando a linha começar com ‘}’ (# 401)
- Corrigir redefinição de macros incorporadas falsamente
- Corrigir macro% make_build para fornecer saída detalhada por padrão
- Corrigir% {uncompress: …} falhas para gerar um erro real
- Corrigir buffer over-read de uma macro inacabada “% {!” Expansão
- Corrigir o nome do arquivo ausente e o número da linha para avisos e erros de macro
- Remover macros auxiliares da linguagem de script e scripts associados
- Remover as macros relacionadas com as ferramentas automáticas restantes
Políticas do Buildroot
- Leve o% _prefix em conta ao compactar as páginas do manual etc (# 538)
Geradores
- Adicione% {name},% {version},% {version} e% {release} disponíveis aos geradores
- Corrigir o gerador dist de Python quando não houver informação de ovo ou informação de dist.
- Corrigir elfdeps não retornando código de erro em erros
- Remover Mono geradores desatualizados e sem manutenção (# 673)
Debuginfo
- Adicione o sinalizador para usar a faixa -g em vez da faixa completa nos DSOs (RhBug: 1663264)
- Adicionar saída de estatísticas dwz
- Adicionar suporte para geração de ID de compilação a partir de arquivos ELF compactados (RhBug: 1650072,1650074)
- Corrigir a detecção do módulo do kernel para usar uma heurística mais confiável
- Corrigir a geração de debuginfo de interrupção (# 630) personalizada do% {_ smp_mflags}
- Corrigir executáveis independentes de posição sendo identificados incorretamente
- Corrigir ordem inconsistente de arquivos com link físico (RhBug: 1421272)
Formato do pacote
Assinaturas e chaves
- Adicione o resumo SHA256 aos cabeçalhos gpg-pubkey também
- Adicionar gpg (foo) fornece o keyid completo de pubkeys também
- Tornar o resumo do gpg-pubkey mais significativo
- Corrigir assinatura do arquivo IMA alterando hashes de pacotes e quebrando assinaturas
- Verifique os pacotes antes de assinar (RhBug: 1646388)
Plugins
- Adicione o plugin de auditoria do Linux para operações de pacote conforme o OSPP v4.2
- Corrigir o nível de log de erros do plugin SELinux
Ligações Python
- Adicione ligações para rpmdsIsWeak (), rpmdsIsRich () e rpmdsIsReverse ()
- Adicione ligações para rpmteVerified () + símbolos RPMSIG * relacionados
- Corrija o Python 3 para retornar dados de string como strings utf-8 com escape substituto em vez de bytes que nada mais na API aceita
- Mesclar os três sub-módulos de volta em um
Interface Lua
- Adicionar o auxiliar rpm.execute () para executar comandos sem shell
- Adicionar variáveis globais patch_nums e source_nums no contexto de especificação
- Mova o redirect2null () da posix para a extensão rpm (mas o posix ainda funciona para compatibilidade)
Recursos removidos
Alterações de API
APIs adicionadas
- Reservas de tags para RPMTAG_AUTOINSTALLED e RPMTAG_IDENTITY
- rpmdsIsWeak () e rpmdsIsReverse () para determinar os tipos de dependência
- rpmteVerified () para recuperar o status de verificação dos elementos de transação
APIs alteradas
- Descartar o suporte parcial para resumos não utilizados do MD2 e do RIPEMD160
- Corrigir incompatibilidade de código de retorno headerCheck () & regressão em 4.14.x
- Descarte o valor de retorno do tamanho do arquivo dos parâmetros rpmDoDigest ()
APIs removidas
- Mudanças na estrutura do QVA (XXX explain)
- Símbolos de arquivos VERIFY_FOO redundantes removidos, RPMVERIFY_FOO deve ser usado
- Eliminar rpmVerifyFile () reprovado e não utilizado
- Solte o cabeçalho rpmvf.h, os conteúdos relevantes movidos para rpmfiles.he rpmcli.h
Melhorias internas e limpezas
- Limpezas para assinatura de arquivos IMA, filtragem de consulta / verificação, ordenação, mecanismo de macro, análise de especificações, execução de scripts de criação, geração de assinaturas…
- Consolidar conhecimento de dependência em uma estrutura / tabela
- Corrigir o tamanho da string errada nos cabeçalhos vindos do rpmdb (# 398)
- Corrigir vários vazamentos de memória menores
- Implementar proteção de thread no pool de strings
- Otimizar a execução primitiva de macro integrada
- Corrigir rpmlog () potencialmente mudando errno
- Corrigir a saída de depuração ausente na configuração de capacidade
- Corrigir regressão lendo alguns pacotes antigos da era v4.0 (# 610)
- Suporte à queda para prelink desfazer no cálculo de resumo
- Otimizações de gerador de dependência e retrabalho para o futuro
Processo de construção
- Pule testes Lua e Python se não estiver habilitado no configure
- Numerosos testcases adicionados
- Parar de forçar sinalizadores de compilação -fPIC -DPIC na própria rpm
- Adicionar interruptor para desabilitar o plugin systemd-inhibit (# 361)
- Ligações do Python são padrão para o Python 3, o Python 2 está obsoleto (a versão mínima é o Python 2.7)
- Suporte Lua 5.2 – 5.3 sem hacks de compatibilidade, suporte a queda para 5.1
- Corrigir a construção do BDB ao selecionar automaticamente o BDB interno
- Adicionar suporte para construir rpm sem Berkeley DB (–disable-bdb)
- Remova o switch de configuração –with-external-db, simplifique a lógica
Notas de compatibilidade
- Eliminar o segundo argumento do gatilho de arquivo (também conhecido como $ 2)
- Arquivos de especificação que misturam a correção de numerosos / sintaxe de origem com patch / número de fonte 0 não funcionarão mais.