在Ubuntu 16.04中,Dpkg警告:软件包'x'的文件列表文件丢失;假定该软件包当前未安装任何文件。

4
我正在使用带有Lubuntu桌面环境的Ubuntu 16.04。当我执行“apt-get upgrade”命令时,出现了以下问题,已经持续了三天以上。我不知道问题的原因以及如何解决。
注意:3天前,我尝试升级Linux-header-4.4.66,但是出现了错误。我已将其删除。现在,我回到了之前正常工作的Linux-header-4.4.64。
Error on sudo apt-get dist-upgrade (only last 15 line of 500+ line error):

dpkg: warning: files list file for package 'libxcb-xkb1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libvorbis-dev:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libavahi-core7:amd64' missing; assuming package has no files currently installed
(Reading database ... 37151 files and directories currently installed.)
Preparing to unpack .../libgtk-3-bin_3.18.9-1ubuntu3.2_amd64.deb ...
Adding 'diversion of /usr/sbin/update-icon-caches to /usr/sbin/update-icon-caches.gtk2 by libgtk-3-bin'
dpkg-divert: error: rename involves overwriting '/usr/sbin/update-icon-caches.gtk2' with
  different file '/usr/sbin/update-icon-caches', not allowed
dpkg: error processing archive /var/cache/apt/archives/libgtk-3-bin_3.18.9-1ubuntu3.2_amd64.deb (--unpack):
 subprocess new pre-installation script returned error exit status 2
Errors were encountered while processing:
 /var/cache/apt/archives/libgtk-3-bin_3.18.9-1ubuntu3.2_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
1个回答

4

我昨晚解决了这个问题。如果你懂中文,可以在我的博客上阅读这个解决方案。我将在这里用我的简陋英语详细说明。

  • Create three files in you desktop or anywhere you want.

    fix.sh
    txt
    fixit.py
    
  • Add contents in these files

    1. fix.sh: Just an Empty file.

    2. txt: Copy your log into this file with '\n' to separate each line. Just like this:

      dpkg: warning: files list file for package 'libxcb-xkb1:amd64' missing; assuming package has no files currently installed 
      dpkg: warning: files list file for package 'libvorbis-dev:amd64' missing; assuming package has no files currently installed
      
    3. fixit.py: fill the file with the following contents.

      #!/usr/bin/env python
          # -*- coding: utf-8 -*-
          __author__ = 'Fitzeng'
          import re
          def main():
              fix = open('fix.sh', 'w+')
              for line in open("txt"):
                  pkg = re.match(re.compile('''dpkg: warning: files list file for package '(.+)' '''), line)
                  if pkg:
                      cmd = "sudo apt-get install --reinstall " + pkg.group(1)
                      fix.write(cmd + '\n')
          if __name__ == "__main__":
              main()
      
  • Execute these file.

    chmod 777 *
    python fixit.py
    ./fix.sh
    

好的,问题解决了。实际上,你会发现你也可以选择重新安装这些软件包来解决问题。因此,有很多种方法可以修复它。


你在这里提供的答案类型是Stack Overflow所期望的。做得好。我编辑了你的帖子,改进了格式和语法。更重要的是,我明确指出了你提供的链接是你自己的博客。当你链接到自己的网站时,你需要明确说明它是你的网站。你只是暗示了这一点。有关更多信息,请参见:什么是"良好"的自我推广?如何避免成为垃圾邮件发送者。在这篇文章中,这只是一个小问题,但我想确保你将来知道这个问题。 - Makyen
感谢您的建议,这个回答并不是自我推销。您可以看到这是我在Stack Overflow上的第一个回答。我只是想与他人分享我的想法,所以我不知道这些操作在这个平台上是不允许的。我将在未来进行更正,再次感谢您。 - Fitzeng
1
我并没想到你会将这个帖子作为自我推销。不过,有一些准则,我认为你应该知道。你提供的答案类型绝对是我们在Stack Overflow上所期望看到的。这个答案是自包含的,并且回答了问题的全部内容。它比只是试图进行自我推销的回答要好得多。在自己的博客上放链接是可以的,只要你明确说明那是你自己的博客,并且回答无需点击链接就能完整呈现。你在这里所做的很好,请多做些类似的贡献。 - Makyen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接