当与 Linux 软件结合使用时,术语“安装”或“安装”是什么意思?

Abd*_*red 4 linux software-installation

我没有编程经验,但我了解 shell 脚本在理论上是如何工作的。使脚本可执行只有两个重要步骤,

  1. 我必须通过编写一个#!/path/to/interpreter,来告诉 shell 如何解释脚本的内容
  2. 我必须授予执行文件的权限chmod +x filename

到目前为止,我可以理解它,但是包含许多文件并压缩在一个.tar.gz包中的“真实”程序与这种安装有何不同,Linux 需要在幕后执行哪些重要步骤才能使程序可执行?或者简而言之:在 Linux 中安装的真正意义是什么?

Fah*_*tha 6

Unix 程序的安装大致由两部分组成。

1)将文件放在合适的位置

2)适当设置文件权限和所有权

关于第一个,Linux File Hierarchy Standard 是相关的。这是 Linux 特有的,但很大程度上遵循了历史上编纂的 Unix 规则。具体来说,打算由用户运行的二进制文件放在 中/usr/bin,用于管理等的系统级二进制文件放在 中/bin,本地安装的二进制文件通常放在 中/usr/local/bin,等等。这些是系统查看运行时的位置,基于PATH,变量,在 Debian 上是/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin. 类似地,库按照类似的规则放置在特定位置/usr/lib/lib/usr/local/bin等。同样,默认情况下,系统设计为在运行时查看这些目录。

还有其他用于放置文档(包括手册页)和数据文件的指定位置,但这些位置对于系统功能来说并不是那么重要。

关于第二点,系统不同部分的文件有不同的所有权和权限。虽然大多数文件归 root 所有,但关联的组各不相同。

安装的实际机制各不相同,但通常由构建系统的安装目标处理。免费的类 Unix 系统(如基于 Linux 的系统)最常见的构建系统是 Autotools 和 Cmake。

通常还有一个额外的层。通常 Linux 系统有一个二进制包管理器。这些包通常是通过调用安装目标来构建的,但不是将文件安装到系统中,而是作为构建二进制包过程的一部分将它们安装到临时目录中。对于 Debian,这通常debian/tmp是源目录的子目录。

与本地安装相比,将二进制包安装到系统中具有许多优点,特别是跟踪哪些文件属于哪个包/软件,以及以干净可靠的方式处理包/软件的删除。虽然构建系统可能有卸载目标,但这并不是处理卸载的可靠方法。