Atualmente estou testando a instalação de um RPM com um arquivo de configuração usando a config(noreplace)
diretiva.
Conformeusando configuração(noreplace)meu arquivo de especificações marca um único arquivo como um arquivo de configuração:
%config(noreplace) /opt/lm/dest/conf/db.xml
Fiz uma modificação no disco no arquivo para a versão 1 e continuei a atualizar para a versão 2. Eu esperava que a saída detalhada (ao usar -Uvh
) indicasse que ele criou um db.xml.rpmnew
arquivo que não criou, no entanto, as modificações no disco que fiz estão intactos.
Alguém sabe por que isso pode ser o caso?
Algumas informações básicas: estou usando o mesmo arquivo tar para criar as versões 1 e 2, o que não deve fazer diferença, mas pensei em mencioná-lo de qualquer maneira.
EDITAR 1:
Caso não esteja claro que o db.xml.rpmnew
arquivo não foi criado.
Responder1
O que você observa é o comportamento esperado. A.rpmnew
o pacote só é criado quando ambas as condições a seguir são atendidas:
- o arquivo de configuração padrão no novo pacote RPM é diferente do arquivo de configuração que foi originalmente incluído na versão atual/anterior do pacote RPM. (As alterações nos padrões foram feitas pelo mantenedor do pacote.)
- o arquivo de configuração real no disco foi alterado do padrão que estava incluído na versão atual/anterior do pacote. (As alterações nos padrões foram feitas pelo administrador.)
De acordo com o Changelog:
commit e64bf5b93ab689e6031fce4489e4ae38ebaebef1
Autor: Panu Matilainen
Data: terça-feira, 28 de agosto 09:04:09 2007 +0300Evite .rpmnew quando o arquivo não tiver sido alterado no pacote (rhbz#194246)
O comportamento atual de %config(noreplace) cria um .rpmnewfile se o tipo do arquivo atual tiver sido alterado para o que foi originalmente instalado.
O patch altera esse comportamento, então quando o antigo e o novo (no banco de dados e no pacote) são idênticos -> não alterados, a função retorna FA_SKIP -> não atrapalha nada, simplesmente pula a instalação do arquivo do pacote. Este patch também trata o caso oposto quando pacotes antigos e novos contêm
%config
links simbólicos e temos arquivos regulares no disco.Patch from Tomas Mraz.