我正在创建一组实用程序来为特定网络和域配置配置Linux系统。此配置的一个步骤是配置网络接口。虽然我可以轻松配置Samba或NTP之类的东西(因为它们具有相同的配置文件语法,无论发行版如何),网络似乎有点困难。
Debian使用/etc/network/interfaces
,Fedora和Red Hat使用/etc/sysconfig/network-scripts
,以及使用各自网络管理员的其他发行版(我个人在Arch上使用netctl),获取脚本以便能够配置网络界面似乎几乎不可能。是否有任何可移植的配置网络接口的方法?
如果不这样做,那么为各种发行版创建“模块”的好方法是什么?我的项目将使用Autotools来配置和安装实用程序,因此可以进行一些“编译”,但是如何检测正在使用的网络管理器?此方法的问题包括当没有模块存在于正在使用的网络管理器时该怎么办。或者我应该将它留给编译用户来决定启用哪个“模块”?
这个问题延伸到包装 - 当创建这个包时,我如何支持现有的多个网络管理器,即使是在一个发行版上?例如,在Arch中,用户可能安装了netctl,它使用一组配置文件,或Wicd或GNOME网络管理器。
答案 0 :(得分:2)
您可以使用插件API创建软件。 API描述了如何配置网络接口。然后你会有一个用于NM的插件,一个用于Wicd,一个用于/ etc / network / interfaces等。用户可以选择在./configure
阶段编译哪些插件,这样他就不会需要安装不需要的依赖项。
对于多个已启用的插件(例如NM和Wicd),您可以使用D-Bus检查注册了哪些服务来管理网络接口。