根据Filesystem Hierarchy Standard,/opt
用于“附加应用程序软件包的安装”。 /usr/local
是“供系统管理员在本地安装软件时使用”。这些用例看起来非常相似。未包含在发行版中的软件通常默认配置为安装在他们选择的任何一种/usr/local
或/opt
没有特定的韵律或原因。
我是否遗漏了某些差异,或者两者都做同样的事情,但由于历史原因而存在?
在大多数FHS系统上,有一个/tmp
文件夹和一个/var/tmp
文件夹。两者之间的功能区别是什么?
我知道许多名称中带有 .d 的目录:
init.d
yum.repos.d
conf.d
Run Code Online (Sandbox Code Playgroud)
是目录的意思吗?如果是,这与什么消除歧义?
更新:关于这.d
意味着什么,我有很多有趣的答案,但我的问题的标题没有选好。我把“意思”改为“代表”。
我需要在我的 Fedora 机器上编译一些软件。把它放在哪里以免干扰打包软件的最佳位置?
compiling fhs software-installation directory-structure package-management
我在这个网站上阅读了这个,它没有意义。
http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/basic/node32.html
当UNIX被首先写入,
/bin
并/usr/bin
物理地驻留在两个不同的磁盘:/bin
是一个较小的速度更快(更昂贵)盘上,和/usr/bin
一个更大的速度较慢的磁盘上。现在,/bin
是一个符号链接/usr/bin
:它们本质上是同一个目录。
但是当你ls
打开/bin
文件夹时,它的内容远远少于/usr/bin
文件夹(至少在我正在运行的系统上)。
那么有人可以解释一下区别吗?
或者:我可以把属于一个组的文件放在哪里?
假设 Unix 系统上有两个用户:joe和sarah。他们都是电影爱好者团体的成员。我应该把他们的电影文件放在哪里?
/home/{joe,sarah}/movies
不合适,因为这些目录属于joe / sarah,而不是属于他们的组;
/home/movies-enthusiast
也不合适,因为电影爱好者是一个群体,而不是一个用户;
/var/movies-enthusiast
可能是一种选择,但我不确定 FHS 是否允许这样做;
/srv/movies-enthusiast
也可能是一种选择,但是电影不是系统服务所需的文件。
我有一个 perforce 版本控制客户端 ( p4
)的可执行文件。我不能把它放进去,/opt/local
因为我没有 root 权限。是否有一个标准位置需要放置在它下面$HOME
?
文件系统层次结构是否有一个约定,说明需要将本地可执行文件/二进制文件放入$HOME/bin
?
另外,如果确实有约定,我是否必须明确包含$HOME/bin
目录的路径或目录的任何位置bin
?
fhs executable software-installation directory-structure not-root-user
可执行文件存储在/usr/libexec
类 Unix 系统中。FHS 说(部分4.7. /usr/libexec : Binaries run by other programs (optional)"
:
/usr/libexec
包括不打算由用户或 shell 脚本直接执行的内部二进制文件。应用程序可以使用/usr/libexec
.
在 Mac OS X 上,启动后立即rootless-init
调用的程序launchd
存储在/usr/libexec
. /usr/libexec
当它是可以存储在/usr/bin
或 中的独立可执行文件时,为什么要存储在其中/usr/sbin
?init
和其他不被 shell 脚本直接调用的程序也存储在[/usr]/{bin,sbin}
.
斜线 ( /
) 真的是 Linux 根目录名称的一部分吗?或者它只是它的象征?
怎么样/etc
等等?
假设/dev/sda2
是一个Linux根目录的块设备。
$ sudo debugfs /dev/sda2 debugfs 1.44.1(2018 年 3 月 24 日) 调试文件: 密码 [密码] INODE:2 路径:/ [root] 节点:2 路径:/ 调试文件: 统计/ 索引节点 :2 类型:目录模式:0755 标志:0x80000 代:0 版本:0x00000000:00000077 用户:0 组:0 项目:0 大小:4096 文件 ACL:0 链接:25 块数:8 片段:地址:0 数量:0 大小:0 ctime: 0x5b13c9f1:3f017990 -- Sun Jun 3 15:28:57 2018 atime: 0x5b13ca0f:3b3ee380 -- Sun Jun 3 15:29:27 2018 mtime: 0x5b13c9f1:3f017990 -- Sun Jun 3 15:28:57 2018 crtime: 0x5aad1843:00000000 -- …
根据FHS-3.0,/tmp
用于临时文件和/run
运行时变量数据。数据输入/run
必须在下次启动时删除,这不是/tmp
,但程序仍然不能假设数据输入/tmp
将在下一次程序启动时可用。这一切对我来说似乎很相似。
那么,两者有什么区别呢?程序应该根据哪个标准来决定是将临时数据放入/tmp
还是放入/run
?
根据 FHS:
程序可能有一个子目录
/run
;对于使用多个运行时文件的程序,鼓励这样做。
这表明“系统程序”和“普通程序”之间的区别不是标准,程序的生命周期也不是标准(例如,长时间运行与短期运行的进程)。
尽管 FHS 中没有给出以下基本原理,/run
但引入它/var
是为了克服安装太晚的问题,因此需要/var/run
使用肮脏的技巧才能足够早地提供。然而,现在随着/run
被引入,并且考虑到它在 FHS 中的描述,似乎没有明确的理由同时拥有/run
和/tmp
。
fhs ×10
linux ×3
directory ×2
filesystems ×2
compiling ×1
executable ×1
filenames ×1
files ×1
tmp ×1