Solução de problemas
Quando um pacote falha na instalação, você pode solucionar problemas usando a opção Depurar. É preciso um campo de bits para determinar o nível e o assunto. Um valor de D = 7777 mostrará tudo. Para este problema, sabemos que estamos especificamente interessados em arquivos conf para que possamos usar D = 220.
sudo dpkg -D=220 -i Foo_1.0-1_all.deb
Sua saída pode mostrar algo como o seguinte:
D000200: conffderef in='/etc/init/Foo.conf' current working='/etc/init/Foo.conf'
D000200: conffderef nonexistent
D000020: deferred_configure '/etc/init/Foo.conf' (= '/etc/init/Foo.conf') useredited=1 distedited=0 what=2002
A pista principal é useredited=1
. Por padrão, dpkg
não substituirá os arquivos de configuração editados pelo usuário. A exclusão manual de um arquivo .conf conta como editá-lo, portanto, pode ser uma surpresa que o dpkg não substitua o arquivo ausente. Pode ser duplamente surpreendente para aqueles experientes com a instalação de serviços em outros sistemas operacionais que uma tarefa do Upstart é tratada como configuração.
Forçar a falta de instalação conf
O dpkg tem várias opções de força. Você pode forçar a substituição do arquivo .conf ausente da seguinte forma:
sudo dpkg -i --force-confmiss Foo_1.0-1_all.deb
Existem outras opções de força para cenários semelhantes; verifique a página de manual ou use dpkg --force-help
para detalhes. Essas opções devem ser usadas com cuidado, especialmente para pacotes de terceiros.
Pacote Dev / Ciclo de Testes
No desenvolvimento de um pacote .deb (por exemplo, para um trabalho do Upstart), você instalará e removerá o pacote várias vezes. Você também poderá mexer no arquivo .conf manualmente às vezes. Por padrão, dpkg -r
(ou apt-get remove
) não removerá o arquivo .conf. (Então, surpreendentemente, o trabalho inicial permanece enquanto os binários associados podem desaparecer.) Para isso, você deve usar a opção de limpeza. Portanto, para testar completamente a remoção e a reinstalação do trabalho inicial, você pode fazer o seguinte:
sudo dpkg -i Foo_1.0-1_all.deb
# testing...
sudo apt-get purge Foo
E agora que você sabe sobre as opções de força e depuração, é possível aplicá-las conforme necessário.
Referências
Veja o tópico Bug # 1198: o dpkg silenciosamente falha ao instalar um arquivo :
Remover o arquivo conta como "editando", porque para muitos arquivos de configuração, a ausência de um arquivo é significativa.
Página de manual para dpkg