2014-01-08 198 views
2

我正在創建一組實用程序來爲特定網絡和域配置配置Linux系統。此配置的其中一個步驟是配置網絡接口。儘管我可以很容易地配置Samba或NTP之類的東西(因爲它們具有相同的配置文件語法,無論發行版如何),但網絡似乎更難一些。Linux - 通用網絡配置

使用Debian使用/etc/network/interfaces,Fedora和使用/etc/sysconfig/network-scripts Red Hat和使用其各自的網絡管理其他發行版(我個人使用拱NETCTL),得到一個腳本能夠配置網絡接口看起來幾乎是不可能的。有沒有配置網絡接口的便攜方式?

如果不這樣做,那麼爲各種發行版創建「模塊」會有什麼好方法?我的項目將使用Autotools來配置和安裝實用程序,因此可以完成一些「編譯」,但是如何檢測哪個網絡管理器正在使用?這種方法的問題包括當網絡管理器沒有使用模塊時該怎麼做。還是應該讓編譯用戶決定啓用哪個「模塊」?

然後這個問題擴展到包裝 - 創建這個包時,即使在一個發行版中,我如何支持多個網絡管理員?例如,在Arch中,用戶可能安裝了netctl,它使用一組配置文件,或者Wicd或GNOME網絡管理器。

+0

wicd和網絡管理員似乎都提供了D-Bus接口。所以你可以檢查你的軟件,如果這些守護進程之一是在D-Bus下注冊的。 – yegorich

+0

或者,您可以將NM或Wicd定義爲需求,因此用戶必須使用其中一種工具來使用您的軟件。在這種情況下,你有一個定義好的環境,所以你的軟件不會那麼複雜。 – yegorich

+0

@yegorich我應該在編譯時作出'模塊'的決定,還是運行時間? – Xenopathic

回答

2

您可以考慮插件API來創建您的軟件。該API描述瞭如何配置網絡接口。然後,您將擁有一個用於NM的插件,一個用於Wicd,一個用於/ etc/network/interfaces等。用戶可以選擇在./configure階段編譯哪些插件,以便他不需要安裝不需要的依賴關係。

對於多個啓用的插件(例如NM和Wicd),您可以使用D-Bus檢查註冊了哪些服務以管理網絡接口。