Vic Seedoubleyew
Vic Seedoubleyew

Reputation: 10556

Installing Chromium on Amazon Linux

I am trying to install Chromium (or Chrome, whichever) on an Amazon Linux machine.

I have tried many steps, to no avail. Here is what I have tried:

Simple Yum Install

yum install epel       # worked
yum install chromium

generated error message:

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)

Yum install of specific RPM package

I tried downloading a Chrome RPM, both the latest stable version as well as a specific version, and then running

yum install google-chrome-stable-64.0.3282.119-1.x86_64.rpm

It yielded the same error message

Manual procedure

Downloaded binary from https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/532015/

Running it generated the error message

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

I ran

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

which all worked.

However, then Chrome started complaining about a libcups library :

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

libcups wasn't found by yum, and it seems that this is because it is a 32 bit library. Some page recommended to install ia32-libs as a solution, but running yum install ia32-libs showed that it was already installed.

I couldn't get past that point.

Other

Upvotes: 21

Views: 33543

Answers (5)

benjamin hautefeuille
benjamin hautefeuille

Reputation: 29

If you run on an AL2 container (for lambda for example), you may need to install amazon-linux-extras first. Like so:

yum install -y amazon-linux-extras

Then you can run:

amazon-linux-extras install epel -y

and finally,

yum install -y chromium

Upvotes: 0

Moshisho
Moshisho

Reputation: 2981

For those using Amazon Linux 2022, there are several packages missing, running ldd chrome | grep not in the Chromium directory yields:

    libnss3.so => not found
    libnssutil3.so => not found
    libsmime3.so => not found
    libnspr4.so => not found
    libgbm.so.1 => not found

These packages aren't available for Amazon Linux 2022 but you can find them on https://rhel.pkgs.org/8 which works because this distribution is based on RHEL 8.

So these should fix it:

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

Upvotes: 1

Aravind.HU
Aravind.HU

Reputation: 9472

None of these answers , work, and none of them actually solves problem for amazon linux,

To really solve the problem if you are using EC2 instance or any other server where you are running Amazon linux, you should follow the below steps .

  1. Enable and install Extra Packages for Enterprise Linux by running the command

    sudo amazon-linux-extras install epel -y
    
  2. Post installing all the extra packages successfully, Install chromimum as usual

    sudo yum install -y chromium
    

Once you do that Chromium will have all required such as libatk* libgdk* etc ...

You should be able to easily launch Chromium

The missed out packages that you are looking here, are actually not missedout they are kind of default you just have to enable them , this is well documented in AWS documentation .

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

Upvotes: 37

mike mckechnie
mike mckechnie

Reputation: 874

I use chromium for headless testing via AWS Ubuntu launched through CodeBuild. I found I had to update node and install a set of chromium dependencies.

#!/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

Upvotes: 1

laloumen
laloumen

Reputation: 1369

In order to get headless chrome working on Lambda, I deployed an identical AMI as an EC2 instance (currently amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2). After installing chrome, the usual litany of missing dependencies begins.

Reference: https://medium.com/mockingbot/run-puppeteer-chrome-headless-on-ec2-amazon-linux-ami-6c9c6a17bee6

Navigate to the folder containing the chrome executable and use ldd to check for missing dependencies:

$ 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

Install the following:

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

Check again:

$ 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

We need to grab these dependencies from a maddeningly large set of RPMs:

# 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

That should resolve all the dependencies and chrome should be able to run, finally!!

Upvotes: 11

Related Questions