如何在 Ubuntu 20.04 上将 libc6(glibc)升级到 v 2.31 以上?

如何在 Ubuntu 20.04 上将 libc6(glibc)升级到 v 2.31 以上?

我正在某些 GUI 中使用 Stockfish 国际象棋引擎,但昨天它停止工作了。我没有更改引擎,也没有更改界面,但当我尝试运行引擎时,它“以代码终止...”,但没有输出任何代码。唯一可能改变的是,我定期升级我的软件包: sudo apt update && sudo apt dist-upgrade,我想这一定破坏了它。我安装了最新的 Stockfish 版本并在命令行中运行它,它给出的输出是:

./stockfish_21112912_x64_avx2: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./stockfish_21112912_x64_avx2)
./stockfish_21112912_x64_avx2: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./stockfish_21112912_x64_avx2)
./stockfish_21112912_x64_avx2: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./stockfish_21112912_x64_avx2)

所以我想升级 GLIBC,然后我偶然发现了这个帖子:[https://askubuntu.com/questions/736208/upgrading-glibc]:“Glibc(更广为人知的名字是 GNU C 库)有一个用于 Linux 的分支,称为 libc6。Libc6 可通过 apt 获得。”我运行: apt-cache policy libc6,得到了以下输出:

libc6:
  Installed: 2.31-0ubuntu9.2
  Candidate: 2.31-0ubuntu9.2
  Version table:
 *** 2.31-0ubuntu9.2 500
        500 http://de.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     2.31-0ubuntu9 500
        500 http://de.archive.ubuntu.com/ubuntu focal/main amd64 Packages

这告诉我“常规”软件包中的 2.31 是我的操作系统版本(Ubuntu 20.04)的官方版本。

所以我尝试手动完成:如何安装 libc6 版本 >= 2.29?

我从下载了 libc6_2.34-0ubuntu3_amd64.debhttp://archive.ubuntu.com/ubuntu/pool/main/g/glibc/,如上所述,但是当我运行:时sudo dpkg -i libc6_2.34-0ubuntu3_amd64.deb,它产生了以下错误:

dpkg: regarding libc6_2.34-0ubuntu3_amd64.deb containing libc6:amd64:
 libc6:amd64 breaks fakeroot (<< 1.25.3-1.1ubuntu2~)
  fakeroot (version 1.24-1) is present and installed.

dpkg: error processing archive libc6_2.34-0ubuntu3_amd64.deb (--install):
 installing libc6:amd64 would break fakeroot, and
 deconfiguration is not permitted (--auto-deconfigure might help)
Errors were encountered while processing:
 libc6_2.34-0ubuntu3_amd64.deb

我该如何解决这个问题?我是新手,所以最好不要破坏我的系统

答案1

应当指出的是https://abrok.eu/stockfish/不是官方的,作者明确表示这些软件包是在 Ubuntu 21.10 上使用 gcc 11.2/mingw 10 编译的。
而您运行的是较旧的 20.04 LTS,因此 libc 和其他核心系统组件也较旧。

我看到两种可能的解决方案:

  • 开发者提供的官方软件包

    适用于 Ubuntu 的 StockFish 软件包列表以下 URL 作为开发者的网站https://stockfishchess.org. 因此你应该访问https://stockfishchess.org/download/linux/然后下载相关的软件发行版。在撰写本文时,可以通过以下方式以编程方式完成:

    cd ~/Downloads
    wget -c https://stockfishchess.org/files/stockfish_14.1_linux_x64_avx2.zip
    unzip stockfish_14.1_linux_x64_avx2.zip
    cd stockfish_14.1_linux_x64_avx2
    chmod +x stockfish_14.1_linux_x64_avx2
    

    然后将其作为 运行./stockfish_14.1_linux_x64_avx2

    注意:它甚至可以在 18.04 LTS 上运行,不会抱怨 libc。

  • 一些第三方 PPA

    发现StockFish 的 PPA 是可行的. 例如它将以StockFish 12.2 deb 软件包适用于 20.04 LTS,可以使用以下命令进行安装:

    sudo add-apt-repository ppa:savoury1/games
    sudo apt-get update
    sudo apt-get install stockfish
    

    注意:我不确定这里的 AVX2 优化。

    恢复默认设置11.1 版本可以使用以下命令:

    sudo apt-get install ppa-purge
    sudo ppa-purge ppa:savoury1/games
    

答案2

我在 Ubuntu 20.04 上使用 Stockfish 15 时也遇到了同样的问题。不过,按照以下说明从源代码进行编译并不太难https://github.com/official-stockfish/Stockfish#compiling-stockfish-yourself-from-the-sources

cd src
make help

然后检查所支持的最新 arch,例如,grep bmi2 /proc/cpuinfo使用适当的 arch 进行制作:

make net 
make build ARCH=x86-64-bmi2

相关内容