目录
问题1:安装时报错解决:升级gcc与make、下载编译glibc-2.28
GLIBC_2.27 GLIBC_2.25 GLIBC_2.28 CXXABI_1.3.9 GLIBCXX_3.4.20 GLIBCXX_3.4.21 not found
# 安装浏览器
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
-
安装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
-
升级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
升级引发的问题1:系统中文字符乱码
解决方法:
localedef -v -c -i en_US -f UTF-8 en_US.UTF-8
升级引发的问题2:宝塔面板计划任务(crond)不按时执行
原因:
# 查看状态
systemctl status crond
# 出现以下错误
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2024-02-06 17:13:32 CST; 1 day 21h ago
Process: 32759 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Main PID: 8180 (crond)
CGroup: /system.slice/crond.service
└─8180 /usr/sbin/crond -n
Feb 08 15:08:24 VM-16-4-centos systemd[1]: Reloaded Command Scheduler.
Feb 08 15:09:01 VM-16-4-centos crond[8180]: (root) RELOAD (/var/spool/cron/root)
Feb 08 15:09:01 VM-16-4-centos crond[8180]: (CRON) INFO (running with inotify support)
Feb 08 15:09:01 VM-16-4-centos crond[540]: PAM unable to dlopen(/usr/lib64/security/pam_access.so): /lib64/libnsl.so.1: symbol __nss_hash, versi...reference
Feb 08 15:09:01 VM-16-4-centos crond[540]: PAM adding faulty module: /usr/lib64/security/pam_access.so
Feb 08 15:09:01 VM-16-4-centos crond[541]: PAM unable to dlopen(/usr/lib64/security/pam_access.so): /lib64/libnsl.so.1: symbol __nss_hash, versi...reference
Feb 08 15:09:01 VM-16-4-centos crond[541]: PAM adding faulty module: /usr/lib64/security/pam_access.so
Feb 08 15:09:01 VM-16-4-centos crond[541]: PAM unable to dlopen(/usr/lib64/security/pam_unix.so): /lib64/libc.so.6: version `GLIBC_2.25' not fou...ypt.so.1)
Feb 08 15:09:01 VM-16-4-centos crond[541]: PAM adding faulty module: /usr/lib64/security/pam_unix.so
Feb 08 15:09:01 VM-16-4-centos crond[541]: (root) PAM ERROR (Module is unknown)
Hint: Some lines were ellipsized, use -l to show in full.
解决方法:重启服务即可
systemctl restart crond
问题2:执行playwright程序时出现Missing libraries错误
错误:
Host system is missing dependencies to run browsers.
Missing libraries:
libatk-bridge-2.0.so.0
libxkbcommon.so.0
libatspi.so.0
解决方法:
yum install -y at-spi2-atk # 对应libatk-bridge-2.0.so.0
yum install -y libxkbcommon # 对应libxkbcommon.so.0
yum install -y libatspi.so.0 #对应libatspi.so.0