アプリインストール(Xquartz, Google Chrome, MacTeX) - M1 MacBook Air インストール覚書(14)

はじめに

とりあえずここまでの修正を commit - push しようとしたら、bitbucket に蹴られました。そういえば ssh 鍵をまだ登録していませんでした。とりあえず、以下の作業で作成した鍵を Bitbucket に登録してきます。

ssh-keygen
cat ~/.ssh/id_rsa.pub | pbcopy

また bootstrap.sh で最初に https で clone しているので、.git/config の該当行を ssh アクセスに修正する必要もありました。

[remote "origin"]
        url = git@bitbucket.org:hkob/dotfiles.git

これで push できました。これでどんどんアプリを追加しています。最初は他から使われるものを中心に入れていきます。

アプリのインストールの続き

引き続きインストールを続けます。

Xquartz

Homebrew も外部アプリに依存しないという指針で動くようなので、そもそも X11 を使うものはほとんどなくなったのですが、念のため Xquartz も入れておきます。多分タンスの肥やしになるでしょうが。

cask "xquartz"

Cask のインストールはほとんど問題になることはなさそうです。インストールされたものは、当然ながら Intel です。今後の対応も期待が薄そうですね。

f:id:hkob:20201217112954p:plain
Xquartz info

Google chrome

Safari だとはてなブログの編集開始が面倒なので、先に Google Chrome をインストールします。

cask "google-chrome"

これはちゃんと Universal になっています。

f:id:hkob:20201217121134p:plain
Google Chrome info

Google については複数のアカウントを保持しています。この中で、G Suite はアクセス制限が厳しいので、これをデフォルトアカウントにします。パスワード入力画面で、メニューバーの 1Password をクリックすると「1Password を Chrome に追加」が選べます。

f:id:hkob:20201217121545p:plain
1Password を Chrome に追加

クリックすると拡張機能インストールページにつながりました。

f:id:hkob:20201217121752p:plain
拡張機能のインストール

Install をクリックすると chrome ウェブストアにつながりました。「Chrome に追加」でインストールします。これで1Password が使えるようになりました。ただ、それを使ってGoogle にログインしたらその他の機能拡張も同期しました。先にログインしてしまえばよかったですね。

Mac TeX

他に影響がでない Cask で急ぎで必要なものということで、次に MacTeX をインストールします。MacTeX 2020 はまだ Intel binary なのですが、Universal のパッケージも別に用意されています。https://oku.edu.mie-u.ac.jp/~okumura/macosx/m1.html:奥村先生の M1 Mac のページを参考に、バイナリだけ置き換えることにします。とりあえず、cask では "mactex-no-gui" をインストールしておきます。

cask "mactex-no-gui"

ダウンロード終了後インストールしようとしたところで、Ghostscript の依存関係で跳ねられました。ということで、ghostscript を先に build-from-source でインストールします。

brew "ghostscript", args: ["build-from-source"]
cask "mactex-no-gui"

Homebrew のページではまだ M1 ready 表示になっていなかったのですが、無事にインストールできたようです。これで mactex-no-gui も無事にインストールが完了しました。

続いて、奥村先生のところにある対応を追加します。手順通りにすると Universal binary が /usr/local/texlive/2020/bin/custom に入るようなので、/Library/TeX/texbin に通されているパスを変更変更する必要があります。素直に考えるとここに設定されているシンボリックリンクを差し替えるのがいいのでしょうが、冪等性を確保するために、/etc/paths.d のファイルを差し替えることにしました。ここにある TeX というファイルを消して、M1TeX というファイルを差し替えることにします。少し冗長かもしれませんが、こんな感じに設定しました。

# MacTeX を Universal binary に差し替え
#   See: https://oku.edu.mie-u.ac.jp/~okumura/macosx/m1.html
if is_arm; then
  if [ ! -f "/etc/paths.d/M1TeX" ]; then
    echo "Replace Intel TeX binaries to universal ones ..."
    curl -o MacTeX-2020-Universal.pkg http://www.tug.org/mactex/MacTeX-2020-Universal.pkg
    pkgutil --expand /tmp/MacTeX-2020-Universal.pkg /tmp/hoge
    pax -rz -f /tmp/hoge/MacTeX-2020-Universal-Start.pkg/Payload
    sudo mv usr/local/texlive/2020/bin/custom /usr/local/texlive/2020/bin/
    rm -rf usr /tmp/hoge MacTeX-2020-Universal.pkg
    sudo rm -f /etc/paths.d/TeX
    echo /usr/local/texlive/2020/bin/custom > M1TeX
    sudo mv M1TeX /etc/paths.d
    echo
    echo "Please exec ./bootstrap.sh again in $DOTPATH after opening new terminal."
    exit 1
  fi 
fi

bootstrap.sh が止まったところで、新しいターミナルを開いて PATH を確認すると正しく設定されていることがわかります。また、再度実行しても置き換え処理が実行されないことも確認できました。

hkob@hM1Air ~ % printenv PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/texlive/2020/bin/custom:/Library/Apple/usr/bin

