我想在Linux中安装程序并将其作为守护程序运行。(在这种情况下,团队讲3,但问题本质上是一般性的)。没有提供程序包,只有解压缩的二进制文件。我应该按惯例将这样的程序放在目录结构中的什么位置?
在网络上,我发现/ opt用于“可选附加应用程序”,而/ usr用于“用户程序”。我发现一个教程建议/ opt,而另一个建议/ usr。
那么哪个是“更正确的”呢?
我想在Linux中安装程序并将其作为守护程序运行。(在这种情况下,团队讲3,但问题本质上是一般性的)。没有提供程序包,只有解压缩的二进制文件。我应该按惯例将这样的程序放在目录结构中的什么位置?
在网络上,我发现/ opt用于“可选附加应用程序”,而/ usr用于“用户程序”。我发现一个教程建议/ opt,而另一个建议/ usr。
那么哪个是“更正确的”呢?
Answers:
“更正确”取决于您的分布。您应该检查发行版的指南,以了解软件包管理器未管理的软件放置位置(通常是/usr/local
)或如何为软件包创建自己的软件包。
正如您所说的,TeamSpeak只是将所有内容都放在一个文件夹中(并且可能不容易重组),/opt/
可能是最好的。
(但是,例如,在Archlinux中,程序包管理器可以在此处安装,因此我仍然会制作PKGBUILD来安装/opt
。)
另外,发行版通常会尝试遵循Filesystem Hierarchy Standard,因此这是寻找更通用约定的地方。
如果您要编译自己的软件,则最终可以控制安装位置。按照约定,手动编译(而不是通过软件包管理器,例如apt,yum,pacman)安装和安装的软件安装在中/usr/local
。某些软件包(程序)将在其中创建一个子目录/usr/local
来存储其所有相关文件,例如/usr/local/openssl
。其他软件包会将其必要的文件安装到现有目录中,例如/usr/local/sbin
和/usr/local/etc
。这些只是默认位置,可以在编译期间进行更改。
编译软件时,可以使用--prefix=
运行时的选项指定安装位置./configure
。强烈建议您通过运行查看包的所有可用选项$ ./configure --help | less
。另外,浏览软件包随附的INSTALL和README文档是一个好主意。它们往往包括特定于软件包的安装说明和依赖项信息。
还应注意,尽管您可以将软件存储在任何地方,但根据FHS,本地安装软件的源代码应存储在“ /usr/local/src
标准化”中,您在其中存储源树的位置将使您在需要复制库存时可以轻松地找到树。配置文件或二进制文件。即使某些软件包使用它,您的源代码也不应存储在/usr/src
系统软件(例如内核)中指定的源代码中。
最后,您需要确保您的安装位置中包含您的$PATH
。如果您决定将软件包安装在其中,/opt
但没有安装在$PATH
外壳中,则找不到可执行文件,因此必须使用绝对路径来调用程序。这是AU有关配置您的服务器的一些精彩讨论$PATH
补充阅读: man hier
在Linux标准库和文件系统层次标准,可以说是在哪里以及如何你应该在Linux系统上安装软件的标准和建议不包括在你的发行无论是在把软件/opt
或/usr/local/
或者说其中的子目录(/opt/<package> /opt/<provider> /usr/local/bin
)。
最佳做法是将下载的软件转换为发行版中的可安装软件包,例如dpkg或rpm格式。这将有助于报告,升级和彻底删除软件。
/opt
并且/usr/local/
是两个可用的选项,但希望在特定的信息,其中一个这些选项的使用。如果它声称两个位置可以互换,那么这可能是一个有效的答案(尽管在这种情况下,我会认为这是正确的答案)。
二进制文件按照bin
通用约定放在文件夹中,如何组织程序包结构由您决定,我想/opt/<prog_name>/
这是否只是二进制文件列表。
程序的安装方式有两种,具体取决于打包方式。
通过软件管理器(apt,synaptic,Gdebi等)–该程序采用打包形式,通常是.deb或rpm。在大多数情况下,软件管理器会处理依赖关系,通常会将二进制文件安装到/usr/bin
,将配置文件安装到/etc
等等。他们通常还会为您家中的程序创建一个配置文件~/.foo
。如果您可以编辑此文件,则还可以通过这种方式轻松更改会话的设置。当您删除软件包时,管理器将找到所有文件并彻底删除它们(它将所有位置存储在特殊的文本文件中)。但是它可能会保留一些配置文件,例如您的主文件夹中的一个。
您以架构的预编译二进制文件形式下载程序(通常是压缩的)。该程序的可执行文件通常是在一个单一的文件夹下对其他文件(动态链接库等)这整个文件夹可以被复制,使用根权限,无论是/opt
或/usr/bin
和可能,如果权限允许,被任何用户使用。我本人将带有二进制文件的文件夹放到主文件夹中~/bin
。现在,您应该能够通过调用其bin文件来运行该程序。
/usr/local
)或如何为软件包创建自己的软件包。