问题描述
/opt
和/usr/local
目录之间有什么区别?应该为它们安装哪种程序?
我提到了Linux File-system Hierarchy,但解释并不清楚。根据以上链接;
/opt
: – 此目录保留给所有不属于默认安装的软件和add-on软件包
/usr/local
: – /usr/local
层次结构供系统管理员在本地安装软件时使用。系统软件更新时,需要保护它不被覆盖。
在没有任何联网计算机的PC环境中,安装将由多个本地用户访问的软件的目录应该是什么? (即我应该在哪里安装像netbeans这样的软件)
谢谢
最佳解决方法
/opt
适用于不依赖于所述包范围之外的任何依赖性的third-party应用程序。 /usr/local
适用于在分发包管理器范围之外的此计算机上安装的软件包。
一个例子:
作为.deb提供的开源sip-client将安装到/usr
中。如果它是使用Qt框架构建的,那么apt会将其作为依赖项引入。
从source构建的相同开源sip-client将驻留在/usr/local
中,因此如果您稍后为同一应用程序安装了.deb软件包,它将不会被apt搞砸。您可以从源构建其依赖项,也可以从包管理器中获取它们。
在/opt
中的third-party应用应该是self-contained。例如,使用Qt的专有sip-client不会依赖apt的版本,而是捆绑或静态链接。
有关更多信息,请查看Filesystem Hierarchy Standard。
次佳解决方法
我会将third-party binary-only软件包安装到/opt
。
你从源头建立的任何东西我都会放入/usr/local
。
netbeans
位于Ubuntu Repos中。你需要一个特定的版本吗?
第三种解决方法
这都是关于包装的。如果以LHS方式打包(将可执行文件放入bin /library到lib /等),它应该进入/usr /local。
如果某个东西有顶级目录但不遵循该模型,那么它将进入/opt。通常,您必须在/opt中明确添加内容。
另请参见This question on superuser