2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Chromiumをdocker上でビルド・実行する

Last updated at Posted at 2019-07-10

概略

Chromiumのソースコードをクローンしてコンパイルして実行する。

(2023/04/28追記): 2019年の記事のため、内容が古くなっています。ひょっとしたら動かないかもしれません。末尾により実用的な docker 環境構築に関する情報を記載しています。

環境

ubuntu 19.04

ただし、chromiumの推奨開発環境は

Most development is done on Ubuntu (currently 16.04, Xenial Xerus).

との事なので、dockerで擬似的に16.04の環境を作ることにする。

install docker

dockerとは?→
https://knowledge.sakura.ad.jp/13265/

docker.io を apt-get して docker をインストール。

sudo apt install docker

公式のubuntuのイメージファイルが存在するので、環境構築は困らない。
https://hub.docker.com/_/ubuntu

16.04のタグがついたdockerイメージをpull docker pull ubuntu:16.04 して取得。

あとは、docker run -it imagefilename するだけで起動する。

が、今回はGUIアプリを実行しようとしているので、ホストPCのXサーバの情報を渡して起動する必要がある。
その起動コマンドは、以下のようになる。
ソケットの共有と環境変数のコピーを行っているよう。

$ sudo docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix ubuntu:16.04

また、コンテナからホストへXサーバの接続を許可するために、ホスト側で次のコマンドを打つ。

$ xhost local:

この辺りの話は下記URLに詳しく書かれています。

build chromium

次の手順を進めるだけ。

とりあえず apt update しておく。

# apt update
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]
Get:2 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
Get:3 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [892 kB]
...

gitをインストール

# apt install git
...
# git --version
git version 2.7.4

作業用ディレクトリを作り、ツールを git clone する

/ # cd ~
~ # mkdir work
~ # cd work
~/work # git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

パスを通しておく

# PATH=$PATH:`pwd`"/depot_tools"
# echo export PATH=$PATH:`pwd`"/depot_tools" >> ~/.bashrc 

chromium を拾ってくる・・・pythonが無い

~/work# mkdir chromium
~/work# cd chromium/
~/work/chromium# fetch --nohooks chromium
/root/work/depot_tools/fetch: line 8: exec: python: not found
apt install python

もう一度実行するが・・・ curl が無い

...
Your platform is missing a supported fetch command. Please use your package manager to install one before continuing:

  curl
  wget
...
apt install curl

途中で止めてしまったので、いろいろ汚くなってしまった。一旦消す。

~/work/chromium# fetch --nohooks chromium
Running: gclient root
Your current directory appears to already contain, or be part of, 
a checkout. "fetch" is used only to get new checkouts. Use 
"gclient sync" to update existing checkouts.

Fetch also does not yet deal with partial checkouts, so if fetch
failed, delete the checkout and start over (crbug.com/230691).

~/work/chromium# ls
_gclient_src_kXTDYS

~/work/chromium# rm * -rf

~/work/chromium# fetch --nohooks chromium
Running: gclient root
Your current directory appears to already contain, or be part of, 
a checkout. "fetch" is used only to get new checkouts. Use 
"gclient sync" to update existing checkouts.

Fetch also does not yet deal with partial checkouts, so if fetch
failed, delete the checkout and start over (crbug.com/230691).

~/work/chromium# ls -a
.  ..  .gclient

~/work/chromium# rm .gclient 

~/work/chromium# fetch --nohooks chromium

lsb-release が無い

# cd src
# ./build/install-build-deps.sh
ERROR: lsb_release not found in $PATH

apt install lsb-release

sudo が無い

# ./build/install-build-deps.sh
./build/install-build-deps.sh: line 132: sudo: command not found

apt install sudo

以下、まったりタイムです

# ./build/install-build-deps.sh
# gclient runhooks
# gn gen out/Default
# autoninja -C out/Default chrome

execute chromium

chromiumの実行です。

out/Default/chrome
Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

rootで起動しようとすると、--no-sandbox オプションが必須になる。
アカウントを新規作成しても良いですが、面倒なので。

out/Default/chrome --no-sandbox

これでブラウザが表示されるはず。

もし

Gtk: cannot open display: 

が出たら、Docker起動時のオプション辺りを見直してください。

実用的な方法

上の方法は、dockerイメージからコンテナに入り、常にその中でchromiumのクローン・ビルドを行っていました。
これは、「コンテナはエフェメラル(短命)であるべき」に沿っていない内容となります。

必要なソフトウェアはchromiumのバージョンに依存するため、完璧な方法は難しいですが、「コンテナはエフェメラル(短命)であるべき」に従うのであれば、以下のような改善案があります。

  • 必要なソフトウェアをインストールしたdockerイメージをdockerfileで作る
    • ./build/install-build-deps.shを取得する処理が面倒そう
  • dockerコンテナ作成時に作業ディレクトリをマウントし、ソースコードをコンテナ外で管理する

また別の記事でまとめたいですね

(2023/04/28追記)
簡単なDocker環境構築用ツールを作成・公開しました。「実用的な方法」の項目に従ったものになります。
https://github.com/buyoh/chromium-builder?tab=readme-ov-file#hands-on

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?