platex コマンドがちゃんと Universal binary になっていることを file で確認しました。

hkob@hM1Air ~ % file `which platex`
/usr/local/texlive/2020/bin/custom/platex: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64]
/usr/local/texlive/2020/bin/custom/platex (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/local/texlive/2020/bin/custom/platex (for architecture arm64):  Mach-O 64-bit executable arm64

せっかく MacTeX の差し替えまでできたので、TeX Live を最新版まであげる処理まで実行しておくことにします。ここは時間かかりそうなので、放置しておくことにします。16:14現在でバッテリーは残り 38% まで落ちました。本当に1日バッテリーが持ちそうですね。

# MacTeX (TeX Live) のアップデート
echo "Updating TeX Live library ..."
TLMGR_REPOSITORY=http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet

sudo tlmgr option repository $TLMGR_REPOSITORY
sudo tlmgr update --self --all --no-persistent-downloads

exit # ここで止める

長くなったのでこの記事はここまでにします。と書いたところで、放置していた tlmgr がエラーになっていたのに気づきました。

/usr/local/texlive/2020/bin/custom/tlmgr: only MacOSX is supported, not darwin 11.1  (from sw_vers -productVersion: 11.1)
tlmgr: setting default package repository to http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet
tlmgr: updating /usr/local/texlive/2020/tlpkg/texlive.tlpdb
/usr/local/texlive/2020/bin/custom/tlmgr: only MacOSX is supported, not darwin 11.1  (from sw_vers -productVersion: 11.1)
tlmgr: package repository http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet (not verified: gpg unavailable)
tlmgr: saving backups to /usr/local/texlive/2020/tlpkg/backups
TLPDB::_install_package: unsupported container format xz
tlmgr: Installation of new version of texlive.infra failed, trying to unwind.
[1/1, ??:??/??:??] update: texlive.infra [423k] (54630 -> 57132) ... tlmgr: Restoring old package state succeeded.
done
tlmgr: action update returned an error; continuing.
tlmgr: package log updated: /usr/local/texlive/2020/texmf-var/web2c/tlmgr.log
tlmgr: An error has occurred. See above messages. Exiting.

調べたところ、TeX Forumの記事にひっかかりました。cask でインストールするものが 4 月版で Big Sur に対応していないためでした。この問題は Intel Mac でも同じなので、tlmgr の処理の前に TLUtils.pm の差し替え処理を記載します。これも冪等性を担保したいので、TLUtils.pm を TLUtils.pm.orig とバックアップを取ることにします。このファイルがある時には、処理を差し替え処理をスキップすることにします。該当部分は以下のようになりました。

# MacTeX (TeX Live) のアップデート
echo "Updating TeX Live library ..."
TLMGR_REPOSITORY=http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet

TLUTILS_PM=/usr/local/texlive/2020/tlpkg/TeXLive/TLUtils.pm
TLUTILS_PM_ORIG=${TLUTILS_PM}.orig
                
if [ ! -f $TLUTILS_PM_ORIG ]; then
  echo "Replace $TLUTILS_PM for Big Sur"
  curl -o TLUtils.pm https://tug.org/svn/texlive/trunk/Master/tlpkg/TeXLive/TLUtils.pm?view=co
  sudo mv $TLUTILS_PM $TLUTILS_PM_ORIG
  sudo mv TLUtils.pm $TLUTILS_PM
  echo
fi

実行すると正しく tlmgr のアップデートが進みました。今度こそ放置します。

Updating TeX Live library ...
Replace /usr/local/texlive/2020/tlpkg/TeXLive/TLUtils.pm for Big Sur
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  139k    0  139k    0     0  61029      0 --:--:--  0:00:02 --:--:-- 61002

tlmgr: setting default package repository to http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet
tlmgr: updating /usr/local/texlive/2020/tlpkg/texlive.tlpdb
tlmgr: package repository http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet (not verified: gpg unavailable)
tlmgr: saving backups to /usr/local/texlive/2020/tlpkg/backups
[1/1, ??:??/??:??] update: texlive.infra [423k] (54630 -> 57132) ... done
tlmgr: Restarting to complete update ...
tlmgr: package repository http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet (not verified: gpg unavailable)
tlmgr: saving backups to /usr/local/texlive/2020/tlpkg/backups
[  1/793] auto-remove: einfuehrung2 ... done
[  2/793] auto-remove: latex-tabellen ... done
[  3/793] auto-remove: latex-bib-ex ... done
[  4/793] auto-remove: updmap-map ... done
[  5/793] auto-remove: einfuehrung ... done
[  6/793] auto-remove: presentations ... done
[  7/793] auto-remove: oops ... done
[  8/793] auto-remove: latex-referenz ... done

今度こそ、この記事を終了します。

次の記事: アプリインストール(Alfred, Visual Studio Code - Insiders) - M1 MacBook Air インストール覚書(15) - hkob’s blog

前の記事: アプリインストール(1Password, mas) - M1 MacBook Air インストール覚書(13) - hkob’s blog

hkob.hatenablog.com