不同的發行版如何修改程式的設定檔位置?

不同的發行版如何修改程式的設定檔位置?

許多 Linux 程式都聲明設定檔的位置取決於發行版。我想知道不同的發行版是如何做到這一點的。他們真的修改了原始碼嗎?是否有設定這些位置的建置參數?我已經搜索過這個但找不到任何資訊。我知道它就在那裡,只是我找不到它。與此相關的「Linux 方式」是什麼?

答案1

這取決於分佈和原始(“上游”)來源。

對於大多數使用 autoconf 和 automake 的軟體包,可以使用參數指定在其中尋找設定檔的目錄--sysconfdir。其他建置系統(例如 CMake)也有類似的選項。如果來源包使用這些建置系統之一,那麼打包器可以輕鬆指定正確的參數,並且不需要任何修補程式。即使他們不這樣做(例如,因為上游來源使用一些本地建置系統),通常仍然可以指定一些建置配置以將設定檔移至特定位置,而無需修補上游來源。

如果情況並非如此,那麼發行版通常確實必須向來源添加補丁,以使其將檔案移動到他們認為「正確」的位置。在大多數情況下,分發打包者將編寫一個補丁,該補丁將允許以上述方式配置來源,以便他們可以將補丁發送給上游維護者,而不必繼續維護/更新它。設定檔位置是這種情況,但其他東西也是如此,例如bin/sbin可執行檔(系統管理員命令的解釋在發行版之間有所不同)、編寫文件的位置等等。

附註:如果您維護一些免費軟體,讓包裝商更容易與您交談。否則我們就必須維護這樣的補丁,沒有什麼特別好的理由...

答案2

他們在原始碼樹上應用了補丁來調整位置。

有足夠的“標準”可供使用,每個發行版都可以根據(個人)偏好和/或歷史實踐進行選擇。很少有解決方案僅有的有優點。這有時很煩人/令人困惑,但一個發行版內的一致性是最重要的目標:如果您已經知道程式Y 的類似內容(例如設定/設定檔)在哪裡,它會減少混亂並更容易猜測程序Y 的內容X。

補丁應用程式範例

我的 python 套件ruamel.yaml在 Debian Sid 中可用。它曾經依賴於ruamel.base,透過 PyPI 安裝的用戶可能仍然安裝舊的、不相容的版本ruamel.base。使用setup.py/PyPI 不是真正的套件管理,所以你不能刪除先前透過依賴項安裝的套件。我透過製作一個新版本來解決 PyPI 用戶的問題,ruamel.base該版本消除了與舊套件相關的問題ruamel.baseruamel.yaml依賴該新版本。

對於 Sid 來說,這不是問題:ruamel.base未安裝舊版本(或可以透過套件管理刪除)。因此他們應用了修補,您可以在ruamel.yamlSid 的資訊頁面ruamel.yaml這消除了on的依賴ruamel.base

其他發行版也有類似的設定。例如,如果您查看建立來源 RPM 檔案(例如 RedHat/CentOS/SuSE)的規範,您會發現您將軟體包的原始 tarball 與將在配置/編譯之前套用的一個或多個修補程式結合在一起。

相關內容