在Amazon Linux上安装Chromium

19

我正在尝试在Amazon Linux机器上安装Chromium(或Chrome)。

我已经尝试了很多步骤,但都没有成功。以下是我尝试的方法:

简单的Yum安装

yum install epel       # worked
yum install chromium

生成的错误消息:
Error: Package: chromium-31.0.1650.63-2.el6.x86_64 (chromium-el6)
           Requires: libgnome-keyring.so.0()(64bit)
Error: Package: chromium-31.0.1650.63-2.el6.x86_64 (chromium-el6)
           Requires: libgtk-x11-2.0.so.0()(64bit)
Error: Package: chromium-31.0.1650.63-2.el6.x86_64 (chromium-el6)
           Requires: libgdk_pixbuf-2.0.so.0()(64bit)
Error: Package: chromium-31.0.1650.63-2.el6.x86_64 (chromium-el6)
           Requires: libXss.so.1()(64bit)
Error: Package: chromium-31.0.1650.63-2.el6.x86_64 (chromium-el6)
           Requires: libgdk-x11-2.0.so.0()(64bit)
Error: Package: chromium-31.0.1650.63-2.el6.x86_64 (chromium-el6)
           Requires: libcanberra-gtk2(x86-64)
Error: Package: chromium-31.0.1650.63-2.el6.x86_64 (chromium-el6)
           Requires: libatk-1.0.so.0()(64bit)

安装特定的RPM包

我尝试下载Chrome的RPM包,包括最新稳定版本和一个特定版本,然后运行以下命令:

yum install /path/to/package.rpm
yum install google-chrome-stable-64.0.3282.119-1.x86_64.rpm

它产生了相同的错误信息

手动操作

https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/532015/下载二进制文件

运行它会生成以下错误信息

error while loading shared libraries: libXcursor.so.1: cannot open shared object file: No such file or directory

我运行了

yum install libXcursor
yum install libXfixes     # because chrome was then complaining about that library
yum install libXdamage    # and subsequently that one

一切都正常。

然而,接下来Chrome开始抱怨一个libcups库:

error while loading shared libraries: libcups.so.2: cannot open shared object file: No such file or directory

yum没有找到libcups,似乎这是因为它是一个32位的库。有些页面建议安装ia32-libs作为解决方案,但运行yum install ia32-libs显示它已经安装。

我无法超越那个点。

其他

  • 我也尝试了这里提到的步骤,但那没用。
  • 有些页面指向使用dpkg,但Amazon Linux上似乎不存在该命令。
  • apt也不行。

你为什么想要这样做?如果是为了在AWS上拥有完整的开发环境,我建议使用Ubuntu。AWS Linux真的不想成为图形化界面(我曾经走过这条路,最终和你一样不开心)。 - kdgregory
1
@kdgregory感谢您的评论。我实际上并不是在寻找图形界面,而是在使用Chrome的无头模式。我实际上只是将AWS用作测试我在Linux上所做的事情而不是在Mac上。 - Vic Seedoubleyew
sudo yum install libX11 Gconf2 fontconfig - palafox_e
1
@palafox,谢谢,我会尝试一下。你在AWS上真的做过吗? - Vic Seedoubleyew
@VicSeedoubleyew 也许这个可以帮到你 https://gist.github.com/palafoxernesto/38efba25b845ba3f34b96d008c2415f5 - palafox_e
4个回答

34

这些答案都不管用,实际上也没有一个能解决Amazon Linux的问题。

如果您正在使用EC2实例或任何运行Amazon Linux的服务器,您应按照以下步骤操作才能真正解决问题。

  1. 通过运行以下命令启用和安装Enterprise Linux的Extra Packages:

    sudo amazon-linux-extras install epel -y
    
  2. 成功安装所有额外软件包后,按照通常方式安装Chromium

  3. sudo yum install -y chromium
    

一旦您这样做,Chromium将拥有所有必需的库,例如libatk *、libgdk *等...

您应该能够轻松启动Chromium。

您在此处寻找的缺失软件包实际上并没有丢失,它们是默认的,您只需要启用它们,这在AWS文档中有很好的记录。

https://aws.amazon.com/premiumsupport/knowledge-center/ec2-enable-epel/


2
非常感谢!我现在没有时间专门测试它,但听起来很相关,希望能帮助其他人。感谢分享! - Vic Seedoubleyew
2
非常好的答案,这对我非常有效。 - Mardin Yadegar
也对我有用,这太棒了。 - Srikanth Gowda
1
可以在Amazon Linux 2上运行,但是在t2.micro或t2.small上无法运行,因为内存不足。可以在t2.medium上运行。 - kimbaudi
1
谢谢。这在Amazon Linux 2的docker基础镜像上完美运行,但会增加约500MB的映像文件大小。 - Chris Shenton

