我发现了这个话题:/opt 和 /usr/local 有什么区别?
还有这个链接:http://www.pathname.com/fhs/pub/fhs-2.3.html
/home
为了帮助我理解、/root
、和之间的用法,我仍然有一个问题/usr/local
,因为我对它们之间的差异有点困惑。/usr/bin
/opt
对于我想要安装必须由用户本地使用的应用程序的系统,将应用程序放在/home
或/usr/bin
或中是否更好/root
?有我应该知道的“良好做法”吗?
答案1
嗯,有各种各样的考虑。
你没有放入任何东西
/root
。这仅适用于 uid 0 和系统管理;非 root 用户通常甚至无法访问它。/home/<username>
如果您是计算机上的非特权用户并且您个人需要能够使用您正在安装的软件,请安装在下面。如果您是管理员,您通常不应该乱搞用户的主目录。安装在
/usr/local
正常软件包下,无论出于何种原因,您都从本地源安装(而不是通过软件包管理器安装)。如果您./configure && make && make install
从源 tarball运行标准 autoconf 咒语,这通常是放置内容的地方。/usr/local/bin
如果我希望它们普遍可用,我还将本地开发的一些实用程序放在 下。安装
/opt
第三方预捆绑软件(Calibre 就是一个很好的例子,如果您使用他们的二进制安装程序)。这会为/opt
您安装的每个包创建一个单独的目录,并且该目录包含该包的所有必需项(与/usr
或相对/usr/local
,其中所有包的二进制文件都在 下bin
,所有包的库都在 下lib
,&c。)。一般来说,如果您自己编写或打包需要许多不同组件的软件,那么将其放在此处可能会很好,但如果不是他们的推荐,尝试在那里安装其他人的软件包可能不是最佳选择。不过,这可能是一个意见问题。
如果您要创建用户或管理员将手动安装的包,则您需要/opt
或/usr/local
。如果您要安装其他人的软件包,请遵循他们的建议。如果您正在为发行版打包某些内容(您可能不是),请使用/usr
.
答案2
一个表现良好的系统集成包具有以下特点:
- 可执行文件在
/usr/bin
- .so 和 .a 库在
/usr/lib
- 独立于体系结构的数据(包括文档)在
/usr/share
- 系统范围的配置数据在
/etc
- 用户配置数据在点文件中
$HOME
或中$HOME/.config
如果您的包不是系统集成的(例如,您从源代码构建的包),您的前缀将/usr/local
不仅仅是/usr
.
如果您的包不遵循此数据分离约定,则应将其放入/opt
.
如果您没有在 之外写入的权限$HOME
,则可以复制bin
,lib
和share
in $HOME/.local
,但大多数用户级包管理器不遵循这一点(根据我的经验)。
/root
只是root用户的家。您通常不必担心/root
是否要将软件安装到系统上。
答案3
/家是个人用户主目录的基本目录。在 Windows XP 中,/home 相当于 %HOMEDRIVE%。完整路径(通常为 /home/$Loginname)相当于 %HOMEPATH%。
/根是主超级用户帐户的主目录。它驻留在 / 上,以使其在早期启动期间可用,而 /home 可能不可用(网络共享或自己的挂载点)。
我不会重复在其他关于 /usr/local 的答案中可以读到的内容...