Instalei meu pacote personalizado contendo vários arquivos.
Executar rpm --upgrade
uma segunda vez gera muitos erros:
File ABC from install of mypackage-1.0-0.i386 conflicts with file from package mypackage-1.0-0.i386
O RPM sai com o código de erro 5.
Mas é o mesmo pacote com o mesmo número de versão! Não deveria dizer "já instalado" ou algo assim? O que preciso fazer com o arquivo de especificação ou comando de atualização rpm para evitar esse problema?
Correndo rpm --upgrade --replacefiles
diz "pacotemeupacote-1.0-0.i386já instalado", com código de saída 5
(Eu realmente não quero substituir os arquivos se eles não foram alterados ...
Responder1
Você tem várias opções. O mais fácil é aumentar a versão e/ou lançamento ao construir um novo pacote para que o rpm -U
comando (upgrade) funcione normalmente. Se não quiser fazer isso, você pode usar rpm -U --replacefiles --replacepkgs
para reinstalar efetivamente o pacote. Uma terceira opção é remover o pacote antes de instalar o “novo”.
Em todos esses casos, todos os arquivos que fazem parte do paylod regular (ou seja, não estão marcados como noreplace
arquivos de configuração) serão substituídos pelas versões mais recentes. É assim que o RPM funciona. Se você quiser seguir o caminho de atualizar apenas as coisas que foram alteradas, você precisará gerar pacotes DRPM (Delta RPM), que contêm apenas diferenças de uma versão anterior. Isso exigirá que você aumente seus números de versão e/ou lançamento ao reconstruir. Nunca fiz pacotes delta RPM, então não posso oferecer nenhum conselho sobre eles.