GitLab CI流水线测试失效,求助安装旧版Chrome并解决Chrome安装依赖报错问题
问题描述
我在GitLab CI流水线里的测试现在失效了,这是我的.gitlab-ci.yml文件内容:
build: before_script: - sudo chmod +x ./gradlew - sudo apt-get update - wget https://download.java.net/java/GA/jdk14.0.2/205943a0976c4ed48cb16f1043c5c647/12/GPL/openjdk-14.0.2_linux-x64_bin.tar.gz - tar xvf openjdk-14.0.2_linux-x64_bin.tar.gz - sudo mv jdk-14.0.2 /usr/lib/jvm - sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk-14.0.2/bin/javac" 3 - sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk-14.0.2/bin/java" 3 - sudo update-alternatives --set "javac" "/usr/lib/jvm/jdk-14.0.2/bin/javac" - sudo update-alternatives --set "java" "/usr/lib/jvm/jdk-14.0.2/bin/java" - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - sudo dpkg -i ./google-chrome-stable_current_amd64.deb - apt --fix-broken install
安装Chrome时出现了如下错误:
Preparing to unpack .../google-chrome-stable_current_amd64.deb ...
Unpacking google-chrome-stable (111.0.5563.146-1) over (61.0.3163.91-1) ...
dpkg: dependency problems prevent configuration of google-chrome-stable:
google-chrome-stable depends on libgbm1 (>= 17.1.0~rc2); however:
Version of libgbm1:amd64 on system is 17.0.7-0ubuntu0.16.04.1.
google-chrome-stable depends on libu2f-udev; however:
Package libu2f-udev is not installed.
google-chrome-stable depends on libvulkan1; however:
Package libvulkan1 is not installed.
dpkg: error processing package google-chrome-stable (--install):
dependency problems - leaving unconfigured
Processing triggers for mime-support (3.59ubuntu1) ...
Processing triggers for menu (2.1.47ubuntu1) ...
Errors were encountered while processing:
google-chrome-stable
解决方案
嘿,我之前也碰到过一模一样的问题!你的核心问题是Ubuntu 16.04系统的库版本太老,已经不兼容最新版Google Chrome了——Chrome在114.x版本之后就停止对Ubuntu 16.04的支持了,所以才会爆出这些依赖错误。下面给你两个靠谱的解决思路:
方案一:安装适配Ubuntu 16.04的旧版Chrome(优先推荐)
直接安装最后支持Ubuntu 16.04的Chrome稳定版(114.0.5735.198),这个版本的依赖和你的系统库完全兼容。修改.gitlab-ci.yml里的Chrome安装步骤:
# 替换原来的Chrome下载安装代码 - wget https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_114.0.5735.198-1_amd64.deb - sudo dpkg -i ./google-chrome-stable_114.0.5735.198-1_amd64.deb - sudo apt-get install -f -y
替换后重新运行流水线,应该就能正常安装Chrome,测试也能恢复工作了。
方案二:尝试升级依赖库(不推荐,风险较高)
如果你一定要装新版Chrome,可以尝试手动升级依赖库,但Ubuntu 16.04官方源里没有更高版本的libgbm1,需要借助第三方源,可能会引发其他系统依赖冲突,谨慎操作:
# 先安装缺失的两个依赖包 - sudo apt-get install -y libu2f-udev libvulkan1 # 添加第三方源获取更高版本的libgbm1 - sudo add-apt-repository ppa:kisak/kisak-mesa - sudo apt-get update - sudo apt-get upgrade -y libgbm1 # 再安装Chrome并修复依赖 - sudo dpkg -i ./google-chrome-stable_current_amd64.deb - sudo apt-get install -f -y
另外,给你个小建议:你现在手动安装JDK的步骤其实可以简化,直接用GitLab CI官方提供的openjdk:14镜像作为job的基础镜像,就能省去手动安装JDK的麻烦,还能减少出错概率:
build: image: openjdk:14 before_script: - sudo chmod +x ./gradlew # 这里只保留Chrome的安装步骤即可 # ... 你的Chrome安装代码 ...
备注:内容来源于stack exchange,提问作者Serhii Nykonenko