11
为了在Lambda上使用无头浏览器,我部署了一个与EC2实例相同的AMI(当前版本为amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2)。安装Chrome后,通常会出现许多缺少依赖项的问题。
参考链接:https://medium.com/mockingbot/run-puppeteer-chrome-headless-on-ec2-amazon-linux-ami-6c9c6a17bee6 进入包含Chrome可执行文件的文件夹并使用ldd检查缺少的依赖项。
$ ldd chrome | grep not
libpangocairo-1.0.so.0 => not found
libpango-1.0.so.0 => not found
libcairo.so.2 => not found
libXcursor.so.1 => not found
libXdamage.so.1 => not found
libXfixes.so.3 => not found
libcups.so.2 => not found
libXss.so.1 => not found
libXrandr.so.2 => not found
libgconf-2.so.4 => not found
libatk-1.0.so.0 => not found
libgtk-3.so.0 => not found
libgdk-3.so.0 => not found
libgdk_pixbuf-2.0.so.0 => not found

请安装以下内容:

$ sudo yum install cups-libs dbus-glib libXrandr libXcursor libXinerama cairo cairo-gobject pango

请再次确认:

$ ldd chrome | grep not
libXss.so.1 => not found
libgconf-2.so.4 => not found
libatk-1.0.so.0 => not found
libgtk-3.so.0 => not found
libgdk-3.so.0 => not found
libgdk_pixbuf-2.0.so.0 => not found

我们需要从一个非常庞大的RPM包集中提取这些依赖关系:

# Install ATK from CentOS 7
$ sudo rpm -ivh --nodeps http://mirror.centos.org/centos/7/os/x86_64/Packages/atk-2.22.0-3.el7.x86_64.rpm
$ sudo rpm -ivh --nodeps http://mirror.centos.org/centos/7/os/x86_64/Packages/at-spi2-atk-2.22.0-2.el7.x86_64.rpm
$ sudo rpm -ivh --nodeps http://mirror.centos.org/centos/7/os/x86_64/Packages/at-spi2-core-2.22.0-1.el7.x86_64.rpm
# Install GTK from fedora 20
$ sudo rpm -ivh --nodeps http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/g/GConf2-3.2.6-7.fc20.x86_64.rpm
$ sudo rpm -ivh --nodeps http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/l/libXScrnSaver-1.2.2-6.fc20.x86_64.rpm
$ sudo rpm -ivh --nodeps http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/l/libxkbcommon-0.3.1-1.fc20.x86_64.rpm
$ sudo rpm -ivh --nodeps http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/l/libwayland-client-1.2.0-3.fc20.x86_64.rpm
$ sudo rpm -ivh --nodeps http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/l/libwayland-cursor-1.2.0-3.fc20.x86_64.rpm
$ sudo rpm -ivh --nodeps http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/x86_64/os/Packages/g/gtk3-3.10.4-1.fc20.x86_64.rpm
# Install Gdk-Pixbuf from fedora 16
$ sudo rpm -ivh --nodeps http://dl.fedoraproject.org/pub/archive/fedora/linux/releases/16/Fedora/x86_64/os/Packages/gdk-pixbuf2-2.24.0-1.fc16.x86_64.rpm

那应该解决所有依赖问题,Chrome 应该能够运行了,终于!!

2
谢谢您。最近在 ElasticBeanstalk 上运行了一次。创建了 这个 gist 以将所有内容作为配置文件而不是放在机器上运行。 - clay
谢谢!我已经疯了,不知道如何找到缺失的软件包... - Carolina Herrera
这在 Elastic Beanstalk 上运行的 Node.js 16 版本中,能够与 64位 Amazon Linux 2/5.5.6 兼容。谢谢! - Raphael Setin

1
我使用Chromium进行无头测试,通过AWS Ubuntu启动CodeBuild。我发现需要更新Node并安装一组Chromium依赖项。
#!/bin/sh
echo "Installing nodejs (which will include node and npm)"
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install -y nodejs  
echo "Installing chromium dependencies"
apt-get install -yq 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

0
对于使用 Amazon Linux 2022 的用户来说,有几个软件包缺失,在 Chromium 目录下运行 ldd chrome | grep not 命令会显示如下结果:
    libnss3.so => not found
    libnssutil3.so => not found
    libsmime3.so => not found
    libnspr4.so => not found
    libgbm.so.1 => not found

这些软件包不适用于 Amazon Linux 2022,但是您可以在https://rhel.pkgs.org/8上找到它们,因为该发行版基于 RHEL 8。

因此,这些应该可以解决问题:

sudo dnf install http://repo.okay.com.mx/centos/8/x86_64/release/okay-release-1-1.noarch.rpm
sudo dnf install nss
sudo dnf install mesa-libgbm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接