Como evitar que um aplicativo não personalizável substitua manualmente os arquivos alterados? [fechadas]

1

Resumindo, estou tentando substituir alguns recursos de imagem em um dos aplicativos. Sobrescrever os arquivos manualmente faz o trabalho, mas toda vez que o aplicativo é atualizado, todos os meus arquivos alterados são substituídos pelos originais. Não tenho certeza se os arquivos de recursos são substituídos pelo dpkg ou pelo próprio aplicativo quando ele é executado pela primeira vez após a atualização. Definir os arquivos como somente leitura não parece ajudar, pois o aplicativo ou dpkg consegue remover o sinalizador somente leitura e substituir os arquivos de qualquer maneira.

Para ser mais específico, o aplicativo que estou tentando personalizar é o "Plex Media Server", que não tem nenhuma maneira oficial de alterar os ícones DLNA. O ícone pode ser encontrado em "/usr/lib/plexmediaserver/Resources/Graphics/dlna-icon-260.png" e, quando substituído manualmente, é exibido corretamente no Plex e em todos os dispositivos que se conectam a ele. Mas quando atualizo o software Plex, todas as minhas alterações são substituídas novamente pelos arquivos originais.

Por isso, posso pensar em uma maneira de contornar isso, apenas para escrever um script de shell pequeno que substitua os recursos novamente por meus personalizados, e posso executá-lo após cada atualização. Mas estou tentando descobrir se existe uma maneira melhor, apropriada ou mais automatizada de fazer isso.

Sendo o melhor caso "hipotético" uma maneira de fazer com que o sistema linux retorne sempre meu conteúdo quando o arquivo é lido, enquanto ainda permite que o arquivo seja virtualmente escrito, excluído ou criado, mas sempre retorne meu conteúdo não importa o que .

Então, minha pergunta é: O meu "melhor caso hipotético" é possível de ser implementado no Linux? Ou como evitar que os arquivos sejam sobrescritos pelo dpkg ?

Saudações e obrigado.

    
por Robert Koszewski 08.11.2017 / 19:06

1 resposta

1

A solução aqui depende muito da flexibilidade de configuração do aplicativo e dos recursos do gerenciador de pacotes. Lembre-se de que, se os caminhos mudarem, você pode acabar subitamente com um aplicativo que não funciona.

A maioria dos programas permite que você faça substituições por caminhos usando um arquivo de configuração, talvez você possa especificar seu próprio diretório para as imagens aqui. Caso contrário, talvez seu aplicativo procure em um diretório específico por essas imagens antes de examinar seu diretório de imagens padrão, que contém as imagens instaladas por padrão. Se você puder usar um desses métodos suportados pelo aplicativo, você deve.

Se você não puder, eu evitarei tentar parar a substituição do arquivo (por exemplo, com chattr +i ), porque isso provavelmente resultará em seu gerenciador de pacotes saindo com um erro quando tentar atualizar o arquivo. pacote no futuro.

A melhor maneira é cooperar com o seu gerenciador de pacotes para obter o resultado desejado. Por exemplo, você pode tentar um dos seguintes:

  • No gerenciador de pacotes, informe para não extrair esses arquivos ao executar a instalação. Em pacman , por exemplo, você pode fazer algo assim:
% cat /etc/pacman.conf
[...]
NoExtract = usr/lib/my_image_dir/* usr/lib/my_image_dir_2/* 
[...]
  • No gerenciador de pacotes, configure um gancho para substituir os arquivos após a instalação / atualização do pacote que fornece esses arquivos. Em pacman , por exemplo, você pode fazer isso com um gancho parecido com este:
% cat /usr/share/libalpm/hooks/replace-images.hook
[Trigger]
Type = Package
Operation = Upgrade
Target = the_package_to_target

[Action]
Description = Replacing images
When = PostTransaction
Exec = /usr/bin/script_to_replace_images

Se nenhum deles for possível, talvez você possa executar seu aplicativo com uma sobreposição quando for executado, em uma montagem namespace que é visível apenas para o aplicativo. Isso satisfaria seu gerenciador de pacotes, já que ele nunca vê a sobreposição, e satisfaria suas necessidades, já que você poderia ter apenas suas imagens de substituição na sobreposição.

    
por 08.11.2017 / 19:41