如何显示安装 .deb 包将采取的操作?

如何显示安装 .deb 包将采取的操作?

我希望能够查看与即将升级的软件包相关的脚本/触发器,以便我可以判断,例如,它是否会导致 Web 服务器重新启动。我找不到 aptitude 选项来显示这一点(或 apt/dpkg);我能得到的最好的信息是内容(文件)。我是否错过了一些可以显示这一点的模拟/详细/内容开关组合?

此外,如果某个软件包导致某些事情发生(比如服务重启),而我现在不想发生,有没有办法在不运行部分或全部脚本的情况下安装该软件包?

答案1

您可以使用 打印控制文件和一些其它信息dpkg -I package.deb,或者使用dpkg -e package.deb仅提取控制信息文件。

另外,您可以进行一次试运行,看看 dpkg 会做什么--dry-run

dpkg --dry-run -i package.deb

答案2

不,我不知道有什么方法可以使用 aptitude 来做到这一点。

您可以直接查看脚本;升级期间运行的脚本包含在包中。使用 ar 解压 deb:

ar -x package.deb

然后查看control.tar.gz,它包含脚本。

答案3

还有--debug选项dpkg,例如sudo dpkg --debug=72200 -i package.deb

有几种可用的详细输出选项,并且可以将它们组合起来。

您可以通过运行查看所有可用选项:dpkg --debug=help

pi@kaldi:~ $ dpkg --debug=help
dpkg debugging option, --debug=<octal> or -D<octal>:

 Number  Ref. in source   Description
      1  general          Generally helpful progress information
      2  scripts          Invocation and status of maintainer scripts
     10  eachfile         Output for each file processed
    100  eachfiledetail   Lots of output for each file processed
     20  conff            Output for each configuration file
    200  conffdetail      Lots of output for each configuration file
     40  depcon           Dependencies and conflicts
    400  depcondetail     Lots of dependencies/conflicts output
  10000  triggers         Trigger activation and processing
  20000  triggersdetail   Lots of output regarding triggers
  40000  triggersstupid   Silly amounts of output regarding triggers
   1000  veryverbose      Lots of drivel about eg the dpkg/info directory
   2000  stupidlyverbose  Insane amounts of drivel

Debugging options can be mixed using bitwise-or.
Note that the meanings and values are subject to change.

答案4

不,您不能运行维护者脚本的一部分,因为没有钩子可以实现这一点。

您只能通过手动检查来查看脚本将执行的操作 - 再次强调,没有“试运行”可以准确地告诉您它将执行和不会执行的操作,只有“我将使用这些参数运行 postinst”。

这就是我们拥有暂存和测试环境的原因。

相关内容