如何在 Ubuntu 和 CentOS 上安装 Chromium?

在 Ubuntu 和 CentOS 上安装 Headless Chromium 的分步指南。

什么是无头 Chrome?

Headless Chrome 就像在没有 UI(浏览器)的情况下运行 chrome 浏览器,即它运行在无头环境中,这对于运行自动化测试非常有用。

那么,headless Chrome 为我们解锁了什么?

最令人兴奋的事情之一是能够测试最新最好的 Web 平台功能,如 ES6 模块、服务工作者和流。 使用 headless chrome,您可以编写应用程序并使用最新的渲染来测试这些应用程序。 它解锁的另一件事是这些很棒的功能,如网络节流、设备模拟和代码覆盖。

使用 headless chrome,你甚至不用写一行代码就可以进行测试,是不是很酷!

您可以通过命令行执行它们。 下面是一些常用的标志。

--screenshot #to take a screenshot
--print-to-pdf #converting <a href="https://techblik.com.com/webpage-to-pdf-tools/">webpage to PDF</a>
--dump-dom #dump DOM (document object model) data

注意——这与 Chromium 浏览器不同。

在 Ubuntu 上安装 Chromium

第 1 步:更新 Ubuntu

首先,更新 Ubuntu 中的软件包。

[email protected]:~$ 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

第二步:安装依赖

安装安装所需的这些依赖项。

[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 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 所需的所有缺少的依赖项。

[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%

第 3 步:下载 Chrome

下载适用于 Ubuntu 系统的 google chrome 稳定包。

[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]

第 4 步:安装 Chrome

安装稳定包。

[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) ...

第 5 步:检查 Chrome 版本

要确认安装已成功完成,请检查 Google Chrome 版本。

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

可选:无头运行 Chrome

让我向您展示一个在无头模式下运行 chrome 的示例。

  如何在谷歌浏览器中更改您的位置

我会以headless模式运行chrome,https://gf.dev/的所有内容都会保存为pdf文件。

[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.

可以看到一个文件output.pdf

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

接下来,我将向您展示如何在 CentOS 系统中进行相同的设置。

在 CentOS 上安装 Chromium

第 1 步:更新 CentOS

使用以下命令更新 CentOS 系统。

[[email protected] ~]$ sudo yum update

第 2 步:创建 Chrome 存储库

将 google chrome 存储库添加到系统。 在 /etc/yum.repos.d/ 中创建文件 google-chrome.repo 并添加以下详细信息。

[[email protected] ~]$ 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。

[[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!

第 4 步:检查 Chrome 版本

要确认安装已成功完成,请检查 google chrome 版本。

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

可选:无头运行 Chrome

让我向您展示一个在 CentOS 上以无头模式运行 chrome 的示例。

  在 Netlifx 中的不需要的设备上停用并断开您的帐户

我将以捕获屏幕截图为例。 下面这个命令将以无头模式运行 chrome,并且 https://www.chromestatus.com/ 的所有内容将被保存为 pdf 文件。

[[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.

创建的 output.pdf 文件包含 https://www.chromestatus.com/ 的所有内容

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

这就是关于如何在 Ubuntu 和 CentOS 上安装 Chrome 并以无头模式运行它的全部内容。