Ubuntu および CentOS に Headless Chromium をインストールするためのステップバイステップ ガイド。
ヘッドレス Chrome とは何ですか?
ヘッドレス Chrome は、UI (ブラウザ) なしで Chrome ブラウザを実行しているようなものです。つまり、ヘッドレス環境で実行されており、自動テストの実行に非常に役立ちます。
では、ヘッドレス Chrome は何をもたらすのでしょうか?
最もエキサイティングなことの 1 つは、ES6 モジュール、サービス ワーカー、ストリームなどの最新かつ最高の Web プラットフォーム機能をテストできることです。ヘッドレス Chrome を使用すると、アプリを作成し、それらのアプリを最新のレンダリングでテストできます。もう 1 つのロックが解除されるのは、ネットワーク スロットリング、デバイス エミュレーション、コード カバレッジなどの素晴らしい機能です。
ヘッドレス Chrome を使用すると、コードを 1 行も記述せずにテストを実行できます。これは素晴らしいことではないでしょうか。
コマンドラインから実行するだけです。以下はよく使用されるフラグの一部です。
--screenshot #to take a screenshot
--print-to-pdf #converting <a href="https://.com/webpage-to-pdf-tools/">webpage to PDF</a>
--dump-dom #dump DOM (document object model) data
注 – これは Chromium ブラウザとは異なります。
Ubuntu への Chromium のインストール
ステップ 1: Ubuntu を更新する
まず、Ubuntu のパッケージを更新します。
@:~$ sudo apt-get update
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
ステップ 2: 依存関係をインストールする
インストールに必要なこれらの依存関係をインストールします。
@:~$ 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 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
Chrome をインストールするために不足している依存関係がほとんどない場合があります。したがって、以下のコマンドを実行すると、chromium のインストールに必要な不足している依存関係がすべてインストールされます。
@:~$ 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%
ステップ 3: Chrome をダウンロードする
Ubuntu システム用の Google Chrome 安定版パッケージをダウンロードします。
@:~$ 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]
ステップ 4: Chrome をインストールする
安定したパッケージをインストールします。
@:~$ 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) ...
ステップ 5: Chrome のバージョンを確認する
インストールが正常に完了したことを確認するには、Google Chrome のバージョンを確認してください。
@:~$ google-chrome-stable -version
Google Chrome 79.0.3945.117
オプション: Chrome ヘッドレスを実行する
Chrome をヘッドレス モードで実行する例を示します。
Chrome をヘッドレス モードで実行すると、https://gf.dev/ のすべてのコンテンツが PDF ファイルとして保存されます。
@:~$ 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.
ファイルoutput.pdfが表示されます。
@:~$ ls -l out*
-rw------- 1 80799 Jan 15 14:09 output.pdf
@:~$
次に、CentOS システムで同じセットアップを行う方法を説明します。
CentOS への Chromium のインストール
ステップ 1: CentOS を更新する
以下のコマンドで CentOS システムを更新します。
[@ ~]$ sudo yum update
ステップ 2: Chrome リポジトリを作成する
Google Chrome リポジトリをシステムに追加します。 /etc/yum.repos.d/ 内にファイル google-chrome.repo を作成し、以下の詳細を追加します。
[@ ~]$ sudo gedit /etc/yum.repos.d/google-chrome.repo
[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
ステップ 3: Chrome をインストールする
以下の yum コマンドを実行して、CentOS システムに Google Chrome をインストールします。
[@ ~]$ 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 <linux-packages-keymaster@google.com>"
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) <linux-packages-keymaster@google.com>"
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!
ステップ 4: Chrome のバージョンを確認する
インストールが正常に完了したかどうかを確認するには、Google Chrome のバージョンを確認してください。
[@ ~]$ google-chrome -version
Google Chrome 79.0.3945.130
オプション: Chrome ヘッドレスを実行する
CentOS で Chrome をヘッドレス モードで実行する例を示します。
スクリーンショットをキャプチャする例を取り上げます。以下のコマンドは Chrome をヘッドレス モードで実行し、https://www.chromestatus.com/ のすべてのコンテンツが PDF ファイルとして保存されます。
[@ ~]$ 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.
https://www.chromestatus.com/ のすべてのコンテンツを含む、output.pdf ファイルが作成されました。
[@ ~]$ ls -l
total 61208
drwxr-xr-x. 2 6 Sep 25 11:49 Desktop
drwxr-xr-x. 2 6 Sep 25 11:49 Documents
drwxr-xr-x. 2 6 Sep 25 11:49 Downloads
-rw-rw-r--. 1 180 Jan 22 13:05 google-chrome.repo
-rw-------. 1 146776 Jan 22 13:16 output.pdf
以上が、Ubuntu と CentOS に Chrome をインストールし、ヘッドレス モードで実行する方法でした。