use*_*378 106 fhs executable software-installation directory-structure not-root-user
我有一个 perforce 版本控制客户端 ( p4
)的可执行文件。我不能把它放进去,/opt/local
因为我没有 root 权限。是否有一个标准位置需要放置在它下面$HOME
?
文件系统层次结构是否有一个约定,说明需要将本地可执行文件/二进制文件放入$HOME/bin
?
另外,如果确实有约定,我是否必须明确包含$HOME/bin
目录的路径或目录的任何位置bin
?
Geo*_*e M 111
一般来说,如果非系统安装和维护的二进制文件需要在系统范围内可供多个用户访问,则应由管理员将其放入/usr/local/bin
. 下面有一个完整的层次结构/usr/local
,通常用于本地编译和安装的软件包。
如果您是二进制文件的唯一用户,则安装到$HOME/bin
合适的位置,因为您可以自己安装它并且您将是唯一的使用者。如果您从源代码编译软件包,也可以在您的$HOME
目录中创建部分或完整的本地层次结构。完整的本地层次结构将如下所示。
$HOME/bin
本地二进制文件$HOME/etc
本地二进制文件的特定于主机的系统配置$HOME/games
本地游戏二进制文件$HOME/include
本地 C 头文件$HOME/lib
本地图书馆$HOME/lib64
本地 64 位库 $HOME/man
本地在线手册$HOME/sbin
本地系统二进制文件$HOME/share
与本地架构无关的层次结构$HOME/src
本地源代码运行时configure
,您应该通过指定$HOME
安装默认值的前缀来定义安装的本地层次结构。
./configure --prefix=$HOME
现在make && make install
运行时,编译的二进制文件、包、手册页和库将安装到您的$HOME
本地层次结构中。如果您没有手动创建$HOME
本地层次结构,make install
则会创建软件包所需的目录。
安装后$HOME/bin
,您可以添加$HOME/bin
到您$PATH
的二进制文件或使用绝对文件调用二进制文件$PATH
。默认情况下,某些发行版会包含$HOME/bin
在您$PATH
的发行版中。您可以通过以下任一方式进行测试echo $PATH
并查看是否$HOME/bin
存在,或者将二进制文件放入$HOME/bin
并执行which binaryname
. 如果它返回$HOME/bin/binaryname
,则默认情况下它在您的 $PATH 中。
Mat*_*eon 40
正如uther 所提到的,/usr/local
本质上是作为系统管理员安装的软件的前缀,而/usr
应该用于从分发包安装的软件。
这背后的想法是避免与分布式软件(例如rpm
和deb
包)发生冲突,并让管理员完全控制“本地”前缀。
这意味着管理员可以安装自定义编译的软件,同时仍然使用像 debian 这样的发行版。
来自 FHS
放置在 / 或 /usr 中的软件可能会被系统升级覆盖(尽管我们建议在这些情况下发行版不要覆盖 /etc 中的数据)。出于这个原因,本地软件不得在没有充分理由的情况下放置在 /usr/local 之外。
安装特定于用户的软件时,uther 建议使用$HOME
作为前缀,因为这可以确保您具有写入权限。就我个人而言,我觉得$HOME/.local
它是一个更优雅的解决方案,因为它避免了你(希望)漂亮整洁的主目录混乱!
$HOME/.local/share
已在freedesktop.org XDG 基本目录规范中使用,因此在您使用它时,无需太多设想将 a 添加$HOME/.local/bin
到您的$PATH
并制作 a$HOME/.local/lib
等。
如果你真的不希望你的前缀是一个隐藏目录,你也可以轻松地创建一个符号链接,例如:
ln -s .local ~/local
Run Code Online (Sandbox Code Playgroud)
值得注意的是.config
(not .local/etc
) 是$XDG_CONFIG_HOME
用于用户特定配置文件的默认值。我还应该指出,不幸的是,很大一部分软件忽略了 XDG 并在他们喜欢的任何地方(通常在 的根目录中$HOME
)创建配置文件。另请注意,$XDG_CONFIG_HOME
如果$HOME/.config
需要默认值,则可能未设置。
奇怪的是,没有为发行版的默认配置文件保留目录,因此无法知道文件/etc
是由发行版提供还是由系统管理员编辑。
小智 8
XDG 基本目录规范版本 0.8 规定本地可执行文件应放置在~/.local/bin中:
用户特定的可执行文件可以存储在 $HOME/.local/bin 中。发行版应确保此目录显示在 UNIX $PATH 环境变量中的适当位置。
如果您的发行版遵循规范,那么您不必“显式包含路径”。上一个问题试图确定哪些发行版可以执行此操作。
/usr/local/bin
根据互联网网站 Wikitechy 的说法,它看起来很像。
/usr/bin
来自文件系统层次结构标准的信息,他们将文件夹定义为系统上可执行命令的主目录。
/usr/bin
与维基百科/usr/local/bin
之间的其他信息:
\xc2\xa0\xc2\xa0/usr/bin
是操作系统提供的可供普通用户使用的可执行文件的位置。例如,通常不是核心操作系统所需的文件,也不是 root 用户访问的文件,但也可以是。
\xc2\xa0\xc2\xa0/usr/local/bin
是您添加到系统中以供所有用户用作通用系统文件的所有附加可执行文件的位置,但它们不是操作系统支持的官方文件。
\xc2\xa0\xc2\xa0 总的来说,/usr/bin
是操作系统提供的二进制文件的位置。/usr/local/bin
是用户下载二进制文件的地方。