如何在ARM64架构的Amazon Linux 2(Graviton2 c6g.xlarge实例)上安装Chrome/Chromium并以无头模式运行?
当然有可行方案!我在Graviton2实例上折腾过类似的无头Chromium需求,给你两个靠谱的解决路径:
方案一:使用Docker容器(最省心,优先推荐)
容器能完美隔离系统依赖问题,不用折腾主机的glibc和zlib版本,非常适合无头运行场景:
- 先在实例上安装Docker:
sudo amazon-linux-extras install docker sudo systemctl start docker sudo usermod -aG docker $USER # 退出当前会话重新登录,让权限生效 - 拉取支持ARM64架构的Chromium无头镜像,比如轻量的Alpine基础镜像:
docker pull alpine/chrome - 直接运行无头模式的Chromium,比如测试网页截图功能:
如果需要把生成的文件(比如截图)保存到本地,加上目录挂载参数:docker run --rm alpine/chrome --headless --disable-gpu --screenshot https://example.comdocker run --rm -v $(pwd):/output alpine/chrome --headless --disable-gpu --screenshot=/output/example.png https://example.com
方案二:源码编译适配Amazon Linux 2的Chromium
这个方法相对繁琐,但适合不想用容器的场景,核心是选择兼容glibc 2.26的Chromium版本:
- 安装编译所需的基础依赖:
sudo yum groupinstall "Development Tools" sudo yum install git python3 bzip2-devel libX11-devel libXcomposite-devel libXcursor-devel libXdamage-devel libXext-devel libXfixes-devel libXi-devel libXrandr-devel libXrender-devel libXtst-devel cups-devel dbus-devel expat-devel fontconfig-devel freetype-devel glib2-devel glibc-devel gtk3-devel libatomic libdrm-devel libjpeg-turbo-devel libpng-devel libstdc++-devel libuuid-devel libxcb-devel libxkbcommon-devel mesa-libgbm-devel nss-devel pango-devel zlib-devel - 下载适配glibc 2.26的Chromium源码(比如80.x版本,87.x及以上依赖更高版本的glibc):
git clone --depth 1 --branch 80.0.3987.162 https://chromium.googlesource.com/chromium/src.git cd src ./build/install-build-deps.sh --arm64 - 配置编译参数,确保适配ARM64和当前系统:
gn gen out/Release --args='is_debug=false target_cpu="arm64" use_sysroot=false use_custom_libcxx=false' - 开始编译(c6g.xlarge实例大概需要1-2小时,耐心等待):
ninja -C out/Release chrome - 编译完成后,直接运行无头模式:
./out/Release/chrome --headless --disable-gpu --no-sandbox https://example.com
补充说明
你遇到的RPM安装报错,本质是Amazon Linux 2基于RHEL7,默认提供的glibc(2.26)和zlib(1.2.7)版本低于RHEL8打包的Chromium要求;而Amazon Linux 2的官方软件源里也没有适配ARM64的Chromium包,所以yum会提示找不到。
内容的提问来源于stack exchange,提问作者Bogdan Pisarenko
相关产品推荐
相关产品推荐

