我有一个针对perforce版本控制客户端(p4
)的可执行文件。我无法放置它,/opt/local
因为我没有root特权。是否需要将其放在下面的标准位置$HOME
?
文件系统层次结构是否有约定要求放置本地可执行文件/二进制文件$HOME/bin
?
我找不到Wikipedia文章中提到的有关FHS的约定。
另外,如果确实有约定,我是否必须明确包含$HOME/bin
目录的路径或目录的位置bin
?
我有一个针对perforce版本控制客户端(p4
)的可执行文件。我无法放置它,/opt/local
因为我没有root特权。是否需要将其放在下面的标准位置$HOME
?
文件系统层次结构是否有约定要求放置本地可执行文件/二进制文件$HOME/bin
?
我找不到Wikipedia文章中提到的有关FHS的约定。
另外,如果确实有约定,我是否必须明确包含$HOME/bin
目录的路径或目录的位置bin
?
Answers:
通常,如果非系统安装和维护的二进制文件需要在系统范围内可供多个用户访问,则管理员应将其放置在中/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
的文件中,也可以使用absolute调用二进制文件$PATH
。默认情况下,某些发行版将包含$HOME/bin
在您$PATH
的发行版中。您可以通过echo $PATH
查看是否$HOME/bin
存在来进行测试,或者将二进制文件放入$HOME/bin
并执行which binaryname
。如果返回$HOME/bin/binaryname
,则默认情况下它位于$ PATH中。
$HOME
。这会将您的主目录淹没在您根本不感兴趣的众多目录中。谁想要在主目录中拥有man
,lib
等等。我宁愿在$HOME/bin
或下创建层次结构$HOME/local
。这样只会在您的主目录中添加一个子目录,而不是十个。在PATH
可以容易地适用于包括$HOME/bin/bin
或$HOME/local/bin
。
$HOME/.local/share
(版本0.7,2010年11月24日)。
正如乌瑟尔提到的,/usr/local
旨在为,本质上是一个前缀,由系统管理员安装软件时/usr
,应使用从分发的包安装的软件。
其背后的想法是避免与分布式软件(例如rpm
和deb
软件包)发生冲突,并让管理员完全控制“本地”前缀。
这意味着管理员可以安装定制的编译软件,同时仍然使用发行版(如debian)。
从FHS
放置在/或/ usr中的软件可能会因系统升级而被覆盖(尽管在这种情况下,我们建议发行版本不要覆盖/ etc中的数据)。因此,本地软件不得无正当理由放在/ usr / local外。
在安装特定于用户的软件时,建议使用$HOME
前缀作为前缀,因为这可以确保您具有写权限。就个人而言,我觉得$HOME/.local
过去是一个更优雅的解决方案,因为它避免了使您的(希望)漂亮而整洁的主目录杂乱无章!
$HOME/.local/share
已经在使用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
是由发行版提供还是由系统管理员编辑的。
.local
在FHS
/etc
当与多位管理员一起管理服务器时,有关该注释的内容确实令人讨厌-很难跟踪对conf文件的自定义编辑。