如何修复 puppetteer error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory

问题:

你正在尝试在 Ubuntu 上运行 puppetteer,但当它开始运行 chrome 时,你面临以下问题:

error_message.txt
/home/user/erp/node_modules/puppeteer/.local-chromium/linux-555668/chrome-linux/chrome: error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory

解决方案

使用以下命令安装缺少的包

Ubuntu 24.04 上:

install_puppetteer_deps_24.04.sh
sudo apt install -y liboss4-salsa-asound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc-s1 libgdk-pixbuf-2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator3-1 libnss3 lsb-release xdg-utils wget

Ubuntu 22.04 上:

install_puppetteer_deps_22.04.sh
sudo apt install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget

OpenSUSE 15.5 上:

install_puppetteer_deps_opensuse_15.5.sh
sudo zypper install -y alsa-lib atk glibc cairo cups-libs dbus-1 expat fontconfig libgcc_s1 gdk-pixbuf glib2 gtk3 mozilla-nspr pango libstdc++6 libX11-6 libX11-xcb1 libxcb1 libXcomposite1 libXcursor1 libXdamage1 libXext6 libXfixes3 libXi6 libXrandr2 libXrender1 libXss1 libXtst6 ca-certificates liberation-fonts libappindicator3-1 mozilla-nss lsb-release xdg-utils wget

感谢 @coldnerpuppetteer 问题跟踪器上组装所需的包。

如果你遇到 E: Unable to locate package 错误,运行 sudo apt-get update

背景信息

如果你想了解更多关于此问题发生原因的信息,请继续阅读此处。

Puppetteer 本质上是一个最小的无头(请参见什么是无头程序或应用程序?)Chromium 实例,带有从 NodeJS 控制和监控它的附加 API。

即使 Puppetteer 实际上不显示 GUI,它使用的 Chromium 实例仍然需要一些库来绘制 GUI 并连接到 X11 服务器,即使 Puppetteer 中不使用它。其中一个库是 libxcb,它提供共享库 libX11-xcb.so.1。你可以通过在大多数基于 Debian 的系统上安装 libx11-xcb1 包来修复此问题。

然而,正如缺少共享库时经常发生的情况,一旦你安装了缺少的那个,之后会有至少另一个缺少的库。这就是为什么我们需要安装上面列出的大量库。


Check out similar posts by category: Linux, Puppeteer