Linux版のEdgeが公開。インストールと検索エンジン変更とフォント変更とリポジトリ管理方法を確認

Posted by 雅楽斎 on Friday, October 23, 2020

TOC

開発の公表から11ヶ月、ついに一般向けに公開

EdgeHTMLではなくレンダリングエンジンにBlinkを使用した、ChromiumベースのEdgeブラウザについて、MicrosoftがWindows版とmacOS版を2020年1月に公開予定であると発表した日、Linux版のEdgeブラウザも公開すると公表していました。2019年11月のことです。

Microsoft、EdgeのLinux版もリリースすると表明

Microsoftは11月4日(米国時間)、Windows版のMicrosoft EdgeとmacOS版のMicrosoft Edgeを2020年1月を目処に公開すると発表した。その際、Linux版について言及していなかったが、Microsoft IgniteでLinux版の公開について明言した。

月日は流れ、2020年の4月にはLinux版のダウンロードについてサイトにComing soonと書かれており1、soonは一般的に「もうすぐ」と翻訳される単語なのでいつ公開されるのかワクワクして待っておりましたが、Microsoftのsoonは6ヶ月後でした。

配布形式

Microsoft Edge Insider Channels をダウンロード

現時点でのLinux向けEdgeはDevチャンネルのみとなっており、配布形式は

  • deb(Debian/Ubuntu)
  • rpm(Fedora/openSUSE)

となっています。アーキテクチャはとりあえずamd64のみとなっているように見えます(後述しますがarmhf、arm64等も対応可能なパッケージングにはなっています)

ダウンロード方法

上から見ていくとdebファイルまたはrpmファイルをダウンロードするリンクがあるので、そこからダウンロードしたものをインストールするのが手軽ですが、リモートのPCにインストールしたい場合等はページ下部に手順が書かれていますので、以下に引用します。

Debian/Ubuntu

$ ## Setup
$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
$ sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list'
$ sudo rm microsoft.gpg
$ ## Install
$ sudo apt update
$ sudo apt install microsoft-edge-dev

Fedora

$ ## Setup
$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
$ sudo dnf config-manager --add-repo https://packages.microsoft.com/yumrepos/edge
$ sudo mv /etc/yum.repos.d/packages.microsoft.com_yumrepos_edge.repo /etc/yum.repos.d/microsoft-edge-dev.repo
$ ## Install
$ sudo dnf install microsoft-edge-dev

openSUSE

$ ## Setup
$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
$ sudo zypper ar https://packages.microsoft.com/yumrepos/edge microsoft-edge-dev
$ ## Install
$ sudo zypper refresh
$ sudo zypper install microsoft-edge-dev

debファイルをダウンロードしてのインストール(Ubuntu 20.04で確認)

私の場合は上のページに気付かずに手順に気付かずにdebファイルをダウンロードしてインストールしたので、その手順を記載します。

ブラウザで https://www.microsoftedgeinsider.com/ja-jp/ へアクセスします。

「(Linux(.deb)) Debian / Ubuntu」ボタンをクリックすると色々画面が流れていくので先に進みます。

画面を進めていくとdebファイルのダウンロードが始まります。コマンドでインストールしましたが、ブラウザでダウンロードしたファイル microsoft-edge-dev_88.0.673.0-1_amd64.deb はhogehogeユーザーのDownloadにある前提です。

# dpkg -i ~hogehoge/Download/microsoft-edge-dev_88.0.673.0-1_amd64.deb 
以前に未選択のパッケージ microsoft-edge-dev を選択しています。
(データベースを読み込んでいます ... 現在 428740 個のファイルとディレクトリがインストールされています。)
microsoft-edge-dev_88.0.673.0-1_amd64.deb を展開する準備をしています ...
microsoft-edge-dev (88.0.673.0-1) を展開しています...
microsoft-edge-dev (88.0.673.0-1) を設定しています ...
update-alternatives: /usr/bin/microsoft-edge (microsoft-edge) を提供するために自動モードで /usr/bin/microsoft-edge-dev を使います
man-db (2.9.1-1) のトリガを処理しています ...
desktop-file-utils (0.24-1ubuntu3) のトリガを処理しています ...
gnome-menus (3.36.0-1ubuntu1) のトリガを処理しています ...
bamfdaemon (0.5.3+18.04.20180207.2-0ubuntu2) のトリガを処理しています ...
Rebuilding /usr/share/applications/bamf-2.index...
mime-support (3.64ubuntu1) のトリガを処理しています ...
menu (2.1.47ubuntu4) のトリガを処理しています ...

