我无法解决我的 Ubuntu 12.04 '/var/lib/dpkg/status' 中第 1050 行附近的这个错误,软件包'swish++'

我无法解决我的 Ubuntu 12.04 '/var/lib/dpkg/status' 中第 1050 行附近的这个错误,软件包'swish++'

当我尝试更新系统并安装新程序时,由于以下错误而失败。我尝试删除 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)

点应该是大于号 ( >)。各种软件包命令(dpkgapt-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 或其他。假设你正在使用吉尼

  1. gksu geany +1050 /var/lib/dpkg/status
    此命令将首先询问您的用户密码,然后在第 1050 行打开文件。该行应以 开头Depends,您会在打开的括号后看到一个点。
  2. 将光标移到点上,并将其更改为>。这样它就变成了libc6 (>= 2.7)
  3. 保存并Ctrl关闭S文件。
  4. 使用 synaptic 或软件中心更新软件包。现在一切都应该按预期运行。

相关内容