Wie installiere ich Chromium auf Ubuntu und CentOS?

Anleitung zur Installation von Headless Chromium auf Ubuntu und CentOS

Was ist Headless Chrome?

Headless Chrome ermöglicht es, den Chrome-Browser ohne grafische Benutzeroberfläche zu betreiben. Das bedeutet, er läuft in einer Umgebung ohne sichtbare Fenster, was ideal für automatisierte Tests ist.

Welche Möglichkeiten eröffnet uns Headless Chrome?

Besonders spannend ist die Chance, topaktuelle Webplattform-Features wie ES6-Module, Service Worker und Streams zu testen. Headless Chrome erlaubt es, Anwendungen zu entwickeln und diese mit realem Rendering zu prüfen. Zusätzlich werden Features wie die Drosselung der Netzwerkgeschwindigkeit, Geräteemulation und Codeabdeckung zugänglich.

Mit Headless Chrome können Sie Tests durchführen, ohne auch nur eine Zeile Code zu schreiben. Die Ausführung erfolgt bequem über die Kommandozeile. Hier sind einige häufig verwendete Befehlszeilenparameter:

    --screenshot # Erstellt einen Screenshot
    --print-to-pdf # Konvertiert eine Webseite in eine PDF-Datei
    --dump-dom # Gibt DOM-Daten (Document Object Model) aus
    

Wichtig: Dies unterscheidet sich von der Nutzung des Chromium-Browsers mit sichtbarer Oberfläche.

Chromium-Installation auf Ubuntu

Schritt 1: Aktualisierung von Ubuntu

Beginnen Sie mit der Aktualisierung der Paketlisten in Ubuntu.

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

Schritt 2: Installation der Abhängigkeiten

Installieren Sie die erforderlichen Abhängigkeiten für die Installation von Chromium.

    [email protected]:~$ sudo apt-get install -y libappindicator1 fonts-liberation
    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 https://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libdbusmenu-gtk4 amd64 16.04.1+18.10.20180917-0ubuntu1 [27.1 kB]
    Get:2 https://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libindicator7 amd64 16.10.0+18.04.20180321.1-0ubuntu1 [21.7 kB]
    Get:3 https://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
    

In manchen Fällen fehlen möglicherweise weitere Abhängigkeiten. Führen Sie daher folgenden Befehl aus, um fehlende Abhängigkeiten, die für die Installation von Chrome notwendig sind, nachzuinstallieren.

    [email protected]:~$ sudo apt-get install -f
    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%
    

Schritt 3: Download von Chrome

Laden Sie das Google Chrome Stable-Paket für Ihr Ubuntu-System herunter.

    [email protected]:~$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    --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]
    

Schritt 4: Installation von Chrome

Installieren Sie nun das heruntergeladene Stable-Paket.

    [email protected]:~$ sudo dpkg -i google-chrome*.deb
    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) ...
    

Schritt 5: Überprüfung der Chrome-Version

Überprüfen Sie die Google Chrome-Version, um den Erfolg der Installation zu bestätigen.

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

Optional: Ausführung von Chrome Headless

Hier ist ein Beispiel, wie Sie Chrome im Headless-Modus ausführen können.

Chrome wird im Headless-Modus gestartet und der Inhalt von https://gf.dev/ als PDF-Datei gespeichert.

    [email protected]:~$ google-chrome-stable --headless --disable-gpu --print-to-pdf https://gf.dev/
    [0115/140930.772108:INFO:headless_shell.cc(620)] Written to file output.pdf.
    

Sie sollten nun die Datei output.pdf finden.

    [email protected]:~$ ls -l out*
    -rw------- 1 wdzwdz wdzwdz 80799 Jan 15 14:09 output.pdf
    [email protected]:~$ 
    

Im Folgenden wird die gleiche Installation für CentOS beschrieben.

Chromium-Installation auf CentOS

Schritt 1: Aktualisierung von CentOS

Aktualisieren Sie Ihr CentOS-System mit folgendem Befehl.

    [[email protected] ~]$ sudo yum update
    

Schritt 2: Erstellung eines Chrome-Repositories

Fügen Sie das Google Chrome-Repository dem System hinzu. Erstellen Sie eine Datei `google-chrome.repo` in `/etc/yum.repos.d/` und fügen Sie folgende Details ein:

    [[email protected] ~]$ sudo gedit /etc/yum.repos.d/google-chrome.repo
    
    [google-chrome]
    name=google-chrome
    baseurl=https://dl.google.com/linux/chrome/rpm/stable/$basearch
    enabled=1
    gpgcheck=1
    gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
    

Schritt 3: Installation von Chrome

Führen Sie folgenden yum-Befehl aus, um Google Chrome auf Ihrem CentOS-System zu installieren.

    [[email protected] ~]$ sudo yum install google-chrome-stable
    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!
    

Schritt 4: Überprüfung der Chrome-Version

Überprüfen Sie die Google Chrome-Version, um die erfolgreiche Installation zu bestätigen.

    [[email protected] ~]$ google-chrome -version
    Google Chrome 79.0.3945.130
    

Optional: Ausführung von Chrome Headless

Hier ein Beispiel, wie Chrome im Headless-Modus unter CentOS ausgeführt werden kann.

Ich zeige Ihnen, wie man einen Screenshot aufnimmt. Der folgende Befehl führt Chrome im Headless-Modus aus und speichert den gesamten Inhalt von https://www.chromestatus.com/ als PDF-Datei.

    [[email protected] ~]$ google-chrome-stable --headless --disable-gpu --print-to-pdf https://www.chromestatus.com/
    [0122/131602.193881:INFO:headless_shell.cc(620)] Written to file output.pdf.
    

Die Datei output.pdf wurde erstellt und enthält nun den gesamten Inhalt von https://www.chromestatus.com/.

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

Damit ist die Installation und Ausführung von Chrome im Headless-Modus auf Ubuntu und CentOS abgeschlossen.