パッケージのインストールが終わるとメニューにインターネット→Microsoft Edge (dev)が登録されるので、実行します。

Linuxらしからぬデスクトップ全画面でようこそが始まります。個人的には凄く嫌いです。ブラウザデータをMicrosoftに送信するチェックも当然外します。

Edgeブラウザではおなじみのスタートページのデザイン選択です。どれでも良いと思います。

スタートページはこんな感じになりました。

設定の変更

検索エンジンの変更

私自身はEdgeを使う場合はデフォルトのBingにすることが多いのですが、検索結果の網羅性等でGoogleを使う人も多いと思います。検索エンジンの変更手順です。

右上の…をクリックして、⚙設定を選びます。

設定のメニューから プライバシー、検索、サービス を選び、 アドレス バーと検索 に進みます。

アドレス バーで使用する検索エンジンを使いたい検索エンジンにすると、以降の検索結果に反映されます。

ダークテーマ

Edgeは最初からグレーがかった白を使っているのでさほど需要はないかもしれませんが、ブラウザのテーマとしてダークテーマを設定できるので変更してみます。

設定を開いた状態で外観を選択、ブラウザーのカスタマイズにある規定のテーマからダークを選ぶとダークテーマになります。

フォントの変更

Windows版のEdgeがリリースされた際の漢字フォントがデフォルトでSimSunになっていたというようなオチはありませんが、指定したフォントを使いたい場合の変更手順です。Windows版と同様です。

Chromium版Edgeでのフォントの変更と検索エンジンをGoogleに変更

設定で外観を選び、右の下の方にあるフォントの中のフォントのカスタマイズを選択します。

変更したいフォントを選択します。セリフ(鱗)は明朝体、サンセリフ(鱗がない)はゴシック体ですね。

パッケージ内容を少し深堀り

ここからはLinux用のEdgeのパッケージの内容をもう少し詳細に見ます。

実際のインストール先

システムから見たエントリーポイントは/usr/bin/microsoft-edgeですが、実際のインストール先はどこでしょうか。

$ which microsoft-edge
/usr/bin/microsoft-edge
$ ls -l /usr/bin/microsoft-edge
lrwxrwxrwx 1 root root 32 10月 22 18:49 /usr/bin/microsoft-edge -> /etc/alternatives/microsoft-edge
$ ls -l /etc/alternatives/microsoft-edge 
lrwxrwxrwx 1 root root 27 10月 22 18:49 /etc/alternatives/microsoft-edge -> /usr/bin/microsoft-edge-dev
$ ls -l /usr/bin/microsoft-edge-dev 
lrwxrwxrwx 1 root root 44 10月 16 13:02 /usr/bin/microsoft-edge-dev -> /opt/microsoft/msedge-dev/microsoft-edge-dev

ということで、実物は/opt/microsoft/msedge-dev/にインストールされます。また、microsoft-edgeのalternativesとしてインストールされるので、将来的にStable/Beta/Dev/Canaryを同居させてコマンドで切り替えることができるようになっています。

$ update-alternatives --config microsoft-edge
リンクグループ microsoft-edge に 1 つの alternative のみがあります (/usr/bin/microsoft-edge が提供): /usr/bin/microsoft-edge-dev
設定は行いません。

複数のEdgeを同居させた場合は、直接/usr/bin/microsoft-edge-devを実行すればDevチャンネルのEdgeを実行させられます。

microsoft-edge-dev_88.0.673.0-1_amd64.debの内容ですが、通常あまりパッケージに含めないファイルが入っています。

/etc/cron.daily/microsoft-edge-dev

日次で動かすcronからの実行ファイルであるシェルスクリプトが入っています。処理の概要は

  • 公開鍵ファイルのインポート
  • apt-lineの設定

