我可以在preinst脚本中调用其他dpkg或apt- *命令吗?


9

作为要部署到Ubuntu 12.04设备的自定义(内部).deb文件的一部分,我需要添加几个PPA存储库,运行apt-get update,然后从这些PPA安装软件包。

可以在.deb文件中的.preinst或.postinst脚本中完成此操作吗?

我认为当安装我的.deb文件(sudo dpkg -i testing.deb),一些锁或机制可能存在这会阻止我调用某些命令,如add-apt-repositoryapt-get updateapt-get install

这是正确的假设吗?


Answers:


7

你是对的。维护脚本不应对apt或dpkg状态进行任何更改,除非仍然要在安装软件包时进行这些更改。

/etc/apt/sources.list.d不过,将文件安装到可以。大多数充当“安装此软件包以将APT存储库X添加到您的系统”之类的软件包都只是这样做(而不是调用add-apt-repository)。将用于签名存储库的GPG公钥删除也很常见/etc/apt/trusted.gpg.d

如果要简化用户执行软件的附加安装步骤的过程,则可能只希望提供执行此任务的脚本,并告诉用户手动运行该脚本。

但是,如果您真的非常想自动调用apt-get updateapt-get install等,并且您不介意您的软件包在Debian或Ubuntu上完全不可接受,并且您的用户可以以这种方式行事,那么您也许可以在/etc/cron.d其中检查所有现有的apt或dpkg锁,如果没有,则执行其他安装步骤并安排不再执行这些步骤。我不推荐这种方法。

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.