즉, 내 애플리케이션 중 하나에서 일부 이미지 리소스를 교체하려고 합니다. 수동으로 파일을 덮어쓰면 작업이 수행되지만 앱이 업데이트될 때마다 변경한 모든 파일이 원본 파일로 대체됩니다. 리소스 파일을 덮어썼는지 잘 모르겠습니다.포장 백또는 업데이트 후 처음 실행 시 애플리케이션 자체에 의해 실행됩니다. 파일을 읽기 전용으로 설정하는 것은 응용 프로그램이나포장 백삭제해 보세요읽기 전용어쨌든 파일을 표시하고 교체하십시오.
더 구체적으로 말하면, 제가 사용자 정의하려는 애플리케이션은 "Plex Media Server"입니다. 이 애플리케이션에는 DLNA 아이콘을 변경할 수 있는 공식적인 방법이 없습니다. 그러나 아이콘은 "/usr/lib/plexmediaserver/Resources/Graphics/dlna-icon-260.png"에서 찾을 수 있으며 수동으로 교체하면 Plex 및 이에 연결된 모든 장치에 올바르게 표시됩니다. 하지만 Plex 소프트웨어를 업데이트하면 모든 변경 사항이 원본 파일로 다시 대체됩니다.
따라서 이 문제를 해결하기 위해 제가 생각할 수 있는 한 가지 방법은 리소스를 다시 사용자 지정 리소스로 대체하고 업데이트할 때마다 실행할 수 있는 작은 셸 스크립트를 작성하는 것입니다. 하지만 저는 이 작업을 수행하는 더 좋고, 더 적합하고, 더 자동화된 방법이 있는지 알아보려고 노력하고 있습니다.
최선의 "가정" 사례로서, 파일을 읽을 때 Linux 시스템이 항상 내 콘텐츠를 반환하도록 하는 동시에 파일의 가상 쓰기, 삭제 또는 생성을 허용하면서도 항상 내 콘텐츠를 반환하도록 만드는 방법입니다.
그래서 내 질문은: "최상의 시나리오"가 Linux에서 구현될 수 있습니까? 또는 파일 덮어쓰기를 방지하는 방법포장 백?
인사하고 감사드립니다.
답변1
여기서의 솔루션은 애플리케이션의 구성 유연성과 패키지 관리자의 기능에 크게 좌우됩니다. 경로가 변경되면 갑자기 응용 프로그램이 작동하지 않는 상황이 발생할 수 있다는 점을 명심하세요.
대부분의 프로그램에서는 구성 파일을 사용하여 경로를 재정의할 수 있으며, 여기에서 자신만의 이미지 디렉터리를 지정할 수도 있습니다. 그렇지 않으면 애플리케이션이 기본 이미지 디렉터리(기본 설치된 이미지가 포함되어 있음)를 찾기 전에 특정 디렉터리에서 해당 이미지를 찾을 수 있습니다. 만약 너라면할 수 있는이러한 응용 프로그램에서 지원하는 방법 중 하나를 사용해야 합니다.
chattr +i
그렇지 않은 경우 나중에 패키지를 업데이트하려고 할 때 패키지 관리자가 오류와 함께 종료될 수 있으므로 파일 교체(예: 사용)를 중지하지 않으려고 합니다 .
더 좋은 방법은협력원하는 결과를 얻으려면 패키지 관리자와 협력하세요. 예를 들어 다음 중 하나를 시도해 볼 수 있습니다.
- 패키지 관리자에서 설치를 수행할 때 이러한 파일을 추출하지 않도록 지시하십시오. 예를 들어 에서는
pacman
다음을 수행할 수 있습니다.
% cat /etc/pacman.conf
[...]
NoExtract = usr/lib/my_image_dir/* usr/lib/my_image_dir_2/*
[...]
- 패키지 관리자에서 해당 파일을 제공하는 패키지를 설치/업그레이드한 후 이러한 파일을 대체하기 위한 후크를 설정합니다. 예를 들어 에서는
pacman
다음과 같은 후크를 사용하여 다음을 수행할 수 있습니다.
% 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
이들 중 어느 것도 가능하지 않은 경우 다음 명령을 사용하여 애플리케이션을 실행할 수 있습니다.씌우다실행되면 애플리케이션에만 표시되는 설치 네임스페이스에 있습니다. 이는 오버레이를 볼 수 없기 때문에 패키지 관리자를 만족시킬 것이며, 오버레이에 대체 이미지만 포함할 수 있으므로 요구 사항을 충족할 것입니다.