Debian: ngăn tập tin cụ thể bị ghi đè trong quá trình nâng cấp gói


9

Tôi hiểu rằng một gói có hai thành phần: configdatatệp. Trong quá trình nâng cấp gói (tức là nâng cấp bảo mật), datacác tệp có thể bị ghi đè, nhưng configcác tệp phải luôn giữ nguyên. Ngoài ra configcác tập tin thường trong /etcdatatrong /usr. Đôi khi, tuy nhiên, sự phân biệt bị mờ.

Trong trường hợp của tôi, tôi đã sửa đổi tệp biểu tượng cho Icedove(Thunderbird):

/usr/share/applications/icedove.desktop

Bây giờ, mỗi khi có Icedovebản cập nhật (Thunderbird), các thay đổi của tôi sẽ bị ghi đè bằng tệp mặc định (ngay cả khi nó không thay đổi giữa các bản cập nhật).

Có cách nào để ngăn chặn tập tin cụ thể này bị ghi đè không?

Đặt nó thành bất biến chattr +i icedove.desktopkhông phải là một ý tưởng tốt, vì nó tạo ra lỗi trong quá trình nâng cấp gói.


2
@don_crissti Về mặt kỹ thuật vị trí chính xác là $XDG_DATA_HOME/applications/icedove.desktop, mặc dù điều này thường mặc định cho đường dẫn tìm kiếm mà bạn đề cập. Các XDG cơ sở mục Đặc điểm kỹ thuật cũng cung cấp một đường dẫn tìm kiếm ở $XDG_DATA_DIRScho ghi đè rộng hệ thống. Một lời giải thích chi tiết hơn về cách áp dụng XDG Base Director trong trường hợp này là trong câu trả lời của tôi .
Thomas Nyman

Câu trả lời:


7

Trong khi câu trả lời của wurtel trả lời câu hỏi theo từng giai đoạn, việc xem xét nền tảng của câu hỏi cho thấy đây là một trường hợp khác của vấn đề XY .

Trong trường hợp cụ thể này, /usr/share/applications/icedove.desktopkhông nên sửa đổi ở vị trí đầu tiên, nhưng tệp cấu hình cục bộ ghi đè cấu hình mặc định sẽ được đặt ở vị trí phù hợp. Các hệ thống tuân thủ freedesktop.org tuân thủ Đặc tả thư mục cơ sở XDG , mục đích của nó là chính xác để loại bỏ nhu cầu sửa đổi các tệp cấu hình được ghi đè trong quá trình nâng cấp gói.

Nếu cấu hình được thiết kế để được toàn hệ thống, các địa phương icedove.desktopnên được đặt trong applicationsthư mục con cho một con đường tìm kiếm trước /usr/sharetrong $XDG_DATA_DIRS. Giá trị của biến môi trường này mặc định /usr/local/share/:/usr/share/, nhưng giá trị thực tế khác nhau giữa các bản phân phối. Bởi vì trong trường hợp này, cấu hình được dự định là vị trí chính xác /usr/local/share/applications/icedove.desktop, mặc dù hãy nhớ rằng chúng có thể được ghi đè phân phối cụ thể tại vị trí có thể có ưu tiên hơn các cấu hình bên dưới usr/local/share.

Mặt khác, nếu cấu hình được thụt vào cụ thể là người dùng, thì icedove.desktopnên đặt cục bộ applicationsở vị trí được chỉ định bởi $XDG_DATA_HOME. Điều này thường mặc định $HOME/.local/share, tức là vị trí của tệp cấu hình nên là $HOME/.local/share/applications/icedove.desktop.


10

Bạn muốn các dpkg-diverttiện ích.

dpkg-divert --divert /usr/share/applications/icedove.desktop.packaged --rename /usr/share/applications/icedove.desktop

1
Điều này có thể giúp người khác: "Đừng cố chuyển hướng một tệp cực kỳ quan trọng đối với hoạt động của hệ thống - khi sử dụng dpkg-redirect, có một thời gian, sau khi nó đã được chuyển hướng nhưng trước khi dpkg đã cài đặt phiên bản mới, khi tệp đó không tồn tại. "từ debian.org/doc/debian-policy/ap-pkg-diversions.html
2rs2ts
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.