CentOS 7 playwright 安装浏览器(install)碰到的一系列问题 GLIBC not found、Missing libraries: libatk-bridge-2.0.so.0

问题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

  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
    
  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

升级引发的问题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
  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值