Debian

依賴項更新時重新安裝 Debian 軟體包的方法?

  • June 17, 2019

對於我製作的一些東西(過去只是口口相傳,對於非常狹窄且通常非技術性的使用者群來說很有趣),我希望能夠提供一個.deb文件更容易安裝。

該東西沒有任何需要在系統中安裝的實際文件。相反,它需要向已經存在的文件(屬於xkb-dataDebian 派生髮行版上的包)添加一些行。據我所知,在搜尋和詢問之後,沒有辦法將這些行放入新的單獨文件中並且仍然讓系統拾取它們,所以我編寫了一個Rakefile來進行安裝。這很好用,但需要使用者與命令行互動,這並不總是那麼好用。此外,每當xkb-data通過包管理器更新時,需要手動再次執行 rake 任務,這很麻煩。

我知道DpkgPostponeDpkgTriggers,但這些似乎都不適合或不適合處理上述問題(不過,如果我錯了,請糾正我!)

有沒有辦法讓一個 Debian 軟體包根據它的一個或所有依賴項剛剛更新的條件*自動導致它自己的重新安裝?*我也明確地對這樣做的黑客方式感興趣,DontBreakDebian是該死的。

一種合理的解決方法如下:

  • 轉移您修改的所有文件,以便dpkg不再替換它們,而是使用不同的名稱安裝它們;
  • 使您Rakefile使用新命名的文件而不是原件來完成工作,讀取新命名的文件並寫入原件;
  • 安裝一個 post-invokedpkg鉤子,在/etc/dpkg/dpkg.cfg.d其中執行Rakefileafterdpkg執行。

您可以添加額外的檢查,例如,僅Rakefile在原始文件的校驗和自上次生成修改文件後發生更改時才執行,但與執行Rakefile每次dpkg執行相比,這可能不會節省太多時間,並且會增加相當多的時間維護複雜性。(我寫這個假設你的Rakefile行為像一個Makefile,如果它的目標比他們的先決條件更新,那麼什麼都不做,但我得到的印像是這裡不是這種情況,所以添加額外的檢查可能更相關或者改變你的Rakefile,如果沒有什麼可做的,什麼都不做。或者你可以在 Makefile 中重寫你的處理。)

我想您已經想到了這一點,但我認為理想的解決方案是添加新的鍵盤類型,而不是更改現有的鍵盤定義;但很可能有一些我沒有想到的問題。

引用自:https://unix.stackexchange.com/questions/525386