对软件包 libc6-amd64 和 libc6:amd64 感到困惑

对软件包 libc6-amd64 和 libc6:amd64 感到困惑

在调试时(在 64 位系统上),gdb告诉我:

warning: the debug information found in "/lib64/ld-2.19.so" does not match "/lib64/ld-linux-x86-64.so.2" (CRC mismatch).  

尝试追踪(并解决)此消息让我:

$ ls -l /lib64/ld-2.19.so /lib64/ld-linux-x86-64.so.2
-rwxr-xr-x 1 root root 140928 Feb 25 12:00 /lib64/ld-2.19.so
lrwxrwxrwx 1 root root     32 Feb 25 11:56 /lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.19.so
$ ls -l -L /lib64/ld-2.19.so /lib64/ld-linux-x86-64.so.2
-rwxr-xr-x 1 root root 140928 Feb 25 12:00 /lib64/ld-2.19.so
-rwxr-xr-x 1 root root 149120 Feb 25 11:56 /lib64/ld-linux-x86-64.so.2
$ for i in /lib64/ld-2.19.so /lib64/ld-linux-x86-64.so.2  /lib/x86_64-linux-gnu/ld-2.19.so ; do dpkg -S $i; done
libc6-amd64: /lib64/ld-2.19.so
libc6:amd64: /lib64/ld-linux-x86-64.so.2
libc6:amd64: /lib/x86_64-linux-gnu/ld-2.19.so
$ for i in libc6-amd64 libc6:amd64 ; do
> apt-cache policy $i
> apt-cache search $i
> done
libc6-amd64:i386:
  Installed: 2.19-0ubuntu6.6
  Candidate: 2.19-0ubuntu6.6
  Version table:
 *** 2.19-0ubuntu6.6 0
    500 http://ca.archive.ubuntu.com/ubuntu/ trusty-updates/main i386 Packages
    500 http://security.ubuntu.com/ubuntu/ trusty-security/main i386 Packages
    100 /var/lib/dpkg/status
 2.19-0ubuntu6 0
    500 http://ca.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages
libc6-amd64 - Embedded GNU C Library: 64bit Shared libraries for AMD64
libc6:
  Installed: 2.19-0ubuntu6.6
  Candidate: 2.19-0ubuntu6.6
  Version table:
 *** 2.19-0ubuntu6.6 0
    500 http://ca.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
    500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
    100 /var/lib/dpkg/status
 2.19-0ubuntu6 0
    500 http://ca.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages  

因此libc6-amd64libc6-amd64:i386并将自己描述为“嵌入式 GNU C 库:用于 AMD64 的 64 位共享库”,而libc6:amd64libc6并将自己描述为“嵌入式 GNU C 库:共享库”(通过dpkg -L)。

有人能解释一下这两个包之间的区别吗?我犹豫着是否要删除名称以 开头的任何内容libc,因为我知道许多通往门挡模式的路径都是以类似的“简单”步骤开始的。

答案1

  • libc6:amd64您的本机包是否从未触及过它,要了解为什么尝试这个apt-cache rdepends libc6:amd64来查看所有需要它的包。

  • libc6-amd64:i386很奇怪!据我所知 32 位系统无法运行 64 位程序。看起来没问题libc6-i386:amd64,但是libc6-amd64:i386

    检查依赖它的软件包apt-cache rdepends libc6-amd64:i386。只有一些基本的软件包:编译器、调试器、c 库。然后它只是一个为 Ubuntu 32 位准备的 64 位交叉编译工具链。

    因此,对于您来说,它毫无用处,因为您已经拥有 64 位系统。您可以删除它,但在选择“是”之前,请仔细检查删除列表。(您应该看到几乎所有:i386软件包)

    sudo apt-get remove libc6-amd64:i386
    

相关内容