node:18.15.0与ubuntu:22.10的Chromium包差异及安装问题咨询
在Ubuntu 22.10 Docker镜像中安装Chromium的问题解决
问题原因
- node:18.15.0基础镜像基于Debian 11(bullseye),Debian官方源里Chromium的包名就是
chromium,且有单独的chromium-sandbox包,因此能正常安装。 - Ubuntu 22.10(kinetic)官方源中,Chromium的包名是
chromium-browser,没有单独的chromium-sandbox包(sandbox功能已整合在chromium-browser内),直接安装chromium自然会报错找不到包。 - 另外,Debian Bookworm(testing)和Ubuntu 22.10属于不同发行版的分支,源不能直接混用,强行添加Debian源会引发依赖冲突,大概率导致系统崩溃,不建议这么做。
解决方案一:使用Ubuntu官方的Chromium包
直接修改Dockerfile,将chromium和chromium-sandbox替换为chromium-browser即可,示例Dockerfile如下:
FROM ubuntu:22.10 ENV DEBIAN_FRONTEND noninteractive RUN apt-get update \ && apt-get install -y --no-install-recommends \ build-essential \ chromium-browser \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*
如果需要用chromium命令调用,可添加软链接:
RUN ln -s /usr/bin/chromium-browser /usr/bin/chromium
解决方案二:(不推荐)添加Debian Bookworm源安装Chromium
如果一定要使用Debian testing的Chromium包,需要添加Debian Bookworm源并设置优先级,避免干扰系统原有包。修改后的Dockerfile如下:
FROM ubuntu:22.10 ENV DEBIAN_FRONTEND noninteractive # 添加Debian Bookworm源 RUN echo "deb http://deb.debian.org/debian bookworm main contrib non-free" >> /etc/apt/sources.list.d/debian-bookworm.list \ # 设置Debian源优先级低于Ubuntu,防止替换系统核心包 && echo "Package: *" >> /etc/apt/preferences.d/debian-bookworm-pin \ && echo "Pin: release n=bookworm" >> /etc/apt/preferences.d/debian-bookworm-pin \ && echo "Pin-Priority: 50" >> /etc/apt/preferences.d/debian-bookworm-pin \ # 指定从Debian源安装Chromium相关包 && apt-get update \ && apt-get install -y --no-install-recommends -t bookworm \ build-essential \ chromium \ chromium-sandbox \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*
注意:该方法存在依赖冲突风险,可能导致后续安装其他包失败,仅适用于特殊场景。
内容的提问来源于stack exchange,提问作者drmrbrewer
相关产品推荐
相关产品推荐

