在deb文件的postinst和preinst脚本中,如何获取软件包的当前运行版本?

我正在创建一个 Debian 包,如果已安装其先前版本,则在包的 postinst 脚本中丢弃某些数据库操作。我搜索过并找到 RPM 版本,但未能找到适用于 Debian 的版本。
我想知道是否有与 %pre[un]%post[un] 等变量等效的东西,适用于 Debian?
1个回答

根据Debian政策手册,postinst脚本将以旧版本号作为第二个参数调用:
postinst configure most-recently-configured-version

所以在你的postinst中,你只需要检查那个参数。
而对于preinst
运行新包的preinst脚本: 如果正在升级包,请调用: new-preinst upgrade old-version [...] 否则,如果该包安装了一些来自先前版本的配置文件(即处于“Config-Files”状态): new-preinst install old-version [...] 否则(即该包已完全清除): new-preinst install

考虑到评论“如果没有最近配置的版本,dpkg将传递一个空参数。”我不完全理解它的意思,但我确实有时在实际中看到postinst被调用时传递了一个空参数。 - norekhov