Ich versuche, Code auszuführen, der XGBoost auf einem Ubuntu 18.04-Rechner aufruft. Dieser Code schlägt mit fehl AttributeError: 'XGBoostCostModel' object has no attribute 'pool'
, mit der Grundursache:
Error message(s): ["/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /root/anaconda/envs/spell/lib/libxgboost.so)"]
Ich weiß nichts über die C/C++-Paketierungs-Toolchain. Wenn ich das folgende Codefragment ausführe, das in einigen anderen Antworten auf ähnliche Fragen vorgeschlagen wurde, erhalte ich Folgendes:
$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.14
GLIBC_2.4
GLIBC_2.18
GLIBC_2.16
GLIBC_2.3.4
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
GLIBCXX_3.4.26
scheint in der Tat in dieser Liste zu fehlen. Ich kann jedoch nicht herausfinden, welchen apt
Befehl ich ausführen muss, um etwas Aktuelles zu erhalten. Wenn ich ausführe apt-get update && apt-get install libstdc++6
(nein sudo
, da dies in einem Docker-Container ist), wird mir Folgendes angezeigt:
libstdc++6 is already the newest version (8.4.0-1ubuntu1~18.04).
Was jetzt?
Antwort1
Ein Kollege schlug vor, auf eine ältere Version von herunterzustufen xgboost
. Dadurch wurde das Problem behoben (mithilfe von xgboost==1.1.0
).
Soweit ich weiß, bedeutet dies, dass die neuesten Versionen xgboost
nicht mit Ubuntu 18.04 kompatibel sind, da sie eine Version der Compiler-Toolchain verwenden, die zu neu für 18.04 ist und von 18.04 nicht unterstützt wird.