Reputation: 10556
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:
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)
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
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.
dpkg
, but that command doesn't exist on Amazon Linux apparentlyapt
neitherUpvotes: 21
Views: 33543
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
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
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 .
Enable and install Extra Packages for Enterprise Linux by running the command
sudo amazon-linux-extras install epel -y
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
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
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