なので、1日1回これらに変更があるかチェックすることになります。この方式あまり好きではなくて、パッケージの中に入れられるとこのファイルを動かしてもパッケージの更新のタイミングで元に戻るんですよね。

また、get_lib_dir関数で割と多様なアーキテクチャに対応できるように書かれていますが、現時点ではこの関数を呼んでいる箇所がないので実行されません。

ファイルの中身は以下です。

#!/bin/sh
#
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This script is part of the microsoft-edge-dev package.
#
# It creates the repository configuration file for package updates, and it
# monitors that config to see if it has been disabled by the overly aggressive
# distro upgrade process (e.g.  intrepid -> jaunty). When this situation is
# detected, the respository will be re-enabled. If the respository is disabled
# for any other reason, this won't re-enable it.
#
# This functionality can be controlled by creating the $DEFAULTS_FILE and
# setting "repo_add_once" and/or "repo_reenable_on_distupgrade" to "true" or
# "false" as desired. An empty $DEFAULTS_FILE is the same as setting both values
# to "false".

# PUMP: DO NOT MERGE UPSTREAM CHANGES

# System-wide package configuration.
DEFAULTS_FILE="/etc/default/microsoft-edge-dev"

# sources.list setting for microsoft-edge-dev updates.
REPOCONFIG="deb [arch=amd64] http://packages.microsoft.com/repos/edge/ stable main"
REPOCONFIGREGEX="deb (\[arch=[^]]*\bamd64\b[^]]*\][[:space:]]*) https?://packages.microsoft.com/repos/edge/ stable main"

# Microsoft-specific packaging changes
ms_key_url=https://packages.microsoft.com/keys/microsoft.asc
ms_key_hash=EB3E94ADBE1229CF
# rpm-only
ms_key_package=gpg-pubkey-be1229cf-5631588c

# ms_key_* defined in variables.include

APT_GET="`which apt-get 2> /dev/null`"
APT_CONFIG="`which apt-config 2> /dev/null`"

SOURCES_PREAMBLE="### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.\n"

# Install the repository/package signing keys, if they aren't already.
# (see also: https://packages.microsoft.com/)
install_key() {
  APT_KEY="`which apt-key 2> /dev/null`"
  if [ ! -x "$APT_KEY" ]; then
    return
  fi

  MS_NEED_KEYS=0

  # packages.microsoft.com
  "$APT_KEY" export $ms_key_hash 2>&1 | \
    grep -q -- "-----BEGIN PGP PUBLIC KEY BLOCK-----"
  if [ $? -ne 0 ]; then
    MS_NEED_KEYS=1
  fi

  if [ -n "$NEED_KEYS" ]; then
    echo "Error: NEED_KEYS, is set. Only MS_NEED_KEYS should be set."
    echo "This might be due to a bad merge."
    exit 1
  fi

  # Note for future merges: the PGP block below was intentionally
  # changed from a Google key to a Microsoft (packages.microsoft.com)
  # key.

  if [ $MS_NEED_KEYS -eq 1 ]; then
    "$APT_KEY" add - >/dev/null 2>&1 <<KEYDATA
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.7 (GNU/Linux)

mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT
LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV
7aVWsCzUAF+eb7DC9fPuFLEdxmOEYoPjzrQ7cCnSV4JQxAqhU4T6OjbvRazGl3ag
OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j
H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr
M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs
ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATUEEwEC
AB8FAlYxWIwCGwMGCwkIBwMCBBUCCAMDFgIBAh4BAheAAAoJEOs+lK2+EinPGpsH
/32vKy29Hg51H9dfFJMx0/a/F+5vKeCeVqimvyTM04C+XENNuSbYZ3eRPHGHFLqe
MNGxsfb7C7ZxEeW7J/vSzRgHxm7ZvESisUYRFq2sgkJ+HFERNrqfci45bdhmrUsy
7SWw9ybxdFOkuQoyKD3tBmiGfONQMlBaOMWdAsic965rvJsd5zYaZZFI1UwTkFXV
KJt3bp3Ngn1vEYXwijGTa+FXz6GLHueJwF0I7ug34DgUkAFvAs8Hacr2DRYxL5RJ
XdNgj4Jd2/g6T9InmWT0hASljur+dJnzNiNCkbn9KbX7J/qK1IbR8y560yRmFsU+
NdCFTW7wY0Fb1fWJ+/KTsC4=
=J6gs
-----END PGP PUBLIC KEY BLOCK-----
KEYDATA
  fi
}

