패키지에는 파일 config
과 data
파일이라는 두 가지 구성 요소가 있다는 것을 알고 있습니다. 패키지 업그레이드(예: 보안 업그레이드) 중에 data
파일을 덮어쓸 수 있지만 config
파일은 항상 변경되지 않은 상태로 유지되어야 합니다. 파일은 일반적 으로 및 에 config
있습니다 . 그러나 때로는 이러한 구분이 모호해지는 경우도 있습니다./etc
data
/usr
Icedove
제 경우에는 (Thunderbird) 아이콘 파일을 수정했습니다.
/usr/share/applications/icedove.desktop
이제 (Thunderbird)가 업데이트될 때마다 Icedove
내 변경 사항이 기본 파일로 덮어쓰여집니다(업데이트 간에 변경되지 않은 경우에도 마찬가지입니다).
이 특정 파일을 덮어쓰는 것을 방지할 수 있는 방법이 있습니까?
이를 불변으로 만드는 것은 chattr +i icedove.desktop
패키지 업그레이드 중에 오류를 생성하므로 좋은 생각이 아닙니다.
답변1
당신은 유틸리티를 원합니다 dpkg-divert
.
dpkg-divert --divert /usr/share/applications/icedove.desktop.packaged --rename /usr/share/applications/icedove.desktop
답변2
하지만우터의 대답질문의 맥락에 따라 이것이 다른 사례임을 암시하는 경우 질문에 대한 답변의 표현XY 문제.
이 특별한 경우에는 /usr/share/applications/icedove.desktop
기본 구성을 재정의하는 로컬 구성 파일을 처음부터 수정해서는 안 되며 적절한 위치에 배치해야 합니다. freedesktop.org를 준수하는 시스템은 다음을 준수합니다.XDG 기본 디렉토리 사양, 그 목적은 패키지 업그레이드 중에 덮어쓴 구성 파일을 수정할 필요를 없애는 것입니다.
시스템 전체를 구성하려면 이전 검색 경로의 하위 디렉터리 에 icedove.desktop
로컬 구성을 배치해야 합니다 . 이 환경 변수의 값은 기본적으로 로 설정되어 있지만 실제 값은 배포판에 따라 다릅니다. 이 경우 구성은 로컬이어야 하므로 올바른 위치는 입니다. 단, 배포별 재정의일 수 있으며 아래 구성보다 우선할 수 있다는 점을 명심하세요 .applications
/usr/share
$XDG_DATA_DIRS
/usr/local/share/:/usr/share/
/usr/local/share/applications/icedove.desktop
usr/local/share
반면, 구성 들여쓰기가 사용자별로 지정된 경우 로컬은 표시된 위치 아래에 icedove.desktop
배치되어야 합니다 . 일반적으로 기본값은 이며, 여기에 구성 파일이 있어야 합니다 .applications
$XDG_DATA_HOME
$HOME/.local/share
$HOME/.local/share/applications/icedove.desktop