初めに
ブラウザ互換性確認等で古いバージョンの Chromium/Chrome バイナリを使用したいことありますよね!
都度都度ビルドするの時間掛かって大変ですよね!
というわけで、古いバージョンの Chromium/Chrome バイナリを取得する方法です!
ここでは用途上 Chromium と Chrome は同じものとして扱って良い場合で話を進めます(とある JS 機能の実装有無確認等)。
簡単に Chromium と Chrome の差を wikipedia の Chromium のページ から抜粋しておきます。
このプロジェクトで開発されるChromiumのスナップショットは、Googleによるいくつかの追加機能を除いて、Google Chromeの最新ビルドと本質的に似ている[11]。Google ChromeにありChromiumにない代表的な機能要素は、Googleブランド、自動アップデート機能、クリックラップ契約(英語版)(利用許諾に「同意する」を押下することで承諾するもの)、RLZトラッキング機能、Adobe Flash Playerの同梱などがある。
手順まとめ
- Chrome Release から欲しいバージョンのバージョン番号をフルで知る
- omahaproxy から Position(コミット ID のようなもの)を知る
- continuous builds archive を開く
- 環境を選択(Linux / Mac / Win)し、フィルタに Position の数字を入力
- ダウンロードして実行!
例1 : M87 バイナリ
執筆時点最新の M88(88.0.4324.150)の一つ前のバージョン M87 のバイナリを手に入れてみましょう。
- Chrome Release から欲しいバージョンのバージョン番号をフルで知る
Chrome Release を遡り M87 のリリースを探します。
87.0.4280.141 と分かりました。
2 . omahaproxy から Position(コミット ID のようなもの)を知る
omahaproxy ページ下部の Tools の Version Information にバージョンを入力すると
Branch Base Position: 812852
と分かりました。
3 . continuous builds archive を開く
4 . 環境を選択(Linux / Mac / Win)し、フィルタに Position の数字を入力
環境を選びます。僕の場合は Linux_x64 です。
Branch Base Position の数字を「Filter」に入力します。
HIT しない場合は、数字を減らし、近い数字を探します。
5 . ダウンロードして実行!
chrome-linux.zip をダウンロードします。
https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/812859/
zip を解凍して chrome が実行ファイルです。
$ ls
ClearKeyCdm extensions nacl_irt_x86_64.nexe
MEIPreload icudtl.dat product_logo_48.png
chrome libEGL.so resources
chrome-wrapper libGLESv2.so resources.pak
chrome_100_percent.pak locales swiftshader
chrome_200_percent.pak nacl_helper v8_context_snapshot.bin
chrome_sandbox nacl_helper_bootstrap xdg-mime
crashpad_handler nacl_helper_nonsfi xdg-settings
$ ./chrome
起動しました!
例2 : 一番古いバージョン
一番古いバージョンの UI 見てみましょうか。
僕の手元の Ubuntu 16.04 で起動出来るもの、の前提で。
適当にメジャーバージョン10ずつ調べていきます。
Chrome Release の探し方その2
Chrome Release から古いバージョン探す時、ページ遡るの大変なので、右側の検索ボックスから探すのが楽です。
もしくはいきなり google で
site:chromereleases.googleblog.com chrome 50.0
等と検索しても OK です。
M50
M50 の頃は起動引数に --no-sandbox
付けないと起動出来ないですね。
付けて起動出来てもログにエラー出まくりますが、、まぁここでは主旨と違うので追いません。
$ ./chrome
[26607:26607:0222/171939:FATAL:browser_main_loop.cc(216)] Running without the SUID sandbox! See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md for more information on developing with the sandbox on.
#0 0x55ba3bd64b8e base::debug::StackTrace::StackTrace()
#1 0x55ba3bd77abb logging::LogMessage::~LogMessage()
#2 0x55ba3938e6ff content::BrowserMainLoop::EarlyInitialization()
#3 0x55ba39394fd4 content::BrowserMainRunnerImpl::Initialize()
#4 0x55ba3938dd76 content::BrowserMain()
#5 0x55ba3bd408e2 content::ContentMainRunnerImpl::Run()
#6 0x55ba3bd3f680 content::ContentMain()
#7 0x55ba37fd304a ChromeMain
#8 0x7fe0de08d840 __libc_start_main
#9 0x55ba37fd2f21 <unknown>
中止 (コアダンプ)
$ ./chrome --no-sandbox
[26665:26665:0222/172015:ERROR:browser_main_loop.cc(219)] Running without the SUID sandbox! See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md for more information on developing with the sandbox on.
[26665:26680:0222/172015:ERROR:web_database_backend.cc(56)] Cannot initialize the web database: 2
[26665:26698:0222/172015:ERROR:connection.cc(1919)] sqlite error 1, errno -2: table urls has 8 columns but 7 values were supplied, sql: INSERT INTO urls SELECT * FROM history.urls WHERE typed_count > 0
[26665:26698:0222/172015:ERROR:connection.cc(1919)] sqlite error 1, errno -2: no such column: u.favicon_id, sql: INSERT OR IGNORE INTO urls SELECT u.id, u.url, u.title, u.visit_count, u.typed_count, u.last_visit_time, u.hidden, u.favicon_id FROM history.urls u JOIN history.keyword_search_terms kst WHERE u.typed_count = 0 AND u.id = kst.url_id
そういえば昔はタブの形が台形でしたね。
M40
M42 以下は Position の数字が小さくなり(3桁になり)、 continuous builds archive では探せません。
この方法で探せるのは M43 まで、とわかりました。
M40 : Position 445
M42 : Position 457
M43 : Position 323860
M43 の見た目は M50 と同じなので略。
その他
この手順、単に
https://www.chromium.org/getting-involved/download-chromium
のページの日本語訳ですw