我正在某些 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