apt-get install中的安装脚本有什么作用?


14

似乎apt-get install将下载一个Debian软件包并尝试运行以下安装脚本:

  • 创建适当的目录
  • 建立适当的帐户
  • 复制二进制文件
  • 复制数据文件
  • 复制Conf文件
  • 复制init.d脚本
  • 启动服务
  • 等等

我对它真的很感兴趣,并且想弄清楚正在逐步进行的事情。有什么办法看吗?像“空转”模式下的打印Shell命令一样?

Answers:


25

简而言之apt-get install请执行系统可以成功执行新安装的软件应用程序所需的一切。

较长版本:

初步资料:

联机帮助页

指定安装的软件包所需的所有软件包也将被检索并安装。

这些软件包存储在网络(互联网)中的存储库中。因此,apt-get将所有需要的软件包下载到一个临时目录(/var/cache/apt/archives/)中。它们将从Web或ftp服务器下载。它们在所谓的中指定sources.list;软件包管理器apt的存储库列表。从那时起,它们将按程序一步一步安装。

首先要安装的是没有更多依赖关系的;因此无需安装其他软件包即可使其正常工作。这样,其他软件包(以前具有依赖项)现在就不再具有依赖项了。系统会一遍又一遍地执行该过程,直到安装了指定的软件包。

每个软件包都经过一个安装过程。

软件包安装过程:

在基于Debian的Linux发行版中,例如Ubuntu或Mint,这些软件包采用指定的标准化格式,称为:deb-> Debian二进制软件包格式

这样的软件包包含要在系统上安装的文件。它们还包含一个控制文件。该文件包含打包系统在特定情况下应执行的脚本;所谓的维护者脚本。这些脚本分为:

  • preinst:将文件安装到系统文件层次结构中之前
  • postinst:安装后
  • prerm:卸载前
  • postrm:卸载后

这些脚本是在其中创建特定用户或需要重新启动某些服务或软件包起作用所需的其他初步信息的地方。

除了那些脚本之外,程序包系统还具有用于特定事件的触发器。例如,在安装新的内核版本或ldconfig或man-db时,initrds的重新生成。它们由一个或多个软件包激活,并在整个安装过程结束时运行。

有一张有趣的图片,显示了新软件包的安装过程:

安装

控制文件也更多,最重要的如下:

如果您有兴趣,可以手动打开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其中包含四个维护者脚本和上述控制文件。


如今,我相信最好使用dpkg-deb -x package.deb代替ar x package.deb,因为dpkg它是官方的deb软件包管理器(使用apt-get)。
Fanatique
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.