Estou tentando empacotar um produto que consiste em muitos pacotes.
Tenho sucesso escrevendo todos os arquivos de especificações, as dependências entre os pacotes e assim por diante. Eles estão todos instalados e funcionam bem.
A única coisa que não consigo fazer é executar um teste de pré-requisição: Em certos casos, eu gostaria que os pacotes não fossem instalados, e o usuário recebesse um erro, explicando-lhe o que ele precisa. para corrigir primeiro, antes de executar a instalação dos pacotes.
Por exemplo: Eu quero verificar se o usuário está rodando no nível de execução 3, e se não, aborto toda a instalação, e peço ao usuário para reinstalar o CentOS no perfil "Mínimo" - como eu não quero tudo os pacotes extras que vem com "Desktop". (Este é apenas um exemplo, eu tenho alguns testes para realizar).
A maneira como abordei este problema é esta:
Eu criei uma espécie de 'meta package', que seu nome aparece em todos os outros pacotes 'Requires:' diretiva, então seria instalado primeiro pelo YUM, e nesse arquivo de especificação do pacote, no% co_de Na seção%, fiz os vários testes que queria realizar, gerando erros de teste quando aplicável e, em seguida, ' %pre
'.
A razão pela qual escolhi essa abordagem é esta: "Se cada pacote depender desse pacote e este pacote não puder ser instalado, a transação deverá falhar, assim que o gerenciador de pacotes desejar instalar um pacote que dependa de um pacote que falha na instalação ... afinal, a dependência não foi atendida ". No Gentoo, por exemplo, se um pacote falha na instalação, por qualquer motivo, o emerge para completamente - mesmo não para problemas de dependência; E há um sinalizador especial para que o emerge continue, apesar do erro retornado de um dos pacotes.
O problema é que, de fato, o pacote falha quando os testes falham (o RPM diz especificamente que ele retornou o código 1), MAS ... O YUM não parece se importar que isso aconteça - e continua a instalar tudo o resto, incluindo pacotes que dependem de um pacote que não está instalado (!). No final, ele simplesmente relata que todos os pacotes foram instalados com sucesso, espera pelo pacote que deliberadamente falhou ...
Eu estou supondo que a razão para isso é que a verificação de dependência acontece antes do início da transação e, de fato, as dependências são atendidas a partir dos vários repositórios à disposição do YUM. Ainda assim, não faz qualquer sentido para mim que, se uma dependência eventualmente falhar, a instalação de pacotes dependentes continuaria.
Minha lógica é falha? Eu duvido que seja um bug, já que alguém o teria encontrado agora (isso é no CentOS 6.3 se isso importa ...) - mas todo meu Google-foo não produziu nada. Eu nem encontrei alguém fazendo a mesma pergunta ... talvez eu esteja usando palavras-chave erradas?
Estou me aproximando desse jeito errado? Qualquer outra idéia (que se encaixa em especificações RPM ou outra mágica do repositório YUM, mesmo no arquivo YUM .repo ... - mas tudo dentro da infraestrutura YUM, sem scripts externos para executar antes de 'yum install') - seria muito apreciado !