Após um ano de desenvolvimento o lançamento do gerenciador de pacotes . O projeto RPM4 é desenvolvido pela Red Hat e utilizado em distribuições como RHEL (incluindo os projetos derivados CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen e muitas outras. Anteriormente, era desenvolvido por uma equipe independente de desenvolvedores projeto , que não está diretamente relacionado ao RPM4 e atualmente está abandonado (não atualizado desde 2010). O código do projeto sob as licenças GPLv2 e LGPLv2.
As melhorias mais notáveis no RPM 4.16:
- Implementado um novo backend para armazenamento de banco de dados no SGBD SQLite. Este backend no Fedora Linux 33 em vez do backend baseado no BerkeleyDB.
- Foi implementado um novo backend experimental para armazenamento de banco de dados no BDB (Oracle Berkeley DB), funcionando em modo somente leitura. A implementação foi escrita do zero e não usa o código do antigo backend BerkeleyDB, que foi declarado obsoleto, mas ainda é incluído por padrão.
- O backend experimental de banco de dados baseado em LMDB foi removido.
- O backend de banco de dados baseado em armazenamento NDB foi declarado estável.
- Nos macros e expressões "%if" foi adicionada a suporte ao (%{expr:1==0?»sim»:»não»}) e foi sugerida uma funcionalidade embutida de comparação de versões (‘%[v»3:1.2-1″ > v»2.0″]’).
- Implementada a suporte à classificação de arquivos com base nos tipos MIME de seu conteúdo.
- Adicionada a capacidade de geração de dependências utilizando .
- Uma nova versão da API de parsing e comparação para as linguagens C e Python foi proposta.
- Implementada a paralelização da execução do brp-strip e componentes do conjunto de testes. Feita a otimização da paralelização do processo de geração de pacotes.
- No utilitário rpmdb a opção "—salvagedb" para recuperação de banco de dados corrompido (funciona apenas com o backend NDB).
- Novos macros %arm32, %arm64 e %riscv foram adicionados para definição da arquitetura. Também foi adicionado um macro embutido %{macrobody:…} para obtenção do conteúdo dos macros.
- Nos expressões foi proibido o uso de palavras não destacadas entre aspas, ou seja, em vez de 'a == b' deve-se escrever '«a» == «b»'.
- No parser de expressões foi implementada a sintaxe "%[…]" para execução de expressões com expansão de macros (diferente de "%{expr:…}", onde os macros são executados primeiro).
- Foi adicionada a suporte para a expansão curta de expressões lógicas e ternárias ("%[0 && 1 / 0]" é tratado como 0 e não resulta em um erro por tentativa de divisão por zero).
- Foi adicionada a suporte para o operador lógico NOT em contextos arbitrários (!"%?foo").
- O comportamento dos operadores "||" e "&&" foi alinhado com Perl/Python/Ruby, ou seja, ao invés de retornar um valor booleano, agora retorna o último valor computado (por exemplo, "%[2 || 3]" retornará 2).
- Foi adicionada a possibilidade de verificar formatos alternativos de assinaturas digitais e hashes.
- Foi adicionada a suporte para meta-dependências (Requires(meta): somepkg), que não afetam a ordem de instalação e remoção.
- Foi adicionada a opção "--rpmv3" ao rpmsign para forçar o uso de assinaturas digitais no formato RPM3.
- Foi adicionada a opção de instalação "--excludeartifacts" para pular a instalação de documentação, exemplos de arquivos de configuração e outros dados auxiliares.
- O suporte para RPMv3 e criptobackends beecrypt e NSS foi declarado obsoleto.
- Foi adicionada a suporte para DSA2 (gcrypt) e EdDSA.
Fonte: opennet.ru
