Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux-通用网络配置_Linux_Networking_Configuration - Fatal编程技术网

Linux-通用网络配置

Linux-通用网络配置,linux,networking,configuration,Linux,Networking,Configuration,我正在创建一组实用程序,用于为特定的网络和域配置配置Linux系统。此配置的步骤之一是配置网络接口。尽管我可以很容易地配置Samba或NTP(因为无论发行版如何,它们都有相同的配置文件语法),但联网似乎有点困难 Debian使用/etc/network/interfaces,Fedora和Red Hat使用/etc/sysconfig/network scripts,而其他发行版使用各自的网络管理器(我个人在Arch上使用netctl),因此要获得能够配置网络接口的脚本几乎是不可能的。是否有任何

我正在创建一组实用程序,用于为特定的网络和域配置配置Linux系统。此配置的步骤之一是配置网络接口。尽管我可以很容易地配置Samba或NTP(因为无论发行版如何,它们都有相同的配置文件语法),但联网似乎有点困难

Debian使用
/etc/network/interfaces
,Fedora和Red Hat使用
/etc/sysconfig/network scripts
,而其他发行版使用各自的网络管理器(我个人在Arch上使用netctl),因此要获得能够配置网络接口的脚本几乎是不可能的。是否有任何可移植的方式来配置网络接口

如果做不到这一点,那么为各种发行版创建“模块”的好方法是什么?我的项目将使用Autotools来配置和安装实用程序,因此可以进行一些“编译”,但如何检测正在使用的网络管理器?这种方法的问题包括在使用中的网络管理器不存在模块时该怎么办。还是应该让编译用户决定启用哪个“模块”


然后,这个问题扩展到了打包—当将其创建为一个包时,如何支持现有的多个网络管理器,即使是在一个发行版上?例如,在Arch中,用户可能安装了netctl,它使用一组配置文件、Wicd或GNOME网络管理器。

您可以使用插件API创建软件。API描述了如何配置网络接口。然后,您将拥有一个用于NM、一个用于Wicd、一个用于/etc/network/interfaces等的插件。用户可以选择在
/configure
阶段编译哪些插件,这样他就不需要安装不必要的依赖项


对于多个启用的插件(例如NM和Wicd),您可以使用D-Bus检查注册了什么服务来管理网络接口

wicd和网络管理器似乎都提供了D总线接口。因此,如果这些守护进程中有一个是在D-Bus下注册的,您可以签入您的软件。或者,您可以将NM或Wicd定义为一项要求,因此用户必须使用这些工具之一来使用您的软件。在这种情况下,您有一个已定义的环境,因此您的软件不会那么复杂。@yegorich我应该决定在编译时启用哪个“模块”,还是在运行时启用哪个“模块”?如果您指的是D-Bus,那么在运行时启用。您甚至可以使用某种插件API设计软件。一个用于NM、一个用于Wicd、一个用于netctl等的插件。API描述了如何配置网络接口。然后用户可以选择编译哪个插件,这取决于他的系统配置。@yegorich想把它写成一个正式的答案吗?对我来说这似乎是最好的方法