Linux 上的软件安装在哪里?/opt 和 /usr 有什么区别?

Ahm*_*ish 0 apt c++ software-installation

我想阐明 Linux 中的软件应用程序和库安装理念和最佳实践。根据我对文件系统层次结构标准(FHS)的理解,新软件必须安装在 /opt 中,这就是包管理器的作用。但是,包管理器是否也在 /use/local 目录中安装应用程序软件或仅在库软件中安装应用程序软件?例如,我安装了 Eigen c++ 库,它是一个基于头文件的库,使用:

sudo apt install libeigen3-dev
Run Code Online (Sandbox Code Playgroud)

我在 /usr/include 中找到了 Eigen 文件。但是,通过阅读 CMake 文档,当我开发 C++ 库时,我应该配置我的 CMake 将它们安装在 /usr/local 中(这是 CMAKE_INSTALL_PREFIX 的默认值)?这就提出了一个问题,为什么 Eigen 安装在 /usr/include 而不是 /usr/local/include 中?/usr/bit /usr/include 目录不是用于像命令 ls 和 cat 这样的系统应用程序吗?

此外,保存在 /usr/local 与 /usr/share 中的库有什么区别?

非常感谢您的帮助。我希望能够清楚地了解在 Linux 中安装应用程序和库软件的最佳实践。

Rin*_*ind 6

/opt/用于提供要提取的 tar 球的 3rd 方应用程序。通常,该软件会提供具有正确权限的完整设置,并且您会收到将服务复制到系统以激活它的指令。Mysql、Apache、Jasperserver 都提供替代安装。

/opt/系统本身从不使用它来避免冲突。

安装软件时,/opt/您倾向于在目录名称中包含版本号来安装它,这样您就可以安装多个版本并使用活动版本的符号链接。这样你就可以在仍然使用 v5 的系统上安装 Mysql v8,在提交到下一个 Ubuntu 版本之前测试你的应用程序。

/usr/是默认 Linux 的一部分,用于通过该系统的包管理器存储安装的部分内容。为了避免重复(Windows 在旧版本中经常遇到的问题),Linux 软件目录中的内容得到了一大群创建者的一致同意。另一个好处是软件可以更小,因为您不需要为软件提供库。