playwright 在 Centos 的安裝和問題處理
前言
近期在公司提供的 Centos7 伺服器上完成了 playwright 的安裝,安裝過程磕磕絆絆,回過頭去翻官方說明文件才發現 Centos 並不在支援的系統範圍裡,加上使用的是一個相對純淨的映象,使用預設的依賴安裝命令都會報錯,我這記錄下遇到的問題和安裝過程。主要是以下幾個問題:
- 執行 playwright 提示缺失 GLIBC 庫
- 安裝 GLIBC 提示需要升級 gcc 和 make 版本
- 安裝 CXXABI 庫
- 安裝 playwright 瀏覽器提示缺失依賴
- 升級和安裝完成後導致系統中文字元亂碼
下邊詳細說下我的安裝過程
playwright 安裝
playwright 安裝只涉及到以下兩個命令(我使用的是 python 版本)
pip3 install playwright
playwright install
執行 playwright 提示缺失 GLIBC 庫
完第一步安裝以後,執行 playwright 會提示
/root/ui_test/lib/python3.9/site-packages/playwright/driver/node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /root/ui_test/lib/python3.9/site-packages/playwright/driver/node)
/root/ui_test/lib/python3.9/site-packages/playwright/driver/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/ui_test/lib/python3.9/site-packages/playwright/driver/node)
/root/ui_test/lib/python3.9/site-packages/playwright/driver/node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /root/ui_test/lib/python3.9/site-packages/playwright/driver/node)
/root/ui_test/lib/python3.9/site-packages/playwright/driver/node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /root/ui_test/lib/python3.9/site-packages/playwright/driver/node)
/root/ui_test/lib/python3.9/site-packages/playwright/driver/node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /root/ui_test/lib/python3.9/site-packages/playwright/driver/node)
/root/ui_test/lib/python3.9/site-packages/playwright/driver/node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /root/ui_test/lib/python3.9/site-packages/playwright/driver/node)
主要提示的內容是 GLIBC 和 CXXABI 這兩個缺失動態連結庫的特定版本,既然缺失的話,我們補充安裝這兩個連結庫既可以。
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 --disable-werror
make
make install
直接安裝會提示編譯工具過舊
These critical programs are missing or too old: make compiler
需要先做如下處理
安裝 GLIBC 提示需要升級 gcc 和 make 版本
升級 gcc
# 安裝devtoolset-8-gcc
yum install centos-release-scl
yum install devtoolset-8
scl enable devtoolset-8 -- bash
# 啟用工具
source /opt/rh/devtoolset-8/enable
# 安裝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
# 下載並解壓安裝包
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 # backup
ln -sv /usr/local/make/bin/make /usr/bin/make
完成後再重新執行第一步的編譯即可
安裝 CXXABI 庫
接下來繼續完成 CXXABI 庫安裝
# 建立臨時安裝檔案目錄
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
安裝 playwright 瀏覽器提示缺失依賴
接著上邊命令執行 playwright install 就不會報錯了,但是再執行 playwright 會提示缺失依賴
BrowserType.launch:
╔══════════════════════════════════════════════════════╗
║ Host system is missing dependencies to run browsers. ║
║ Please install them with the following command: ║
║ ║
║ playwright install-deps ║
║ ║
║ Alternatively, use apt: ║
║ apt-get install libatk1.0-0\ ║
║ libatk-bridge2.0-0\ ║
║ libatspi2.0-0\ ║
║ libxcomposite1\ ║
║ libxdamage1\ ║
║ libxfixes3\ ║
║ libxrandr2\ ║
║ libgbm1\ ║
║ libxkbcommon0\ ║
║ libpango-1.0-0\ ║
║ libcairo2 ║
║ ║
║ <3 Playwright Team ║
╚══════════════════════════════════════════════════════╝
上邊提示的缺失依賴包都是 Ubuntu 的,我使用 Centos 的話需要按照對應的依賴
yum -y install libXcomposite libXtst gtk3 atk at-spi2-atk cups-libs libxkbcommon libXdamage libXrandr mesa-libgbm alsa-lib-devel
yum -y install fontconfig
yum -y install cjkuni-ukai-fonts cjkuni-uming-fonts
fc-cache -fv
升級和安裝完成後導致系統中文字元亂碼
一般完成如上安裝升級再執行 playwright 就不會報錯了,但是我的測試整合在 Jenkins 上,放的是一箇中文資料夾,實際構建的時候又出現了下邊的報錯
Caused by: java.nio.file.InvalidPathException: Malformed input or input contains unmappable characters: /var/lib/jenkins/workspace/????????????-???????????????
at java.base/sun.nio.fs.UnixPath.encode(UnixPath.java:145)
at java.base/sun.nio.fs.UnixPath.<init>(UnixPath.java:69)
at java.base/sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:279)
at java.base/java.io.FilePermission.<clinit>(FilePermission.java:207)
中文部分都是問號,看起來是系統中文字元編碼出了問題,也不知道是哪個升級環節影響了,一番查詢後,使用下邊這個命令解決了。
localedef -v -c -i en_US -f UTF-8 en_US.UTF-8
如上就是這一次的安裝記錄,希望能幫助遇到同樣問題的夥伴。
相關文章
- 在Centos和Docker上安裝STF 遇到的若干問題總結CentOSDocker
- lama-cleaner 安裝時tokenizers問題的處理
- Mac遊戲安裝常見問題處理Mac遊戲
- RHEL/CentOS/Oracle Linux7/8版本安裝Openonload驅動問題處理CentOSOracleLinux
- Centos7安裝greenplum遇到的問題CentOS
- Elasticsearch 在 docker 和 CentOS 下的安裝教程ElasticsearchDockerCentOS
- centos6.x 安裝tensorflow異常處理CentOS
- 在CentOS 7.5上安裝和配置ProFTPDCentOSFTP
- 在Red Hat和Centos上安裝MongoDBCentOSMongoDB
- 在rhel和CentOS上安裝SQL Server的方法CentOSSQLServer
- 2.0 Elasticsearch7.1 ES在Linux下安裝問題處理(外網訪問良心優化版)ElasticsearchLinux優化
- OneThink在Sae安裝問題
- CentOS7安裝Docker遇到的問題筆記CentOSDocker筆記
- Centos7 配置靜態ip及問題處理CentOS
- 阿里雲 CentOS 7 處理80埠開放問題阿里CentOS
- Aix 7一次補丁安裝失敗問題處理AI
- 銀河麒麟系統安裝ORACLE資料庫問題處理Oracle資料庫
- 在Centos8上安裝和使用curlCentOS
- azkaban在centos下的部署安裝CentOS
- 在CentOS上安裝dockerCentOSDocker
- 在 CentOS 中安裝 nodejsCentOSNodeJS
- 在centos上安裝molochCentOS
- 在CentOS上安裝GitCentOSGit
- Centos 7 上安裝 jdk 及問題小記CentOSJDK
- Python表格處理模組xlrd在Anaconda中的安裝Python
- 極域電子教室安裝後藍色畫面問題處理
- go安裝playwright-goGo
- CentOS6.5安裝mysql以及常見問題的解決CentOSMySql
- 解除安裝時報錯:“系統找不到指定的驅動器”問題處理
- 在CentOS 8.1上安裝 DockerCentOSDocker
- docker安裝和常見問題Docker
- 安卓微信視訊播放全屏問題處理安卓
- 在騰訊雲上安裝mysql遇到的問題MySql
- RHEL 7.X 或CentOS 7 安裝 11.2.0.4 RAC碰到的問題CentOS
- Centos7環境下安裝redis及常見的問題CentOSRedis
- 2020JavaWeb之寶塔安裝tomcat+nginx關於jsp處理問題JavaWebTomcatNginxJS
- 關於centos 7安裝binwalk的過程中產生的問題CentOS
- Linux mint系統安裝出現grub2安裝失敗,開機進入grub問題處理Linux