Eu entendo que um pacote tem dois componentes: config
e data
arquivos. Durante a atualização do pacote (ou seja, atualização de segurança), os data
arquivos podem ser substituídos, mas os config
arquivos devem sempre permanecer os mesmos. Também os config
arquivos geralmente estão dentro /etc
e data
dentro /usr
. Às vezes, porém, a distinção é obscura.
No meu caso, modifiquei o arquivo de ícone para Icedove
(Thunderbird):
/usr/share/applications/icedove.desktop
Agora, toda vez que há uma Icedove
atualização (Thunderbird), minhas alterações são substituídas pelo arquivo padrão (mesmo que não tenha sido alterado entre as atualizações).
Existe alguma maneira de impedir que esse arquivo específico seja substituído?
Configurá-lo como imutável chattr +i icedove.desktop
não é uma boa ideia, pois gera erro durante a atualização do pacote.
fonte
$XDG_DATA_HOME/applications/icedove.desktop
, embora isso geralmente seja padrão para o caminho de pesquisa que você mencionou. A Especificação de diretório base do XDG também fornece um caminho de pesquisa$XDG_DATA_DIRS
para substituições em todo o sistema. Uma explicação mais detalhada de como os Diretórios base do XDG se aplicam neste caso está na minha resposta .Respostas:
Enquanto a resposta de wurtel responde à pergunta como formulada, considerando o contexto da pergunta revela que este é mais um caso de um problema XY .
Nesse caso específico,
/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. Os sistemas compatíveis com freedesktop.org estão em conformidade com a Especificação de diretório base do XDG , cujo objetivo é precisamente eliminar a necessidade de modificar arquivos de configurações que são substituídos durante as atualizações de pacotes.Se a configuração se destina a ser em todo o sistema, o local,
icedove.desktop
deve ser colocada noapplications
subdiretório para um caminho de pesquisa anterior/usr/share
no$XDG_DATA_DIRS
. O valor dessa variável de ambiente é padronizado como/usr/local/share/:/usr/share/
, mas o valor real varia entre as distribuições. Como, nesse caso, a configuração deve ser local, o local correto é/usr/local/share/applications/icedove.desktop
, embora lembre-se de que podem haver substituições específicas de distribuição que podem ter preferência sobre as configurações abaixousr/local/share
.Por outro lado, se a configuração for recuada para ser específica do usuário, o local
icedove.desktop
deve ser colocadoapplications
no local indicado por$XDG_DATA_HOME
. Normalmente, o padrão$HOME/.local/share
é, ou seja, o local do arquivo de configuração$HOME/.local/share/applications/icedove.desktop
.fonte
Você quer o
dpkg-divert
utilitário.fonte