$ sudo dpkg -i --instdir=$HOME hellodeb_1.0-1_amd64.deb
选中了曾被取消选择的软件包 hellodeb。
(正在读取数据库 ... 系统当前总共安装有 151599 个文件和目录。)
正在解压缩 hellodeb (从 hellodeb_1.0-1_amd64.deb) ...
dpkg (子进程):无法执行新的 pre-installation script: No such file or directory
dpkg:处理 hellodeb_1.0-1_amd64.deb (--install)时出错:
子进程 pre-installation script 返回了错误号 2
dpkg (子进程):无法执行新的 post-removal script: No such file or directory
dpkg: 作下列清理工作时发生错误:
子进程 post-removal script 返回了错误号 2
在处理时有错误发生:
hellodeb_1.0-1_amd64.deb
----
看其出错的信息,应该是preinst、postrm等脚本有误,其实这些脚本里只有一行:#!/bin/sh;
但是如果去掉--instdir=$HOME选项就可以安装;
google了一下,有人说是/bin/sh的链接到dash的问题,不过我按照其的做法,把/bin/sh链接到bash,也不行。
大家有没有遇到过这种情况,可不可以给个思路?麻烦,谢谢!
自定制deb包,重定位安装路径时dpkg -i --instdir=$HOME *.deb出错……
-
- 帖子: 9
- 注册时间: 2008-11-20 16:22
- tyllrxs
- 帖子: 115
- 注册时间: 2006-09-10 14:48
Re: 自定制deb包,重定位安装路径时dpkg -i --instdir=$HOME *.deb出错……
给个标准的postinst脚本你参考:
代码: 全选
#!/bin/sh
set -e
# summary of how this script can be called:
# * <new-preinst> `install'
# * <new-preinst> `install' <old-version>
# * <new-preinst> `upgrade' <old-version>
# * <old-preinst> `abort-upgrade' <new-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
install|upgrade|configure)
;;
abort-upgrade)
;;
*)
echo "preinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
exit 0
-
- 帖子: 9
- 注册时间: 2008-11-20 16:22
Re: 自定制deb包,重定位安装路径时dpkg -i --instdir=$HOME *.deb出错……
tyllrxs, 你发的postinst脚本是用dh_make生成的吧?
我用了默认的那些脚本(即直接把postinst.ex重命名为postinst),
还是出现上面的那些问题。很郁闷……
我用了默认的那些脚本(即直接把postinst.ex重命名为postinst),
还是出现上面的那些问题。很郁闷……
-
- 帖子: 9
- 注册时间: 2008-11-20 16:22
Re: 自定制deb包,重定位安装路径时dpkg -i --instdir=$HOME *.deb出错……
我打包的步骤是这样的:
1)$gpg --gen-key
2)$gpg --armor --output public.key --export <email>
3)$export DEBEMAIL="email"
4)$export DEBFULLNAME="username"
5)#####把要安装的文件打包
$tar cvf hellodeb hellodeb_1.0-1.tar.gz
6)$dh_make -f hello-1.0-1.tar.gz
7)#####把debian目录下的postinst.ex、postrm.ex、preinst.ex、prerm.ex脚本去掉后缀名
8)$dpkg-buildpackage -rfakeroot -sa
9)#####然后用下面的命令安装
$sudo dpkg -i --instdir=$HOME hellodeb_1.0-1_amd64.deb
在第9步,如果用:
$sudo dpkg -i hellodeb_1.0-1_amd64.deb
就可以安装。
1)$gpg --gen-key
2)$gpg --armor --output public.key --export <email>
3)$export DEBEMAIL="email"
4)$export DEBFULLNAME="username"
5)#####把要安装的文件打包
$tar cvf hellodeb hellodeb_1.0-1.tar.gz
6)$dh_make -f hello-1.0-1.tar.gz
7)#####把debian目录下的postinst.ex、postrm.ex、preinst.ex、prerm.ex脚本去掉后缀名
8)$dpkg-buildpackage -rfakeroot -sa
9)#####然后用下面的命令安装
$sudo dpkg -i --instdir=$HOME hellodeb_1.0-1_amd64.deb
在第9步,如果用:
$sudo dpkg -i hellodeb_1.0-1_amd64.deb
就可以安装。