【问题标题】:How does debian/postinst know which package is being installed?debian/postinst 如何知道正在安装哪个软件包?
【发布时间】:2012-09-04 03:40:54
【问题描述】:

我使用“dh_make --native”对一些源代码进行了去边化处理。控制文件指定三个包:

blahd
libblahd1
libblahd1-dev

现在blahd 有一个init.d 脚本,虽然一旦构建并安装了包,它就会被放入/etc/init.d,但它并没有被启用。所以我认为我需要这样写:

insserv blahd 

在 debian/postinst.但是如何在 debian/postinst 中判断正在安装​​的是 blahdlibblahd1 还是 libblahd1-dev

【问题讨论】:

  • 它不会为每个二进制包创建一个 postinst 吗?因此,请使用debian/libblahd1.postinstdebian/libblahd1-dev.postinst 创建两个不同的脚本,或者从模板生成它们。
  • 并且不要在你的包中直接调用insserv,而是使用invoke-rc.d;见debian.org/doc/debian-policy/ch-opersys.html#s-sysvinitdebian.org/doc/manuals/maint-guide/dother.en.html#initd
  • 感谢 Tripleee 您回答了我提出的问题。但是,在阅读了 barti_ddu 提供的第二个链接后,我意识到我问错了问题。我应该说:你如何添加一个初始化脚本并指定它应该添加到哪个包中。我现在知道答案是将文件命名为 debian/.init。如果你这样做,dpkg-buildpackage 会自动为你创建一个 postinst。干杯。
  • 您可能想为自己写一个答案并“接受”它,所以这个问题不会显示为未回答。
  • 谢谢保罗。我是新手......不幸的是我现在不能,因为它已被关闭为题外话。我不知道为什么它被认为是题外话。很高兴有人告诉我,这样我就可以避免再次这样做了。

标签: linux package debian deb


【解决方案1】:

barti_ddu 在评论中给出了答案:

如果您的 debian/control 文件指定了多个包,您可以提供多个 init.d 文件并通过命名它们来指定每个包的名称 debian/<package1>.init、debian/<package2>.init 等等。

谢谢。

【讨论】:

    猜你喜欢
    • 2010-11-14
    • 2017-07-18
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多