当我尝试更新系统并安装新程序时,由于以下错误而失败。我尝试删除 Swish++,但也失败了。因此,目前我无法从系统中更新/升级/安装/卸载/删除任何软件包。我尝试过 F- Install,但同样不起作用。
请指导如何解决这个问题。
`Depends' field, reference to `libc6':
implicit exact match on version number, suggest using `=' instead
dpkg: warning: parsing file '/var/lib/dpkg/status' near line 1050 package 'swish++':
`Depends' field, reference to `libc6':
version value starts with non-alphanumeric, suggest adding a space
dpkg: error: parsing file '/var/lib/dpkg/status' near line 1050 package 'swish++':
`Depends' field, reference to `libc6': version contains ` '
E: Sub-process /usr/bin/dpkg returned an error code (2)
A package failed to install. Trying to recover:
dpkg: warning: parsing file '/var/lib/dpkg/status' near line 1050 package 'swish++':
`Depends' field, reference to `libc6':
implicit exact match on version number, suggest using `=' instead
dpkg: warning: parsing file '/var/lib/dpkg/status' near line 1050 package 'swish++':
`Depends' field, reference to `libc6':
version value starts with non-alphanumeric, suggest adding a space
dpkg: error: parsing file '/var/lib/dpkg/status' near line 1050 package 'swish++':
`Depends' field, reference to `libc6': version contains ` '
请求评论的输出:
arif@arif-desktop:~$ head -n 1050 /var/lib/dpkg/status | tail -n 1
Depends: libc6 (.= 2.7), libstdc++6 (>= 4.6), zlib1g (>= 1:1.1.4), perl5
答案1
正如输出所示,你的/var/lib/dpkg/status
文件中有一个错误。第 1050 行打印
Depends: libc6 (.= 2.7)
点应该是大于号 ( >
)。各种软件包命令(dpkg
等apt-get
)不理解点的用途。它们的语法相当严格。您应该将其更改为正确的值。
因此,以 root 用户身份打开文件并更改值。您可以使用编辑器vim
:
sudo vim /var/lib/dpkg/status
并输入序列1050Gf.r>:wq
。此序列转到第 1050 行 ( 1050G
),搜索 dit ( f.
),将其替换为>
( r>
) 并保存/关闭文件 ( :wq
)。
另一种方法是sed
:
sudo sed -i.bak 's,^\(Depends: *libc6 *(\.\),\1,' /var/lib/dpkg/status
但是你也可以使用任何图形编辑器,如 Geany、Gedit 或其他。假设你正在使用吉尼:
gksu geany +1050 /var/lib/dpkg/status
此命令将首先询问您的用户密码,然后在第 1050 行打开文件。该行应以 开头Depends
,您会在打开的括号后看到一个点。- 将光标移到点上,并将其更改为
>
。这样它就变成了libc6 (>= 2.7)
- 保存并Ctrl关闭S文件。
- 使用 synaptic 或软件中心更新软件包。现在一切都应该按预期运行。