# Set variables for the locations of the apt sources lists.
find_apt_sources() {
  eval $("$APT_CONFIG" shell APT_SOURCESDIR 'Dir::Etc::sourceparts/d')
}

# Update the Microsoft repository if it's not set correctly.
# Note: this doesn't necessarily enable the repository, it just makes sure the
# correct settings are available in the sources list.
# Returns:
# 0 - no update necessary
# 2 - error
update_bad_sources() {
  if [ ! "$REPOCONFIG" ]; then
    return 0
  fi

  find_apt_sources

  SOURCELIST="$APT_SOURCESDIR/microsoft-edge-dev.list"
  # Don't do anything if the file isn't there, since that probably means the
  # user disabled it.
  if [ ! -r "$SOURCELIST" ]; then
    return 0
  fi

  # Basic check for active configurations (non-blank, non-comment lines).
  ACTIVECONFIGS=$(grep -v "^[[:space:]]*\(#.*\)\?$" "$SOURCELIST" 2>/dev/null)

  # Check if the correct repository configuration is in there.
  REPOMATCH=$(grep -E "^[[:space:]#]*\b$REPOCONFIGREGEX\b" "$SOURCELIST" \
    2>/dev/null)

  # Check if the correct repository is disabled.
  MATCH_DISABLED=$(echo "$REPOMATCH" | grep "^[[:space:]]*#" 2>/dev/null)

  # Now figure out if we need to fix things.
  BADCONFIG=1
  if [ "$REPOMATCH" ]; then
    # If it's there and active, that's ideal, so nothing to do.
    if [ ! "$MATCH_DISABLED" ]; then
      BADCONFIG=0
    else
      # If it's not active, but neither is anything else, that's fine too.
      if [ ! "$ACTIVECONFIGS" ]; then
        BADCONFIG=0
      fi
    fi
  fi

  if [ $BADCONFIG -eq 0 ]; then
    return 0
  fi

  # At this point, either the correct configuration is completely missing, or
  # the wrong configuration is active. In that case, just abandon the mess and
  # recreate the file with the correct configuration. If there were no active
  # configurations before, create the new configuration disabled.
  DISABLE=""
  if [ ! "$ACTIVECONFIGS" ]; then
    DISABLE="#"
  fi
  printf "$SOURCES_PREAMBLE" > "$SOURCELIST"
  printf "$DISABLE$REPOCONFIG\n" >> "$SOURCELIST"
  if [ $? -eq 0 ]; then
    return 0
  fi
  return 2
}

# Add the Microsoft repository to the apt sources.
# Returns:
# 0 - sources list was created
# 2 - error
create_sources_lists() {
  if [ ! "$REPOCONFIG" ]; then
    return 0
  fi

  find_apt_sources

  SOURCELIST="$APT_SOURCESDIR/microsoft-edge-dev.list"
  if [ -d "$APT_SOURCESDIR" ]; then
    printf "$SOURCES_PREAMBLE" > "$SOURCELIST"
    printf "$REPOCONFIG\n" >> "$SOURCELIST"
    if [ $? -eq 0 ]; then
      return 0
    fi
  fi
  return 2
}

# Remove our custom sources list file.
# Returns:
# 0 - successfully removed, or not configured
# !0 - failed to remove
clean_sources_lists() {
  if [ ! "$REPOCONFIG" ]; then
    return 0
  fi

  find_apt_sources

  rm -f "$APT_SOURCESDIR/microsoft-edge-dev.list" \
        "$APT_SOURCESDIR/microsoft-edge-dev-dev.list"
}

