Debian
依賴項更新時重新安裝 Debian 軟體包的方法?
對於我製作的一些東西(過去只是口口相傳,對於非常狹窄且通常非技術性的使用者群來說很有趣),我希望能夠提供一個
.deb
文件更容易安裝。該東西沒有任何需要在系統中安裝的實際文件。相反,它需要向已經存在的文件(屬於
xkb-data
Debian 派生髮行版上的包)添加一些行。據我所知,在搜尋和詢問之後,沒有辦法將這些行放入新的單獨文件中並且仍然讓系統拾取它們,所以我編寫了一個Rakefile來進行安裝。這很好用,但需要使用者與命令行互動,這並不總是那麼好用。此外,每當xkb-data
通過包管理器更新時,需要手動再次執行 rake 任務,這很麻煩。我知道DpkgPostpone和DpkgTriggers,但這些似乎都不適合或不適合處理上述問題(不過,如果我錯了,請糾正我!)
有沒有辦法讓一個 Debian 軟體包根據它的一個或所有依賴項剛剛更新的條件*自動導致它自己的重新安裝?*我也明確地對這樣做的黑客方式感興趣,DontBreakDebian是該死的。
一種合理的解決方法如下:
- 轉移您修改的所有文件,以便
dpkg
不再替換它們,而是使用不同的名稱安裝它們;- 使您
Rakefile
使用新命名的文件而不是原件來完成工作,讀取新命名的文件並寫入原件;- 安裝一個 post-invoke
dpkg
鉤子,在/etc/dpkg/dpkg.cfg.d
其中執行Rakefile
afterdpkg
執行。您可以添加額外的檢查,例如,僅
Rakefile
在原始文件的校驗和自上次生成修改文件後發生更改時才執行,但與執行Rakefile
每次dpkg
執行相比,這可能不會節省太多時間,並且會增加相當多的時間維護複雜性。(我寫這個假設你的Rakefile
行為像一個Makefile,即如果它的目標比他們的先決條件更新,那麼什麼都不做,但我得到的印像是這裡不是這種情況,所以添加額外的檢查可能更相關或者改變你的Rakefile
,如果沒有什麼可做的,什麼都不做。或者你可以在 Makefile 中重寫你的處理。)我想您已經想到了這一點,但我認為理想的解決方案是添加新的鍵盤類型,而不是更改現有的鍵盤定義;但很可能有一些我沒有想到的問題。