它似乎apt-get install
会下载一个 Debian 包并尝试运行安装脚本:
- 创建适当的目录
- 创建适当的帐户
- 复制二进制文件
- 复制数据文件
- 复制 Conf 文件
- 复制 init.d 脚本
- 启动服务
- ETC。
我对此非常感兴趣,想一步一步弄清楚到底发生了什么。有什么方法可以查看吗?比如在“试运行”模式下打印 shell 命令?
答案1
简而言之:apt-get install
完成系统成功执行新安装的软件应用程序所需的一切操作。
较长的版本:
准备工作:
来自手册页:
还将检索并安装指定安装的软件包所需的所有软件包。
这些软件包存储在网络(互联网)的存储库中。因此,apt-get
将所有需要的软件包下载到临时目录(/var/cache/apt/archives/
)。它们将从 Web 服务器或 FTP 服务器下载。它们在所谓的 ;软件包管理器 apt 的存储库列表中指定sources.list
。从那时起,它们将按程序逐一安装。
首先要安装的是那些没有其他依赖项的软件包;因此无需安装其他软件包即可正常工作。这样,其他软件包(以前有依赖项)现在不再有依赖项。系统会不断重复此过程,直到安装指定的软件包。
每个包都要经过一个安装过程。
软件包安装程序:
在基于 Debian 的 Linux 发行版(例如 Ubuntu 或 Mint)中,这些软件包采用指定的标准化格式,称为:deb -->Debian 二进制软件包格式。
此类软件包包含要安装在系统上的文件。此外,它们还包含控制文件该文件包含打包系统在特定情况下应执行的脚本;所谓的维护者脚本. 这些脚本分为:
preinst
:在将文件安装到系统文件层次结构之前postinst
:安装后prerm
:卸载之前postrm
:卸载后
这些脚本是创建特定用户或需要重新启动某些服务或程序包运行所需的其他准备工作的地方。
除了这些脚本之外,软件包系统还有触发器用于特定事件。例如,安装新内核版本或 ldconfig 或 man-db 时重新生成 initrds。它们由一个或多个软件包激活,并在整个安装过程结束时运行。
有一张有趣的图,展示了安装新包的过程:
还有更多的控制文件,最重要的是以下这些:
control
: A依赖项列表以及其他有用的信息来识别包conffiles
: A配置文件列表(通常是/etc
)debian-binary
:包含 deb 包版本,目前为 2.0md5sums
:包中每个文件的 md5sum 列表,用于验证templates
:包含错误描述和对话框安装期间
如果你有兴趣,你可以手动解压一个 deb 包(下载后)并查看里面的内容:
# to only download the package (no installation)
apt-get download package
# to unpack the deb file
ar x package.deb
现在您可以看到一个名为 的文件,data.tar.gz
其中包含文件,以及一个名为 的文件,control.tar.gz
其中包含四个维护脚本和上面提到的控制文件。