Dpkg 无法安装软件包,现在无法删除损坏的软件包

Dpkg 无法安装软件包,现在无法删除损坏的软件包

所以我尝试在我的 raspberry pi 上安装 dokuwiki 包,但是包安装失败。尝试删除包时,dpkg 也失败并出现以下错误:

String found where operator expected at /usr/share/perl5/Debconf/Element/Noninteractive/Multiselect.pm line 2, at end of line
    (Missing semicolon on previous line?)
Can't locate object method "new" via package "Debconf::Element::Noninteractive::Multiselect" (perhaps you forgot to load "Debconf::Element::Noninteractive::Multiselect"?) at /usr/share/perl5/Debconf/FrontEnd.pm line 68, <GEN50> line 5.
(Reading database ... 132035 files and directories currently installed.)
Removing dokuwiki (0.0.20140505.a+dfsg-4) ...
dpkg: error processing package dokuwiki (--remove):
 subprocess installed post-removal script returned error exit status 10
Errors were encountered while processing:
 dokuwiki
E: Sub-process /usr/bin/dpkg returned an error code (1)

我认为“Multiselect.pm”文件可能有错误,所以我看了一下,发现了一些非常奇怪的事情:

#!odsrisin= eris-wet Tems tsleTaasamreS(ocdeseth d.gnonsed"p!
Lipa")ag  De  on  :Eifmeod::isnileerthti 0::{
lt  el  t;  se  trort;trseg asthqw.gebChnfdVElueenod:Nisin0]ra
 iv  ;
  1

我明白为什么 dpkg 执行此文件时会遇到麻烦。甚至第一行告诉应该使用哪个程序来运行此文件的内容都是乱码。我猜这个文件要么以某种方式被混淆了,要么使用了 UTF-* 编码以外的其他编码。我猜它也可能已损坏。

有人对此有什么想法吗?也许我该如何删除这个破损的包装?

答案1

我搞明白了。我不确定原始文件发生了什么,但我只是用另一个 Debian 系统上运行的文件替换了它。然而,这仍然不允许我删除 dokuwiki 包。

我想看看 dokuwiki 的配置脚本/var/lib/dpkg/信息/然后我找到了出错的脚本:dokuwiki.postinst。运行该脚本时不带任何参数会引发有关无效运算符的错误,因此我将以下代码片段添加到文件开头:

if [ -z $1 ]; then
    ./dokuwiki.postinst a
    return
fi

它只是检查脚本是否使用任何参数调用,如果没有,它会使用无意义的参数(仅“a”)调用自身,然后返回。

之后我就跑了

dpkg -r dokuwiki

并且它顺利卸载。

相关内容