【发布时间】:2014-11-10 20:29:12
【问题描述】:
下午好,
我能够使用以下方法将我的项目构建到一个 deb 包中:
fakeroot dpkg-deb --build mypackage
接下来,我可以使用安装包
dpkg -i mypackage.deb
当我这样做时,一切都已正确安装和复制,但是我想在安装包后运行一些 bash 命令。
我知道这需要使用 mypackage/DEBIAN 目录中的 postinst 文件来完成
我在网上看到过这个脚本的一些示例,但没有明确说明如何编写以及如何将其包含在构建中。
如何确保 fakeroot dpkg-deb 包含此脚本,将其放入 DEBIAN 目录是否足够?
postinst 脚本中有一个 case 结构,这是做什么用的,我应该在哪里放置要在该脚本中执行的 bash 命令
如果我使用 dpkg - i mypackage.deb 安装软件包,这足以运行该脚本吗?
我想制作的示例脚本如下所示。
“configure、abort-upgrade、abort-remove 和 abort-deconfigure”代表什么。
“update-alternatives”行有什么作用。
感谢您的帮助,
postinst 文件如下。
#!/bin/sh
set -e
case "$1" in
configure)
# EXECUTE MY BASH COMMAND
echo /usr/local/lib > /etc/ld.so.conf && ldconfig
;;
abort-upgrade|abort-remove|abort-deconfigure)
exit 0
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
update-alternatives --install /usr/bin/fakeroot fakeroot /usr/bin/fakeroot-ng 5 \
--slave /usr/share/man/man1/fakeroot.1.gz \
fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz
exit 0
【问题讨论】:
-
你试过用 dpkg-buildpackage 代替 dpkg-deb 吗?
标签: linux package debian deb dpkg