我是 Linux 新手,刚刚在 Windows 10 上安装了 Ubuntu 18.04。安装并非 100% 成功,因为每次我想要安装新程序(例如 adobe flash player)时,终端都会显示以下内容:
The following packages have unmet dependencies:
fwupdate : Depends: libfwup1 (= 10-3) but 12-3bionic2 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
当我尝试时sudo apt --fix-broken install
,终端返回:
Preparing to unpack .../fwupdate_12-7~ubuntu18.04.3_amd64.deb ...
rm: cannot remove '/boot/efi/EFI/ubuntu/fwupx64.efi': Input/output error
dpkg: error processing archive /var/cache/apt/archives/fwupdate_12-7~ubuntu18.04.3_amd64.deb (--unpack):
new fwupdate package pre-installation script subprocess returned error exit status 1
Errors were encountered while processing:
/var/cache/apt/archives/fwupdate_12-7~ubuntu18.04.3_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
这是索尼 Vaio 笔记本电脑。1TB HDD - CPU:i7 3537U - RAM:8GB
答案1
我认为这篇文章里有你的问题的答案:dpkg:新的预安装脚本返回错误退出状态 1
该包的 .preinst 脚本由于某种原因失败。
要找出原因,请检查脚本/var/lib/dpkg/info/PACKAGENAME.preinst
如果您想要确切地了解脚本在哪一行失败,请编辑 .preinst 脚本并set -x
在该行后立即添加#!
。这将在脚本中打开执行跟踪。
笔记:这假设 .preinst 脚本是一个 shell 脚本(posix sh 或 bash)。 几乎全部.preinst(以及 .postinst、.prerm 和 .postrm)脚本是 shell 脚本,但它们不一定是,它们可以是任何可执行文件。例如,在我的主台式机上安装了 9104 个软件包,其中 14 个是 perl 脚本,1 个是已编译的可执行文件(bash 的 preinst - 它不能假设已经安装了可运行的 shell),其余的都是 shell 脚本...9041 个是 POSIX shell 脚本,63 个是 bash 脚本。如果 .preinst 是 perl 或 python 或其他脚本,则必须弄清楚如何在该语言中启用调试或执行跟踪模式或类似模式。
然后运行dpkg --configure --pending
。
这将导致 dpkg 尝试配置半安装的软件包。不要用 重新安装它dpkg -i
,否则会用 .deb 软件包中的版本覆盖您编辑的 .preinst 脚本。
这可能为您提供足够的信息来解决问题。它可能很简单,例如程序中意外或未捕获的退出代码(大多数 .preinst 等脚本都有set -e
,以使它们在第一次出现错误时终止),或者假设目录已经存在(这可能是由于软件包的 debian/control 文件中未声明的依赖项 - 即它应该依赖于 foo 但实际上并非如此。无论如何都要安装 foo)
一旦修复,dpkg --configure --pending
再次运行,包就应该正确安装。
如果 .preinst 脚本有问题,则 .postinst(和/或 .prerm 和 .postrm)脚本也很有可能有问题。您可能也需要修复它们。
不要忘记向软件包的制作者提交错误报告,以便他们能够修复它。