Debian:パッケージのアップグレード中に特定のファイルが上書きされるのを防ぎます


9

パッケージにconfigdataファイルの2つのコンポーネントがあることを理解しています。パッケージのアップグレード(つまり、セキュリティのアップグレード)中、dataファイルは上書きされる可能性がありますが、configファイルは常に同じままである必要があります。また、configファイルは通常/etcdataにあり/usrます。ただし、場合によっては区別がぼやけることがあります。

私の場合、Icedove(Thunderbird)のアイコンファイルを変更しました。

/usr/share/applications/icedove.desktop

Icedove(Thunderbird)更新があるたびに、私の変更はデフォルトファイルで上書きされます(更新間で変更されていなくても)。

この特定のファイルが上書きされるのを防ぐ方法はありますか?

chattr +i icedove.desktopパッケージのアップグレード中にエラーが発生するため、で不変に設定することはお勧めできません。


2
@don_crissti技術的に正しい場所はですが$XDG_DATA_HOME/applications/icedove.desktop、これは通常、デフォルトで指定した検索パスになります。XDGベースディレクトリ仕様もの検索パス提供$XDG_DATA_DIRSシステム全体のオーバーライドのために。この場合にXDGベースディレクトリがどのように適用されるかについての詳細な説明は、私の答えです。
トーマス・ナイマン2014

回答:


7

一方でwurtelの答えは、問題の背景を考えると、言葉で表現としての質問に答える、これはまだ別のケースであることが明らかになった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


10

あなたはdpkg-divertユーティリティが必要です。

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

1
これは他の人を助けるかもしれません:「システムの操作に非常に重要なファイルを迂回させないでください-dpkg-divertを使用するとき、迂回された後、dpkgが新しいバージョンをインストールする前に、ファイルがそうするときがあります。存在しません。 "from debian.org/doc/debian-policy/ap-pkg-diversions.html
2rs2ts
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.