Como um mantenedor de pacotes pode evitar colisões de arquivos com pacotes do Ubuntu, como tentar sobrescrever 'arquivo', que também está no pacote?

4

Eu desenvolvo (ou mantenho) um pacote, recebi vários relatórios de bugs ao longo das linhas:

dpkg: error processing /var/cache/apt/archives/libjline-java_1.0-1_all.deb (--unpack):
 trying to overwrite '/usr/share/java/jline.jar', which is also in package scala 2.9.2-400
Errors were encountered while processing:
 /var/cache/apt/archives/libjline-java_1.0-1_all.deb

mas não encontrei uma maneira de impedir / encontrá-los antes que alguém os atinja. Como posso evitar esses conflitos / colisões de arquivos antes que isso aconteça?

    
por Braiam 10.05.2014 / 23:39

1 resposta

8

Para evitar isso com pacotes do Ubuntu, você pode usar apt-file e apenas executar todo o seu pacote no banco de dados de arquivos que pode ser encontrado usando apt-file:

apt-file search -D your_deb_file.deb

Isso exigirá que você tenha apt-file instalado e atualizado. Em seguida, adicione o nome do pacote (e possivelmente a versão) aos campos Break ou Conflict , nas respectivas entradas do pacote no arquivo de controle. Isso deveria ser o suficiente.

Agora, alguns gostariam de substituir os arquivos do Ubuntu por seus próprios, como oferecer uma versão mais nova dos aplicativos; nesses casos, o melhor é usar os mesmos arquivos debian/ que os pacotes do Ubuntu. Isso criará seu pacote com a mesma forma que o upstream e as colisões de arquivos poderão ser anunciadas.

Nota: se o usuário gosta de misturar repositórios de diferentes mantenedores, nada que você possa fazer.

    
por Braiam 10.05.2014 / 23:39