如何访问控制文件信息?

如何访问控制文件信息?

安装时,postinst、pre 等脚本有没有办法访问 Debian 控制文件中的信息?

e.g. 
   Package: name
   Version: 0.1-1
   Depends: ...

答案1

显然,postinst、pre 等脚本是在 dpkg 创建的环境中运行的。控制信息是脚本可以访问的环境变量。

e.g.

DPKG_MAINTSCRIPT_ARCH=all
DPKG_RUNNING_VERSION=1.16.10
DPKG_MAINTSCRIPT_NAME=postinst
DPKG_MAINTSCRIPT_PACKAGE=zip
DPKG_NO_TSTP=yes
DPKG_ADMINDIR=/var/lib/dpkg

答案2

有几种方法可以做到这一点,但我喜欢的方法是使用dpkg

尝试这个:

  1. 创建一个临时目录例如:mkdir /tmp/pkg-tmp
  2. 使用 dpkg 提取控制信息:dpkg -e ./path/to/file.deb /tmp/pkg-tmp
  3. 检查控制文件,它应该位于顶层目录中:cat /tmp/pkg-tmp/control
  4. 检查完毕后,您可能想要清理临时目录:rm -rf /tmp/pkg-tmp

postinst、preinst 和 prerm 脚本也将包含在内。如果没有名为、、或的文件,preinst则意味着这些脚本都不属于 Debian 打包的一部分。postinstpostrmprerm

有些包可能有所有这些,或者只有 1 个或 2 个,或者没有——这取决于包本身。

如果该软件包位于 APT 存储库中,您可以apt-get download package-name先运行下载当前目录中的 Debian 软件包,然后运行上面列出的命令。

我写了一篇博客文章提取 Debian 软件包并检查控制文件、preinstall、postinstall、prerm 文件有更多信息。

相关内容