我有一个 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
应该用于从发行版软件包安装的软件。
其背后的想法是避免与分布式软件(例如rpm
和deb
软件包)发生冲突,并让管理员完全控制“本地”前缀。
这意味着管理员可以安装自定义编译的软件,同时仍然使用 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
是用户下载二进制文件的地方。