/etc 和 /usr/local/etc 有什么区别

bea*_*mit 31 fhs directory-structure

我正在开发一个需要存储大量应用程序数据的守护进程,我注意到在我的系统 (Fedora 15) 上有一个/usr/local/etc目录。

我决定将我的守护进程安装到/usr/local/bin,我需要一个地方来放置我的配置文件。

我在维基百科上没有看到这个。这是非标准的还是实际上这是安装程序/usr/local/bin以存储配置文件的标准位置?

原因是,我想向系统管理员推销这个,而犯这样的错误并不是一个很好的卖点......

Eig*_*ony 32

/usr/local通常用于从源代码构建的应用程序。即我使用类似的东西来安装我的大部分软件包apt,但是如果我下载了一个较新版本的东西或一个不属于我的发行版的软件,我会从源代码构建它并将所有东西放入`/usr/local'层次结构中。

这允许与分布的其余部分分离。

如果你正在开发一个软件给别人,你应该设计它,以便它可以安装人们想要的任何地方,但它应该默认为普通FHS指定的系统目录时,他们指定的前缀是/usr/etc/usr/bin,等)

/usr/local供您个人使用,它不应该是安装软件的唯一地方。

看过的好FHS,并使用标准的Linux工具,使您的源代码被编译并安装任何地方,所以,对于各种发行包制造商可以配置它们需要它们的分布,用户可以把它放进/usr/local 如果他们的愿望或者如果他们愿意,可以使用常规系统目录。

  • 实际上 GNU 标准要求包默认为本地路径,因为从源代码构建它的人通常不会指定在哪里。发行版在打包/构建时会将其更改为非本地路径。 (4认同)

And*_*dyM 11

一个非常简短的回答

/etc 被您的操作系统用于其配置文件

/usr/local/etc 可用于您和您附加安装的软件的配置文件


Gil*_*il' 6

/usr/local/etc在 Linux 世界中很少使用。/etc但是,是否将配置文件存储在或/usr/local/etc其他位置的决定通常是在编译时做出的(并且通常可以通过命令行选项或环境变量覆盖)。编译时默认值是什么并不重要,只需确保它易于设置(通常是--sysconfdirautoconf 之后的 选项)。如果您的守护程序被打包用于发行版,则可执行文件将进入/usr/sbin(从源代码构建时的默认情况应该是/usr/local/sbin)并且配置在/etc.

\n\n

请注意,这/etc不是应用程序数据\xe2\x80\x9d 的\xe2\x80\x9clots 的位置。这就是/var. 从源代码构建时的默认值可以是/var/local/mydaemon/var/lib/mydaemon;同样,从源代码构建时,默认情况下没有严格的约定。应该有一种方法可以更改编译时默认值(通常使用configure --localstatedir)和运行时默认值(使用配置文件中的设置,可能使用命令行选项或环境变量)。

\n