# Detect if the repo config was disabled by distro upgrade and enable if
# necessary.
handle_distro_upgrade() {
  if [ ! "$REPOCONFIG" ]; then
    return 0
  fi

  find_apt_sources
  SOURCELIST="$APT_SOURCESDIR/microsoft-edge-dev.list"
  if [ -r "$SOURCELIST" ]; then
    REPOLINE=$(grep -E "^[[:space:]]*#[[:space:]]*$REPOCONFIGREGEX[[:space:]]*# disabled on upgrade to .*" "$SOURCELIST")
    if [ $? -eq 0 ]; then
      sed -i -e "s,^[[:space:]]*#[[:space:]]*\(.*\)[[:space:]]*# disabled on upgrade to .*,\1," \
        "$SOURCELIST"
      LOGGER=$(which logger 2> /dev/null)
      if [ "$LOGGER" ]; then
        "$LOGGER" -t "$0" "Reverted repository modification: $REPOLINE."
      fi
    fi
  fi
}

DEFAULT_ARCH="amd64"

get_lib_dir() {
  if [ "$DEFAULT_ARCH" = "i386" ]; then
    LIBDIR=lib/i386-linux-gnu
  elif [ "$DEFAULT_ARCH" = "amd64" ]; then
    LIBDIR=lib/x86_64-linux-gnu
  elif [ "$DEFAULT_ARCH" = "armhf" ]; then
    LIBDIR=lib/arm-linux-gnueabihf
  elif [ "$DEFAULT_ARCH" = "arm64" ]; then
    LIBDIR=lib/aarch64-linux-gnu
  elif [ "$DEFAULT_ARCH" = "mipsel" ]; then
    LIBDIR=lib/mipsel-linux-gnu
  elif [ "$DEFAULT_ARCH" = "mips64el" ]; then
    LIBDIR=lib/mips64el-linux-gnuabi64
  else
    echo Unknown CPU Architecture: "$DEFAULT_ARCH"
    exit 1
  fi
}

## MAIN ##
DEFAULTS_FILE="/etc/default/microsoft-edge-dev"
if [ -r "$DEFAULTS_FILE" ]; then
  . "$DEFAULTS_FILE"
fi

install_key

if [ "$repo_add_once" = "true" ]; then
  create_sources_lists
  RES=$?
  # Sources creation succeeded, so stop trying.
  if [ $RES -ne 2 ]; then
    sed -i -e 's/[[:space:]]*repo_add_once=.*/repo_add_once="false"/' "$DEFAULTS_FILE"
  fi
else
  update_bad_sources
fi

if [ "$repo_reenable_on_distupgrade" = "true" ]; then
  handle_distro_upgrade
fi

/etc/apt/sources.list.d/microsoft-edge-dev.list

apt-lineのファイルです。内容は以下です。

### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
deb [arch=amd64] http://packages.microsoft.com/repos/edge/ stable main

これらのファイルの狙い

cron.dailyに置かれるファイルは1日1回実行されるので、Microsoft側の都合でサーバーのURL(やおそらく公開鍵署名も)が変わったりした場合に24時間以内に新しい設定に追従させることが可能です。apt-lineは手で書くと何かと間違えることがあるので、そういったミスを防げるという意味では有用です。

Google Chromeブラウザはブラウザの自動更新が特徴になっていますが、現時点のLinux用のEdgeではAPT_GETとしてapt-getコマンドのパスを変数に格納しているものの、この変数を使用していないので、自動的に更新が走ることはなく、aptの実行時に更新が反映されるようになっています。

ただ、更新するかしないかは自分で決めたい派なので、将来的にソースが公開されたらUbuntu側でEdgiumとかでパッケージングしてほしいなとは思っています。

まとめ

Google Chrome/Chromiumは開発スピードが超早いソフトなので、「メンテナンスされているLinux用のChromiumベースのブラウザ」としてのEdgeはそれだけでも価値があると考えます。Edge自体の拡張機能はさほど充実しているとは言えないかもしれません(Windows10上のMicrosoft Storeと似た雰囲気です)がChromeウェブストアから拡張機能をインストールできるので問題ないとも言えます。

ただ、現時点ではDevチャンネルのみの配布ですし、Edgeブラウザの特徴であるMicrosoftアカウントを使った同期機能も非対応です。

Stableチャンネルが対応してこのあたりの整備が進んできたら本格的に使ってみてもいいかもしれません。というのが今の時点のLinux向けのEdgeの評価になるかと思います。

スポンサーリンク


comments powered by Disqus