在 Linux 中我应该将程序安装到哪个目录?

在 Linux 中我应该将程序安装到哪个目录?

我想在 Linux 中安装一个程序并将其作为守护进程运行。 (本例中为“团队发言 3”,但问题本质上是一般性的)。没有提供软件包,仅提供焦油二进制文件。

按照惯例,我应该将这样的程序放在目录结构中的哪个位置?

在网上我发现它/opt适用于“可选插件应用程序”,而/usr适用于“用户程序”。

我发现一个教程建议/opt而另一个建议/usr

那么哪一个“更正确”呢?

答案1

“更正确”取决于您的分布。您应该检查您的发行版的指南,了解将不受软件包管理器管理的软件(通常/usr/local)放在哪里,或者如何为其创建自己的软件包。

正如您所说,TeamSpeak 只是将所有内容放在一个文件夹中(并且可能不容易重新组织),是的/opt/可能是最好的。

(但是,例如,在 Arch Linux 中,包管理器可以安装在那里,所以我仍然会创建一个 PKGBUILD 来安装在/opt.)

还有发行版通常尝试遵循文件系统层次结构标准,所以这是寻找更通用约定的地方。

答案2

在哪里安装程序?

如果您要编译自己的软件,那么您最终可以控制安装位置。

  • 按照惯例,手动编译和安装的软件(不是通过包管理器,例如 apt、yum、pacman)安装在/usr/local.
  • 一些套餐(程序)将在其中创建一个子目录/usr/local来存储所有相关文件,例如/usr/local/openssl.
  • 其他套餐将把必要的文件安装到现有目录中,例如/usr/local/sbin/usr/local/etc
    这些只是默认位置,可以在编译期间更改。

运行./configure时定义安装位置

当你编译软件时,可以指定安装位置--prefix=通过在运行时使用该选项./configure。强烈建议您通过运行来查看包的所有可用选项$ ./configure --help | less。此外,浏览包中提供的INSTALL和文档也是一个好主意。README它们往往包含特定于包的安装说明和依赖项信息。

请注意

还应该指出的是尽管您可以将软件存储在任何地方,根据FHS,本地安装的软件的源代码应该存储在/usr/local/src

如果您需要复制库存配置文件或二进制文件,标准化源树的存储位置将使您能够轻松找到树。即使某些软件包使用它,您的源代码也不应该存储在/usr/src为系统软件(例如内核)指定的位置。

确保 PATH 找到您的位置

最后,您需要确保您的安装位置包含在您的$PATH.如果您决定安装软件包,/opt但它不在您的$PATHshell 中,则您将找不到可执行文件,并且您将必须使用绝对路径来调用程序。这里有一些精彩的讨论非盟关于配置您的$PATH

补充阅读:man hier

答案3

Linux 标准库文件系统层次结构标准可以说是在 Linux 系统上安装软件的位置和方式的标准。我建议将未包含在您的发行版中的软件放置在/opt其中/usr/local/的子目录中(/opt/<package> /opt/<provider> /usr/local/bin)。

最佳实践是将您下载的软件转换为您的发行版本机的可安装软件包,例如 dpkg 或 rpm 格式。这将有助于报告、升级和彻底删除软件。

答案4

二进制文件按照常见约定放入bin文件夹中,如何组织包结构取决于您,我可以想到/opt/<prog_name>/它是否只是二进制文件列表。

相关内容