如何在 kali linux(基于 debian)上更新 libc(glibc)?

如何在 kali linux(基于 debian)上更新 libc(glibc)?

当我尝试运行armitage时,我收到以下错误,此外,当我尝试安装某些软件包或运行某些软件时,我收到错误。

root@Xeno:~# armitage
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/xawt/libmawt.so: /lib/i386-linux-gnu/i686/cmov/libc.so.6: version `GLIBC_2.16' not found (required by /usr/lib/i386-linux-gnu/libkrb5.so.3)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851)
    at java.lang.Runtime.load0(Runtime.java:795)
    at java.lang.System.load(System.java:1062)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1872)
    at java.lang.Runtime.loadLibrary0(Runtime.java:849)
    at java.lang.System.loadLibrary(System.java:1088)
    at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:67)
    at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:47)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Toolkit.loadLibraries(Toolkit.java:1657)
    at java.awt.Toolkit.<clinit>(Toolkit.java:1686)
    at java.awt.Component.<clinit>(Component.java:595)
    at armitage.ArmitageMain.main(ArmitageMain.java:199)

当我尝试添加 notepadqq 所需的存储库时出现错误日志:

root@Xeno:~# sudo add-apt-repository ppa:notepadqq-team/notepadqq
Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 8, in <module>
    from softwareproperties.SoftwareProperties import SoftwareProperties
  File "/usr/lib/python2.7/dist-packages/softwareproperties/SoftwareProperties.py", line 53, in <module>
    from ppa import AddPPASigningKeyThread, expand_ppa_line
  File "/usr/lib/python2.7/dist-packages/softwareproperties/ppa.py", line 27, in <module>
    import pycurl
ImportError: /lib/i386-linux-gnu/i686/cmov/libc.so.6: version `GLIBC_2.16' not found (required by /usr/lib/i386-linux-gnu/libkrb5.so.3)

这是尝试安装软件包的示例(libc,我在更新时遇到问题):

root@Xeno:~# sudo apt-get install libc6
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 libc-dev-bin : Depends: libc6 (< 2.14)
 libc6-dev : Depends: libc6 (= 2.13-38+deb7u8)
 libc6-i686 : PreDepends: libc6 (= 2.13-38+deb7u8)
 locales : Depends: libc-bin (> 2.19) but 2.13-38+deb7u8 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

这是我的 libc 版本: root@Xeno:~# dpkg-query -l libc6

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name              Version       Architecture  Description
+++-=================-=============-=============-=======================================
ii  libc6:i386        2.13-38+deb7u i386          Embedded GNU C Library: Shared librarie

现在,最重要的是我希望 armitage 再次运行,并且我希望能够再次安装软件包。我强烈认为更新 libc(glibc) 版本(到版本 2.16 '[...]version `GLIBC_2.16 not found[...]')就是答案,但我似乎找不到办法它。我怎样才能做到这一点?

PS我知道我在sources.list 文件中有重复的条目,但这不应该是一个问题。

我尝试按照 Gilles 的建议运行 apt-get dist-upgrate ,它返回以下日志:

root@Xeno:~# apt-get dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 libkrb5-3 : Depends: libc6 (>= 2.16)
 libtirpc1 : Depends: libc6 (>= 2.16)
 locales : Depends: libc-bin (> 2.19) but 2.13-38+deb7u8 is installed
E: Unmet dependencies. Try using -f.

Sources.list 文件内容:

 ## Regular repositories
    deb http://http.kali.org/kali kali main non-free contrib
    deb http://security.kali.org/kali-security kali/updates main contrib non-free
    deb http://http.kali.org/ /kali main contrib non-free
    deb http://http.kali.org/kali debian-wheezy main contrib non-free
    ##deb http://http.kali.org/kali kali-dev main contrib non-free
    ##deb http://http.kali.org/kali kali-dev main/debian-installer
    deb http://http.kali.org/kali kali main contrib non-free
    deb http://http.kali.org/kali kali main/debian-installer
    ## Source repositories
    deb-src http://http.kali.org/kali kali main non-free contrib
    deb-src http://security.kali.org/kali-security kali/updates main contrib non-free
    ##deb-src http://http.kali.org/kali kali-dev main contrib non-free
    deb-src http://http.kali.org/kali kali main contrib non-free

答案1

不建议升级 libc。您最终将升级许多其他软件包。这就是有关未满足依赖项的消息告诉您的信息:如果您升级 libc,则需要升级一堆其他软件包。

这些其他软件包未升级的原因要么是因为您忘记运行apt-get update,要么是因为您有首选项,/etc/apt/preferences或者/etc/apt/preferenced.d/*使得某些较新的软件包只能通过显式请求安装。

你应该做的就是升级整个发行版。 Kali Linux 目前有 Glibc 2.19。检查您的来源是否合理,在下载和解压软件包的同时运行apt-get update、运行apt-get dist-upgrade并散步。

相关内容