来自 FHS

来自 FHS

我有一个 perforce 版本控制客户端的可执行文件 ( p4)。我无法将其放入,/opt/local因为我没有 root 权限。是否有需要放置的标准位置$HOME

文件系统层次结构是否有一个约定,规定本地可执行文件/二进制文件需要放置在$HOME/bin

我找不到上面提到的这样的约定FHS 的维基百科文章

另外,如果确实存在约定,我是否必须显式包含$HOME/bin目录的路径或目录的位置bin

答案1

一般来说,如果非系统安装和维护的二进制文件需要在系统范围内可供多个用户访问,则管理员应将其放入/usr/local/bin.下面有一个完整的层次结构/usr/local,一般用于本地编译安装的软件包。

如果您是二进制文件的唯一用户,请安装到$HOME/bin$HOME/.local/bin是合适的位置,因为您可以自己安装它,并且您将是唯一的消费者。如果您从源代码编译软件包,那么在您的$HOME$HOME/.local目录中创建部分或完整的本地层次结构也是合适的。使用$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默认为您的。

答案2

作为尤瑟提到,/usr/local本质上是作为由系统管理员安装的软件的前缀,而/usr应该用于从发行版软件包安装的软件。

其背后的想法是避免与分布式软件(例如rpmdeb软件包)发生冲突,并让管理员完全控制“本地”前缀。

这意味着管理员可以安装自定义编译的软件,同时仍然使用 Debian 等发行版。

来自 FHS

放置在 / 或 /usr 中的软件可能会因系统升级而被覆盖(尽管我们建议发行版在这些情况下不要覆盖 /etc 中的数据)。因此,如果没有充分的理由,本地软件不得放置在 /usr/local 之外。

安装用户特定软件时,乌瑟尔建议使用$HOME作为前缀,因为这可以确保您拥有写入权限。就我个人而言,我觉得这$HOME/.local是一个更优雅的解决方案,因为它避免了你(希望如此)漂亮整洁的主目录的混乱!

$HOME/.local/share并且$HOME/.local/bin已经在使用freedesktop.org XDG 基本目录规范,并且发行版被要求添加$HOME/.local/bin到,所以当你在做的时候,$PATH不需要太多的想象来制作,等等。$HOME/.local/lib

如果您真的不希望前缀成为隐藏目录,您也可以轻松创建指向它的符号链接,例如:

ln -s .local ~/local

边注

值得注意的是.config(not .local/etc) 是默认值$XDG_CONFIG_HOME用于用户特定的配置文件。我还应该指出,不幸的是,很大一部分软件会忽略 XDG 并在任意位置创建配置文件(通常在 的根目录中$HOME)。另请注意,如果需要$XDG_CONFIG_HOME默认值,则可以取消设置。$HOME/.config

奇怪的是,没有为发行版的默认配置文件保留的目录,因此无法知道其中的文件是/etc由发行版提供还是由系统管理员编辑。

答案3

XDG 基本目录规范版本 0.8 规定本地可执行文件应放置在〜/.local/bin:

用户特定的可执行文件可以存储在 $HOME/.local/bin 中。发行版应确保此目录显示在 UNIX $PATH 环境变量中的适当位置。

如果您的发行版遵循规范,那么您不必“显式包含路径”。这上一个问题尝试确定哪些发行版可以执行此操作。

答案4

看起来像/usr/local/bin根据互联网网站维基技术

有关信息/usr/bin来自文件系统层次结构标准,他们将该文件夹定义为系统上可执行命令的主目录。

/usr/bin之间与/usr/local/bin来自之间的附加信息维基技术:

  /usr/bin是操作系统提供的普通用户使用的可执行文件的位置。例如,通常不是核心操作系统所需的文件,也不是 root 用户访问的文件,但也可以是。

  /usr/local/bin是您添加到系统中以供所有用户用作公共系统文件的所有附加可执行文件的位置,但它们不是操作系统支持的官方文件。

   总的来说,/usr/bin这是操作系统提供二进制文件的地方。/usr/local/bin是用户下载二进制文件的地方。

相关内容