在Ubuntu16.04 Vagrant Box中安装.deb文件时preinst脚本执行失败求助
解决Ubuntu 16.04 Vagrant Box中安装wtbuild.deb时预安装脚本错误的问题
嘿,我之前也碰到过类似的deb包安装报错,给你几个可行的解决思路:
首先先明确你遇到的核心错误:dpkg (子进程): 无法执行新的预安装脚本(/var/lib/dpkg/tmp.ci/preinst): 没有那个文件或目录,这说明要么是deb包本身的预安装脚本缺失/损坏,要么是解压过程中出了问题。
方案1:检查deb包的完整性
先确认这个wtbuild.deb包本身有没有问题:
查看包的结构信息,确认是否包含预安装脚本:
dpkg-deb -I wtbuild.deb你可以在输出里找
preinst相关的条目,如果完全找不到,说明包本身就没带这个脚本,大概率是包损坏了。手动解压包检查:
# 创建临时目录 mkdir temp-wtbuild # 解压包内容 dpkg-deb -x wtbuild.deb temp-wtbuild/ # 解压包的控制文件(包括预安装脚本) dpkg-deb -e wtbuild.deb temp-wtbuild/DEBIAN/然后进入
temp-wtbuild/DEBIAN/目录,看看有没有preinst文件,同时检查它的执行权限:ls -l temp-wtbuild/DEBIAN/preinst如果文件不存在,说明包损坏,建议重新获取;如果存在但没有执行权限,可以先给它加权限,再重新打包安装。
方案2:修复deb包(移除/修复预安装脚本)
如果确认预安装脚本是多余的,或者可以跳过,你可以手动修改deb包:
- 按照方案1的步骤解压包后,删除
temp-wtbuild/DEBIAN/preinst文件:rm temp-wtbuild/DEBIAN/preinst - 重新打包成新的deb文件:
dpkg-deb -b temp-wtbuild/ fixed-wtbuild.deb - 安装修复后的包:
注意:如果预安装脚本原本是做必要准备(比如创建用户、目录)的,跳过它可能导致软件运行异常,安装后最好检查软件依赖的资源是否存在。dpkg -i fixed-wtbuild.deb
方案3:检查Vagrant Box环境
有时候Vagrant Box的基础环境缺失工具也会导致这类错误:
- 先更新系统包列表并确保dpkg工具完整:
apt-get update && apt-get install -y dpkg-dev - 确认bash是否安装(preinst脚本通常是bash编写的):
如果输出为空,安装bash:which bashapt-get install -y bash
内容的提问来源于stack exchange,提问作者Javier Galarza




