我想澄清一下 Linux 中的软件应用程序和库安装理念和最佳实践。根据我对文件系统层次结构标准 (FHS) 的理解,新软件必须安装在 /opt 中,这就是包管理器所做的。但是,包管理器是否也在 /use/local 目录中安装应用程序软件,还是只安装库软件?例如,我安装了 Eigen c++ 库,它是一个基于头文件的库,使用:
sudo apt install libeigen3-dev
我在 /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 中安装应用程序和库软件的最佳实践。
答案1
/opt/
用于提供 tar 包以供提取的第三方应用程序。通常,软件会提供完整设置并具有正确的权限,并且您会收到一条指令,要求将服务复制到系统以激活它。Mysql、Apache、Jasperserver 都提供备选安装。
/opt/
不会被系统本身使用,以避免冲突。
安装软件时,/opt/
您倾向于在目录名称中使用版本号进行安装,这样您就可以安装多个版本,并使用符号链接来表示活动版本。这样,您可以在仍使用 v5 的系统上安装 Mysql v8,并在提交下一个 Ubuntu 版本之前测试您的应用程序。
/usr/
是默认 Linux 的一部分,用于通过该系统的包管理器存储安装的各个部分。为了避免重复(Windows 在旧版本中存在重复问题),Linux 软件位于大量创建者同意的目录中。另一个好处是软件可以更小,因为您不需要为软件提供库。