腾讯云 CentOS 7 playwright 安装浏览器(install)碰到的一系列问题 GLIBC not found、Missing libraries: libatk-bridge-2.0.so.0
在腾讯云的轻量云服务器 CentOS 7 安装playwright时遇到的各种报错,查了好多资料才解决,以下是解决步骤:
playwright install chromium 出现以下报错
playwright install chromium
# 报错
/root/.cache/ms-playwright-go/1.35.1/node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /root/.cache/ms-playwright-go/1.35.1/node)
/root/.cache/ms-playwright-go/1.35.1/node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /root/.cache/ms-playwright-go/1.35.1/node)
/root/.cache/ms-playwright-go/1.35.1/node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /root/.cache/ms-playwright-go/1.35.1/node)
/root/.cache/ms-playwright-go/1.35.1/node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /root/.cache/ms-playwright-go/1.35.1/node)
/root/.cache/ms-playwright-go/1.35.1/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/.cache/ms-playwright-go/1.35.1/node)
/root/.cache/ms-playwright-go/1.35.1/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /root/.cache/ms-playwright-go/1.35.1/node)
解决方法:
Step 1. 安装GLIBC_2.28
1.1 升级gcc与make
编译glibc-2.28需要新版本的make
1.1.1 安装GCC-8
yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils
# 设置环境变量
echo "source /opt/rh/devtoolset-8/enable" >> /etc/profile
source /etc/profile
1.1.2 升级make
# 创建临时安装文件目录
mkdir -p ~/work && cd ~/work
# 下载慢可以本机下载,再上传
wget https://ftp.gnu.org/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz && cd make-4.3/
# 安装到指定目录
./configure --prefix=/usr/local/make
make && make install
# 创建软链接
cd /usr/bin/ && mv make make.bak
ln -sv /usr/local/make/bin/make /usr/bin/make
1.2 下载编译glibc-2.28
# 创建临时安装文件目录
mkdir -p ~/work && cd ~/work
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar -xzvf glibc-2.28.tar.gz
cd glibc-2.28
mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && make install
# 日志最后会出现如下问题
# primary library!
# make[1]: *** [Makefile:111: install] Error 1
# make[1]: Leaving directory '/root/glibc-2.28'
# make: *** [Makefile:12: install] Error 2
# 再次查看系统内安装的glibc版本
strings /lib64/libc.so.6 |grep GLIBC_
Step 2. 安装CXXABI_1.3.9
目前仍会有报错:
/root/.cache/ms-playwright-go/1.35.1/node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /root/.cache/ms-playwright-go/1.35.1/node)
/root/.cache/ms-playwright-go/1.35.1/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/.cache/ms-playwright-go/1.35.1/node)
/root/.cache/ms-playwright-go/1.35.1/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /root/.cache/ms-playwright-go/1.35.1/node)
# 创建临时安装文件目录
mkdir -p ~/work && cd ~/work
yum install libstdc++.so.6 -y
# 查看动态链接库 -- 发现并没有需要的1.3.9
strings /usr/lib/libstdc++.so.6 | grep 'CXXABI'
# 下载需要的版本库,之后软连接到运行系统上
wget http://ftp.de.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.3.0-6_amd64.deb
ar -x libstdc++6_8.3.0-6_amd64.deb
tar -xvf data.tar.xz
cp usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 /usr/lib64/
find / -name "libstdc++*"
# 删除低版本库的软连接
rm -rf /usr/lib64/libstdc++.so.6
ll /usr/lib64/libstd*
ln -s /usr/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6
# 移除临时安装文件目录
cd ~ && rm -rf ~/work
# 或者删除文件与目录
rm -rf glibc-2.28 usr make-4.3 libstdc++6_8.3.0-6_amd64.deb make-4.3.tar.gz glibc-2.28.tar.gz data.tar.xz control.tar.xz
# 检验
playwright install chromium