Lösung: libhogweed.so.2: undefined symbol: __gmpn_cnd_add_n
Nach dem Upgrade meines Servers von Debian Wheezy auf Jessie trat bei apt-get update folgender Fehler auf:
/usr/lib/apt/methods/https: symbol lookup error: /usr/lib/x86_64-linux-gnu/libhogweed.so.2: undefined symbol: __gmpn_cnd_add_nDie Fehlersuche hierfür ist recht einfach. Wir wissen, dass die apt-Software die Funktion __gmpn_cnd_add_n in der Bibliothek libhogweed.so.2 nicht finden kann. Diese Art von Fehlern bedeutet fast immer, dass die Bibliothek, in der der Fehler auftritt (libhogweed.so.2), eine andere Version einer Bibliothek erwartet, von der sie abhängt (libgmp). Mit ldd können wir überprüfen, welche Version tatsächlich verwendet wird:
$ ldd /usr/lib/x86_64-linux-gnu/libhogweed.so.2
[...]
libgmp.so.10 => /usr/local/lib/libgmp.so.10 (0x00007f5ca1b59000)
[...]Wir können deutlich sehen, dass libgmp.so.10 aus /usr/local/lib verwendet wird. Dies deutet darauf hin, dass irgendwann jemand eine eigene Version von libgmp auf dem System installiert hat, die sich von der vom Paketmanager installierten Version unterscheidet.
Normalerweise können wir einfach /usr/local/lib/libgmp.so.10 entfernen, was das Problem meistens löst, da libhogweed dann die korrekte, vom Paketmanager installierte Version verwendet. Beachte jedoch, dass andere Software, die libgmp verwendet, möglicherweise nicht mehr funktioniert, da sich die Bibliotheksversion geändert hat. Wenn das Entfernen der lokalen Bibliothek nicht funktioniert hat, versuche, die oben beschriebene Methode erneut zu überprüfen.