Debian: impede que arquivos específicos sejam sobrescritos durante a atualização de pacotes

7

Eu entendo que um pacote tem dois componentes: config e data files. Durante a atualização do pacote (por exemplo, atualização de segurança) data arquivos podem ser sobrescritos, mas config arquivos devem permanecer sempre os mesmos. Além disso, config arquivos geralmente estão em /etc e data em /usr . Às vezes, no entanto, a distinção é confusa.

No meu caso, modifiquei o arquivo de ícone para Icedove (Thunderbird):

/usr/share/applications/icedove.desktop

Agora, toda vez que houver uma atualização de Icedove (Thunderbird), minhas alterações serão sobrescritas com o arquivo padrão (mesmo que não tenha sido alterado entre as atualizações).

Existe alguma maneira de evitar que esse arquivo específico seja sobrescrito?

Defini-lo como imutável com chattr +i icedove.desktop não é uma boa ideia, pois produz erros durante a atualização do pacote.

    
por Martin Vegter 27.09.2014 / 12:59

2 respostas

6

Enquanto a resposta de wurtel responde à pergunta como formulada, considerando o contexto da pergunta revela-se que esta é mais uma caso de um problema XY .

Neste caso em particular, /usr/share/applications/icedove.desktop não deve ser modificado em primeiro lugar, mas um arquivo de configuração local que substitua a configuração padrão deve ser colocado em um local adequado. Sistemas que são compatíveis com o freedesktop.org estão em conformidade com a Especificação do Diretório Base do XDG , a finalidade dos quais é precisamente eliminar a necessidade de modificar arquivos de configurações que são sobrescritos durante atualizações de pacotes.

Se a configuração se destina a todo o sistema, o icedove.desktop local deve ser colocado no subdiretório applications de um caminho de pesquisa anterior a /usr/share in $XDG_DATA_DIRS . O valor dessa variável de ambiente é padronizado como /usr/local/share/:/usr/share/ , mas o valor real varia entre distribuições. Como neste caso a configuração se destina a ser local, o local correto é /usr/local/share/applications/icedove.desktop , embora tenha em mente que eles podem ser substituições específicas de distribuição que podem ter preferência sobre as configurações em usr/local/share .

Por outro lado, se a configuração for indentada para ser específica do usuário, o icedove.desktop local deve ser colocado em applications no local indicado por $XDG_DATA_HOME . Geralmente, isso é padronizado como $HOME/.local/share , ou seja, o local do arquivo de configuração deve ser $HOME/.local/share/applications/icedove.desktop .

    
por 27.09.2014 / 14:21
9

Você quer o utilitário dpkg-divert .

dpkg-divert --divert /usr/share/applications/icedove.desktop.packaged --rename /usr/share/applications/icedove.desktop
    
por 27.09.2014 / 13:32