Како инсталирати Цхромиум на Убунту и ЦентОС?

Детаљан водич за инсталацију Headless Chromium-a на Ubuntu и CentOS

Овај водич ће вас корак по корак провести кроз процес инсталирања Headless Chromium-a на Ubuntu и CentOS оперативним системима.

Шта подразумева Headless Chrome?

Headless Chrome омогућава покретање Chrome прегледача без графичког корисничког интерфејса, односно у окружењу без главе. Овај начин рада је изузетно користан за аутоматизоване процесе тестирања.

Које могућности отвара коришћење Chrome-а без главе?

Једна од највећих предности је тестирање нових функција веб платформе попут ES6 модула, сервисера и стримова. Headless Chrome омогућава развој и тестирање апликација са најновијим могућностима приказивања. Додатне корисне опције укључују емулацију уређаја, пригушивање мреже и анализу покривености кода.

Са Headless Chrome-ом, могуће је изводити тестове без писања иједне линије кода, што је заиста изванредно!

Ова тестирања се могу извршити преко командне линије. Испод су наведене неке од најчешће коришћених застава:

      --screenshot # за снимање екрана
      --print-to-pdf # за конвертовање веб странице у PDF
      --dump-dom # за приказивање DOM (модела објекта документа) података
    

Важна напомена: Ово се разликује од стандардног Chromium прегледача.

Инсталација Chromium-a на Ubuntu систему

Корак 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
    

Корак 2: Инсталација зависности

Инсталирајте следеће зависности неопходне за инсталацију:

      [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
    

Могуће је да ће бити потребно инсталирати додатне зависности. У том случају, покрените следећу команду која ће инсталирати све преостале зависности:

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

Преузмите стабилни пакет за Google Chrome за Ubuntu систем:

      [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-a:

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

Опционално: Покретање Chrome-а без главе

Пример покретања Chrome-a у режиму без главе:

Покренућемо Chrome у Headless режиму и сав садржај са 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 techblog.co.rs techblog.co.rs 80799 Jan 15 14:09 output.pdf
      [email protected]:~$
    

Сада ћемо показати како се иста процедура спроводи на CentOS систему.

Инсталација Chromium-а на CentOS систему

Корак 1: Ажурирање CentOS-а

Ажурирајте CentOS систем помоћу следеће команде:

      [[email protected] ~]$ sudo yum update
    

Корак 2: Креирање Chrome спремишта

Додајте Google Chrome спремиште у систем. Креирајте датотеку `google-chrome.repo` унутар `/etc/yum.repos.d/` и додајте следеће детаље:

      [[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` команду за инсталацију Google Chrome-а на CentOS систему:

      [[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-а без главе

Пример покретања Chrome-а у режиму без главе на CentOS систему:

Узећемо пример снимања екрана. Команда испод покреће 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 techblog.co.rs techblog.co.rs     6 Sep 25 11:49 Desktop
      drwxr-xr-x. 2 techblog.co.rs techblog.co.rs     6 Sep 25 11:49 Documents
      drwxr-xr-x. 2 techblog.co.rs techblog.co.rs     6 Sep 25 11:49 Downloads
      -rw-rw-r--. 1 techblog.co.rs techblog.co.rs   180 Jan 22 13:05 google-chrome.repo
      -rw-------. 1 techblog.co.rs techblog.co.rs 146776 Jan 22 13:16 output.pdf
    

То је све о инсталацији Chrome-а на Ubuntu и CentOS и његовом покретању у Headless режиму.