2022-11-15 11:18 Temps de lecture : 23 min

Comment installer Chromium sur Ubuntu et CentOS ?

Guide d'Installation de Chrome Headless sur Ubuntu et CentOS

Ce document propose un tutoriel détaillé pour installer et configurer Chrome Headless sur les systèmes d'exploitation Ubuntu et CentOS.

Qu'est-ce que Chrome Headless ?

Chrome Headless est une version de Chrome qui fonctionne sans interface utilisateur graphique. Il s'exécute en arrière-plan, ce qui le rend idéal pour les tests automatisés et les manipulations de pages web sans avoir besoin d'afficher une fenêtre de navigateur.

Les avantages de Chrome Headless sont multiples:

  • Il permet de tester les fonctionnalités web les plus récentes (ES6, service workers, etc.) dans un environnement de rendu à jour.
  • Il offre des outils puissants tels que la limitation de la bande passante, l'émulation de périphériques et l'analyse de la couverture de code.
  • Les tests peuvent être effectués directement via la ligne de commande sans écrire de code supplémentaire.

Voici quelques options de ligne de commande couramment utilisées:

--screenshot Pour prendre une capture d'écran
--print-to-pdf Pour convertir une page web en PDF
--dump-dom Pour exporter les données du DOM (Document Object Model)

Important : Chrome Headless est une entité différente du navigateur Chromium.

Installation de Chrome sur Ubuntu

Étape 1 : Mise à Jour du Système

Commencez par actualiser la liste des paquets disponibles sur Ubuntu :

[email protected]:~$ sudo apt-get update

Vous devriez voir une sortie similaire à celle-ci:

Hit:1 https://download.docker.com/linux/ubuntu bionic InRelease
Hit:2 http://security.ubuntu.com/ubuntu cosmic-security InRelease
Hit:3 http://ppa.launchpad.net/ansible/ansible/ubuntu cosmic InRelease
Hit:5 http://apt.puppetlabs.com bionic InRelease
Ign:6 http://pkg.jenkins.io/debian-stable binary/ InRelease
Hit:7 http://us.archive.ubuntu.com/ubuntu cosmic InRelease
Hit:8 http://ppa.launchpad.net/canonical-chromium-builds/stage/ubuntu cosmic InRelease
Hit:9 http://pkg.jenkins.io/debian-stable binary/ Release
Hit:10 http://us.archive.ubuntu.com/ubuntu cosmic-updates InRelease
Hit:11 http://us.archive.ubuntu.com/ubuntu cosmic-backports InRelease
Hit:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
Reading package lists... Done

Étape 2 : Installation des Dépendances

Installez les dépendances nécessaires pour l'installation de Chrome :

[email protected]:~$ sudo apt-get install -y libappindicator1 fonts-liberation

La sortie devrait ressembler à ceci:

Reading package lists... Done
Building dependency tree
Reading state information... Done
fonts-liberation is already the newest version (1:1.07.4-7).
fonts-liberation set to manually installed.
The following package was automatically installed and is no longer required:
chromium-codecs-ffmpeg-extra
Use 'sudo apt autoremove' to remove it.
The following additional packages will be installed:
libdbusmenu-gtk4 libindicator7
Suggested packages:
indicator-application
The following NEW packages will be installed:
libappindicator1 libdbusmenu-gtk4 libindicator7
0 upgraded, 3 newly installed, 0 to remove and 238 not upgraded.
Need to get 68.2 kB of archives.
After this operation, 280 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libdbusmenu-gtk4 amd64 16.04.1+18.10.20180917-0ubuntu1 [27.1 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libindicator7 amd64 16.10.0+18.04.20180321.1-0ubuntu1 [21.7 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libappindicator1 amd64 12.10.1+18.04.20180322.1-0ubuntu1 [19.4 kB]
Fetched 68.2 kB in 1s (61.1 kB/s)
Selecting previously unselected package libdbusmenu-gtk4:amd64.
(Reading database ... 318270 files and directories currently installed.)
Preparing to unpack .../libdbusmenu-gtk4_16.04.1+18.10.20180917-0ubuntu1_amd64.deb ...
Unpacking libdbusmenu-gtk4:amd64 (16.04.1+18.10.20180917-0ubuntu1) ...
Selecting previously unselected package libindicator7.
Preparing to unpack .../libindicator7_16.10.0+18.04.20180321.1-0ubuntu1_amd64.deb ...
Unpacking libindicator7 (16.10.0+18.04.20180321.1-0ubuntu1) ...
Selecting previously unselected package libappindicator1.
Preparing to unpack .../libappindicator1_12.10.1+18.04.20180322.1-0ubuntu1_amd64.deb ...
Unpacking libappindicator1 (12.10.1+18.04.20180322.1-0ubuntu1) ...
Setting up libindicator7 (16.10.0+18.04.20180321.1-0ubuntu1) ...
Setting up libdbusmenu-gtk4:amd64 (16.04.1+18.10.20180917-0ubuntu1) ...
Processing triggers for libc-bin (2.28-0ubuntu1) ...
Setting up libappindicator1 (12.10.1+18.04.20180322.1-0ubuntu1) ...
Processing triggers for libc-bin (2.28-0ubuntu1) ...
libappindicator1: This library is used to export menu by an application into a panel
fonts-liberation: This library has similar font metrics as Arial, Times and Courier

Si des dépendances supplémentaires sont requises, exécutez la commande suivante pour les installer :

[email protected]:~$ sudo apt-get install -f

Cette commande installera toutes les dépendances manquantes pour Chromium. Vous pourriez observer une sortie similaire à ceci:

The following additional packages will be installed:
  at-spi2-core cpp cpp-7 dconf-gsettings-backend dconf-service gcc-7-base glib-networking glib-networking-common
  glib-networking-services gsettings-desktop-schemas libappindicator3-1 libasound2 libasound2-data libatk-bridge2.0-0
  libatspi2.0-0 libauthen-sasl-perl libcairo-gobject2 libcolord2 libdata-dump-perl libdbusmenu-gtk3-4 libdconf1
  libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libencode-locale-perl libepoxy0 libfile-basedir-perl
  libfile-desktopentry-perl libfile-listing-perl libfile-mimeinfo-perl libfont-afm-perl libfontenc1 libgl1
  libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libgtk-3-0 libgtk-3-bin libgtk-3-common
  libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl
  libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libice6 libindicator3-7
  libio-html-perl libio-socket-ssl-perl libipc-system-simple-perl libisl19 libjson-glib-1.0-0 libjson-glib-1.0-common
  liblcms2-2 libllvm9 liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmpc3 libnet-dbus-perl
  libnet-http-perl libnet-smtp-ssl-perl libnet-ssleay-perl libnspr4 libnss3 libpciaccess0 libproxy1v5 librest-0.7-0
  libsensors4 libsm6 libsoup-gnome2.4-1 libsoup2.4-1 libtie-ixhash-perl libtimedate-perl libtry-tiny-perl liburi-perl
  libwayland-client0 libwayland-cursor0 libwayland-egl1 libwww-perl libwww-robotrules-perl libx11-protocol-perl
  libx11-xcb1 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-shape0 libxcb-sync1 libxft2
  libxkbcommon0 libxml-parser-perl libxml-twig-perl libxml-xpathengine-perl libxmu6 libxpm4 libxshmfence1 libxss1 libxt6
  libxtst6 libxv1 libxxf86dga1 libxxf86vm1 perl-openssl-defaults x11-common x11-utils x11-xserver-utils xdg-utils
Suggested packages:
  cpp-doc gcc-7-locales indicator-application libasound2-plugins alsa-utils libdigest-hmac-perl libgssapi-perl colord
  gvfs liblcms2-utils libcrypt-ssleay-perl lm-sensors libauthen-ntlm-perl libunicode-map8-perl libunicode-string-perl
  xml-twig-tools mesa-utils nickle cairo-5c xorg-docs-core
The following NEW packages will be installed:
  at-spi2-core cpp cpp-7 dconf-gsettings-backend dconf-service gcc-7-base glib-networking glib-networking-common
  glib-networking-services gsettings-desktop-schemas libappindicator3-1 libasound2 libasound2-data libatk-bridge2.0-0
  libatspi2.0-0 libauthen-sasl-perl libcairo-gobject2 libcolord2 libdata-dump-perl libdbusmenu-gtk3-4 libdconf1
  libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libencode-locale-perl libepoxy0 libfile-basedir-perl
  libfile-desktopentry-perl libfile-listing-perl libfile-mimeinfo-perl libfont-afm-perl libfontenc1 libgl1
  libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libgtk-3-0 libgtk-3-bin libgtk-3-common
  libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl
  libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libice6 libindicator3-7
  libio-html-perl libio-socket-ssl-perl libipc-system-simple-perl libisl19 libjson-glib-1.0-0 libjson-glib-1.0-common
  liblcms2-2 libllvm9 liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmpc3 libnet-dbus-perl
  libnet-http-perl libnet-smtp-ssl-perl libnet-ssleay-perl libnspr4 libnss3 libpciaccess0 libproxy1v5 librest-0.7-0
  libsensors4 libsm6 libsoup-gnome2.4-1 libsoup2.4-1 libtie-ixhash-perl libtimedate-perl libtry-tiny-perl liburi-perl
  libwayland-client0 libwayland-cursor0 libwayland-egl1 libwww-perl libwww-robotrules-perl libx11-protocol-perl
  libx11-xcb1 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-shape0 libxcb-sync1 libxft2
  libxkbcommon0 libxml-parser-perl libxml-twig-perl libxml-xpathengine-perl libxmu6 libxpm4 libxshmfence1 libxss1 libxt6
  libxtst6 libxv1 libxxf86dga1 libxxf86vm1 perl-openssl-defaults x11-common x11-utils x11-xserver-utils xdg-utils
0 upgraded, 117 newly installed, 0 to remove and 58 not upgraded.
1 not fully installed or removed.
Need to get 40.7 MB of archives.
After this operation, 369 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Fetched 40.7 MB in 4s (9470 kB/s)
Extracting templates from packages: 100%

Étape 3 : Téléchargement de Chrome

Téléchargez le paquet stable de Google Chrome :

[email protected]:~$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

Vous devriez voir une sortie de type:

--2020-01-15 13:58:41-- https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
Resolving dl.google.com (dl.google.com)... 172.217.163.78, 2404:6800:4007:80c::200e
Connecting to dl.google.com (dl.google.com)|172.217.163.78|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 62204098 (59M) [application/x-debian-package]
Saving to: ‘google-chrome-stable_current_amd64.deb’

google-chrome-stable_current_amd64. 100%[=================================================================>] 59.32M 11.1MB/s in 29s

2020-01-15 13:59:10 (2.04 MB/s) - ‘google-chrome-stable_current_amd64.deb’ saved [62204098/62204098]

Étape 4 : Installation de Chrome

Installez le paquet téléchargé en utilisant dpkg:

[email protected]:~$ sudo dpkg -i google-chrome*.deb

Une sortie similaire à celle-ci devrait être affichée:

Selecting previously unselected package google-chrome-stable.
(Reading database ... 318285 files and directories currently installed.)
Preparing to unpack google-chrome-stable_current_amd64.deb ...
Unpacking google-chrome-stable (79.0.3945.117-1) ...
Setting up google-chrome-stable (79.0.3945.117-1) ...
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/x-www-browser (x-www-browser) in auto mode
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/gnome-www-browser (gnome-www-browser) in auto mode
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/google-chrome (google-chrome) in auto mode
Processing triggers for gnome-menus (3.13.3-11ubuntu2) ...
Processing triggers for desktop-file-utils (0.23-3ubuntu2) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for man-db (2.8.4-2) ...

Étape 5 : Vérification de la Version de Chrome

Pour confirmer que l'installation s'est déroulée avec succès, vérifiez la version de Google Chrome :

[email protected]:~$ google-chrome-stable -version

Vous devriez obtenir un résultat similaire à ceci:

Google Chrome 79.0.3945.117

Facultatif : Exécution de Chrome Headless

Voici un exemple d'exécution de Chrome en mode sans tête :

La commande suivante permet de sauvegarder le contenu de la page web https://gf.dev/ au format PDF :

[email protected]:~$ google-chrome-stable --headless --disable-gpu --print-to-pdf https://gf.dev/

Vous verrez un fichier output.pdf:

[0115/140930.772108:INFO:headless_shell.cc(620)] Written to file output.pdf.
[email protected]:~$ ls -l out*
-rw------- 1 toptips.fr toptips.fr 80799 Jan 15 14:09 output.pdf
[email protected]:~$

Passons maintenant à l'installation sur CentOS.

Installation de Chrome sur CentOS

Étape 1 : Mise à Jour de CentOS

Mettez à jour le système CentOS en utilisant la commande suivante:

[[email protected] ~]$ sudo yum update

Étape 2 : Création d'un Dépôt Chrome

Ajoutez le dépôt Google Chrome au système. Créez un fichier google-chrome.repo dans /etc/yum.repos.d/ et ajoutez les informations ci-dessous :

[[email protected] ~]$ sudo gedit /etc/yum.repos.d/google-chrome.repo

Ajoutez ce contenu au fichier:

[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

Étape 3 : Installation de Chrome

Exécutez la commande yum ci-dessous pour installer Google Chrome :

[[email protected] ~]$ sudo yum install google-chrome-stable

La sortie devrait ressembler à ceci:

Last metadata expiration check: 0:04:04 ago on Wed 22 Jan 2020 01:06:24 PM EST.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
google-chrome-stable x86_64 79.0.3945.130-1 google-chrome 60 M
Installing dependencies:
libXScrnSaver x86_64 1.2.3-1.el8 AppStream 31 k
libappindicator-gtk3 x86_64 12.10.0-19.el8 AppStream 43 k
libdbusmenu x86_64 16.04.0-12.el8 AppStream 140 k
libdbusmenu-gtk3 x86_64 16.04.0-12.el8 AppStream 41 k
libindicator-gtk3 x86_64 12.10.1-14.el8 AppStream 70 k
liberation-fonts noarch 1:2.00.3-4.el8 BaseOS 19 k
liberation-serif-fonts noarch 1:2.00.3-4.el8 BaseOS 607 k

Transaction Summary
================================================================================
Install 8 Packages

Total download size: 60 M
Installed size: 213 M
Is this ok [y/N]: y
Downloading Packages:
(1/8): libXScrnSaver-1.2.3-1.el8.x86_64.rpm 146 kB/s | 31 kB 00:00
(2/8): libappindicator-gtk3-12.10.0-19.el8.x86_ 171 kB/s | 43 kB 00:00
(3/8): libdbusmenu-gtk3-16.04.0-12.el8.x86_64.r 691 kB/s | 41 kB 00:00
(4/8): libindicator-gtk3-12.10.1-14.el8.x86_64. 558 kB/s | 70 kB 00:00
(5/8): liberation-fonts-2.00.3-4.el8.noarch.rpm 74 kB/s | 19 kB 00:00
(6/8): liberation-serif-fonts-2.00.3-4.el8.noar 1.3 MB/s | 607 kB 00:00
(7/8): libdbusmenu-16.04.0-12.el8.x86_64.rpm 121 kB/s | 140 kB 00:01
(8/8): google-chrome-stable-79.0.3945.130-1.x86 8.4 MB/s | 60 MB 00:07
--------------------------------------------------------------------------------
Total 6.5 MB/s | 60 MB 00:09
warning: /var/cache/dnf/google-chrome-eb0d6f10ccbdafba/packages/google-chrome-stable-79.0.3945.130-1.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 7fac5991: NOKEY
google-chrome 49 kB/s | 10 kB 00:00
Importing GPG key 0x7FAC5991:
Userid : "Google, Inc. Linux Package Signing Key <[email protected]>"
Fingerprint: 4CCA 1EAF 950C EE4A B839 76DC A040 830F 7FAC 5991
From : https://dl-ssl.google.com/linux/linux_signing_key.pub
Is this ok [y/N]: y
Key imported successfully
Importing GPG key 0xD38B4796:
Userid : "Google Inc. (Linux Packages Signing Authority) <[email protected]>"
Fingerprint: EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796
From : https://dl-ssl.google.com/linux/linux_signing_key.pub
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : libdbusmenu-16.04.0-12.el8.x86_64 1/8
Installing : libdbusmenu-gtk3-16.04.0-12.el8.x86_64 2/8
Installing : liberation-serif-fonts-1:2.00.3-4.el8.noarch 3/8
Installing : liberation-fonts-1:2.00.3-4.el8.noarch 4/8
Installing : libindicator-gtk3-12.10.1-14.el8.x86_64 5/8
Installing : libappindicator-gtk3-12.10.0-19.el8.x86_64 6/8
Installing : libXScrnSaver-1.2.3-1.el8.x86_64 7/8
Running scriptlet: google-chrome-stable-79.0.3945.130-1.x86_64 8/8
Installing : google-chrome-stable-79.0.3945.130-1.x86_64 8/8
Running scriptlet: google-chrome-stable-79.0.3945.130-1.x86_64 8/8
Redirecting to /bin/systemctl start atd.service

Verifying : libXScrnSaver-1.2.3-1.el8.x86_64 1/8
Verifying : libappindicator-gtk3-12.10.0-19.el8.x86_64 2/8
Verifying : libdbusmenu-16.04.0-12.el8.x86_64 3/8
Verifying : libdbusmenu-gtk3-16.04.0-12.el8.x86_64 4/8
Verifying : libindicator-gtk3-12.10.1-14.el8.x86_64 5/8
Verifying : liberation-fonts-1:2.00.3-4.el8.noarch 6/8
Verifying : liberation-serif-fonts-1:2.00.3-4.el8.noarch 7/8
Verifying : google-chrome-stable-79.0.3945.130-1.x86_64 8/8

Installed:
google-chrome-stable-79.0.3945.130-1.x86_64
libXScrnSaver-1.2.3-1.el8.x86_64
libappindicator-gtk3-12.10.0-19.el8.x86_64
libdbusmenu-16.04.0-12.el8.x86_64
libdbusmenu-gtk3-16.04.0-12.el8.x86_64
libindicator-gtk3-12.10.1-14.el8.x86_64
liberation-fonts-1:2.00.3-4.el8.noarch
liberation-serif-fonts-1:2.00.3-4.el8.noarch

Complete!

Étape 4 : Vérification de la Version de Chrome

Pour confirmer que l'installation s'est déroulée avec succès, vérifiez la version de Google Chrome :

[[email protected] ~]$ google-chrome -version

Vous devriez obtenir une réponse similaire à ceci:

Google Chrome 79.0.3945.130

Facultatif : Exécution de Chrome Headless

Voici un exemple d'exécution de Chrome en mode sans tête sur CentOS:

La commande suivante générera un fichier PDF de la page web https://www.chromestatus.com/ :

[[email protected] ~]$ google-chrome-stable --headless --disable-gpu --print-to-pdf https://www.chromestatus.com/

Vous verrez un fichier output.pdf généré:

[0122/131602.193881:INFO:headless_shell.cc(620)] Written to file output.pdf.

Voici la liste des fichiers dans le répertoire courant, où le fichier PDF créé est présent :

[[email protected] ~]$ ls -l
total 61208
drwxr-xr-x. 2 toptips.fr toptips.fr 6 Sep 25 11:49 Desktop
drwxr-xr-x. 2 toptips.fr toptips.fr 6 Sep 25 11:49 Documents
drwxr-xr-x. 2 toptips.fr toptips.fr 6 Sep 25 11:49 Downloads
-rw-rw-r--. 1 toptips.fr toptips.fr 180 Jan 22 13:05 google-chrome.repo
-rw-------. 1 toptips.fr toptips.fr 146776 Jan 22 13:16 output.pdf

Ce guide vous a montré comment installer Chrome sur Ubuntu et CentOS et l'exécuter en mode Headless.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.