如何找出软件包运行了哪些命令来安装软件apt-get install <package>
?
例如,如果我安装一个创建用户的包,我如何才能知道它是如何创建该用户的?
答案1
你看一下安装后脚本,它实际上是由 dpkg 运行的。您可以在 中找到这些/var/lib/dpkg/info
。此类脚本包含相关二进制包的名称,并具有后缀.postinst
.
请注意,还有预安装脚本,其后缀为.preinst
,但我认为包更有可能在postinst
脚本中创建新用户。
您有一个特定的例子吗?
一个示例是 postgresql-common,它创建用户postgres
。以下是该文件的摘录/var/lib/dpkg/info/postgresql-common.postinst
。
# Make sure the administrative user exists
if ! getent passwd postgres > /dev/null; then
adduser --system --quiet --home /var/lib/postgresql --no-create-home \
--shell /bin/bash --group --gecos "PostgreSQL administrator" postgres
fi
答案2
所做的就是在包上apt-get install
执行。dpkg -i
要了解软件包在安装时的作用,您必须将其解压。看看/var/cache/apt/archives/
你的包裹是否还在。
包内有一个数据存档 ( data.tar.gz
) 和一个控制存档 ( control.tar.gz
)。控制存档内有一个在安装后执行的脚本 ( postint
) 和一个在删除包后执行的脚本 ( postrm
)。在编辑器中打开这些脚本并查看安装过程的作用。
打开包装:
ar x package.deb
解压控制存档(解压包后):
tar xfz control.tar.gz