Linux 组织已安装程序文件的方式有什么好处?

Tim*_*Tim 10 linux filesystems windows software-installation

在 Windows 中,系统驱动器C:有一个目录program_files,在该目录下每个程序都有自己的目录。

在 Linux 中,在/usr/和下/usr/local/,有/bin, /etc, /share, /src等。

所以在windows中,每个程序的所有文件都归在同一个目录下,而在Linux中,所有程序的同类型文件都归在同一个目录下。

我觉得Windows 组织安装程序的方式比Linux 的方式更合乎逻辑,因此安装程序更易于手动管理。

Linux 组织已安装程序文件的方式有什么好处?谢谢。

当遇到如何组织 $HOME 中已安装的程序以供 shell 在运行时搜索它们的问题时,我有这个问题,我尝试以$HOMEWindows 的方式组织我的程序,但是在指定程序的搜索路径时遇到了一些问题。

小智 18

在 Linux 中,如果维护得当,不同的位置通常会反映一些逻辑。例如。:

  • /bin 包含最基本的工具(程序)
  • /sbin 包含最基本的管理程序

它们都包含启动和基本故障排除使用的基本命令。在这里你可以看到第一个区别。有些程序不适合普通用户使用。

然后进去看看/usr/bin。在这里您应该找到更多的命令(程序)选择,通常超过 1000 个。他们是标准的工具,但并非必不可少的那些/bin/sbin

/usr/bin包含命令,而配置文件驻留在别处。这既分离了功能实体(程序)及其配置和其他文件,但就用户功能而言,这很方便,因为命令不与其他任何东西混合允许简单使用PATH指向可执行文件的变量。它还引入了清晰度。无论是什么都应该是可执行的。

看看我的PATH

$ echo "$PATH" | perl -F: -anlE'$,="\n"; say @F'
/home/tomas/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games
Run Code Online (Sandbox Code Playgroud)

正好有六个位置包含我可以直接调用的命令(即不是通过它们的路径,而是通过它们的可执行文件的名称)。

  • /home/tomas/bin 是我的主文件夹中我的私人可执行文件的私人目录。
  • /usr/local/bin 下面我分别说明。
  • /usr/bin 上面已经介绍过了。
  • /bin 上面也有介绍。
  • /usr/local/games/usr/local(将在下面解释)和游戏的组合
  • /usr/games是游戏。不要与实用程序可执行文件混合,它们有各自的位置。

现在到/usr/local/bin. 这个有点滑,这里已经解释过了:什么是/usr/local/bin?. 要理解它,您需要知道该文件夹/usr可能被多台机器共享并从一个网络位置挂载。如前所述,启动时不需要那里的命令,与 中的命令不同/bin,因此可以在启动过程的后期安装该位置。它也可以以只读方式安装。/usr/local/bin,另一方面,用于本地安装的程序,并且需要可写。因此,虽然许多网络机器可能共享通用/usr目录,但它们中的每一个都将自己/usr/local安装在公共/usr.

最后,看看PATH我的 root 用户的:

# echo "$PATH" | perl -F: -anlE'$,="\n"; say @F'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
Run Code Online (Sandbox Code Playgroud)

它包含这些:

  • /usr/local/sbin,其中包含类型的管理命令 /usr/local
  • /usr/local/bin,这与普通用户可以使用的相同。同样,它们的类型可以描述为/usr/local.
  • /usr/sbin 是非必要的管理实用程序。
  • /usr/bin 是非必要的管理和常规用户实用程序。
  • /sbin 是必不可少的管理工具。
  • /bin 是管理员和普通用户必不可少的工具。

  • @Keiji,vendor-vs-local-management 是当今最常见(和传统)的区别,但是如果您查看传统的 UNIX 安装,`/usr`-off-a-network(vs `/usr/local ` 是,嗯,*local*) 并非闻所未闻。 (4认同)

Yur*_*ruk 7

在今天,我认为这是对经典 UNIX 的历史继承。

在第一个 UNIX 版本中,程序没有现在那么大。程序通常由一个使用系统库的可执行文件组成。所以,没有人想过由几个自己的库组成的程序。主库是 C 库,每个程序都知道它的位置。

此外,UNIX 环境被视为成品(用于准备文档)。因此所有工具的路径是固定的。

HDD(硬盘驱动器)时代的固定路径的一些好处现在已经存在。如果 FSH(文件系统层次结构)在单独的磁盘分区上拆分并将带有二进制文件和库的分区放在 HDD 的主要扇区附近,那么程序启动的时间会快一点。

  • 有一些引人注目的优势在今天仍然有用。将二进制文件保存在 `/usr/bin` 中,将静态数据文件保存在 `/usr/share` 中以及可以在 `/var` 或 `/usr/var` 中修改的文件意味着可以使用安全措施来强制执行任何`share` 或 `var` 是可执行的(通过为它们的挂载使用 `noexec` 标志);不能修改`var`之外的任何内容(在使用`dm_verity`或类似措施生成签名的只读媒体的系统上);等等。 (6认同)