各種パッケージのアップデート(macOS) - BYOD PC のセッティング(13)

はじめに

以前、LaTeX 環境の構築(macOS) - BYOD PC のセッティング(5) - hkob’s blogにて MacTeX のインストールを説明したが、その後 TeX Live が 2020 にアップデートされてしまった。こんな感じでインストール後に、ソフトウェアがアップデートされることも発生する。ここでは、MacTeX などを例にインストール後のアップデート方法について説明しておく。何でインストールしたかによって、アップデートの方法が異なるので、それぞれについて説明しておく。

アップデートスクリプトの作成

アップデートを一括で実施するスクリプトを後半に示す。ただし、ここでは個別のやり方を解説しておく。

1. brew コマンドでインストールしたもの (UNIX toolsなど)

brew のシステム自体は git で管理されているので、brew updated とすると、ソフトウェア一覧が更新される。その後、brew outdated とすると更新すべきパッケージ一覧が表示される。先日インストールしたばかりだから、すでにこんな感じでアップデート候補が表示されている。

hkob@BYOD-macOS ~> brew outdated
glib (2.64.2) < 2.64.2_1
gobject-introspection (1.64.1) < 1.64.1_1
harfbuzz (2.6.4) < 2.6.5
libffi (3.2.1) < 3.3
pixman (0.38.4) < 0.40.0

通常であれば、brew upgrade とするだけで自動的にアップデートされるのだが、gnuplot のインストール時に pango を手動インストールしてしまったので、そのままでは失敗してしまう。このあたりは後述するスクリプトで対応方法を示す。

2. brew cask コマンドでインストールしたもの (GUI アプリなど)

GUI アプリはアプリ自身に自動更新の仕組みを取り入れているものもある。brew cask ではそれらをアプリを除外して、アップデートすべきファイルを確認できる。先ほどと同様に確認すると以下のように mactex-no-gui がアップデート候補に上がっていることがわかる。

hkob@BYOD-macOS ~> brew cask outdated
mactex-no-gui (2019.0508) != 2020.0407

3. mas でインストールしたもの (App Store アプリ)

こちらは App Store のアプリで自動更新される。App Store 自体の自動更新をオンにしていれば、知らないうちにアップデートされていると思う。

上記を踏まえたアップデートスクリプトの作成

上記のように様々なシステムがあるので、これを一括で実施するスクリプトを作成してしまおうと思う。今後、自分で作成したコマンドを多く作ることがあるので、自分のフォルダの直下に「bin」フォルダを作成してする。

mkdir -p ~/bin

次に bin/update_brew.sh ファイルを編集する。先日説明した Visual Studio Code であれば、以下のようにすることでファイルを新規に作成してエディタ画面を開くことができる。

code ~/bin/update_brew.sh

以下のスクリプトを記載する。中身はほぼ上で説明した通りなので、コメントはいらないと思う。

#!/bin/sh

### Homebrew
# パッケージリストのアップデート
brew update
# 別にインストールした pango の削除(依存関係は無視)
brew uninstall --ignore-dependencies pango
# それ以外をアップグレード
brew upgrade
# 再度 pango をインストール
brew uninstall --ignore-dependencies pango
brew install iltommi/brews/pango

### Homebrew cask
# cask をアップグレード
brew cask upgrade

ターミナルに戻り、このスクリプトに実行属性をつける。

chmod +x ~/bin/update_brew.sh

次に作成した~/bin フォルダを実行可能パスに追加する。利用している shell によって記述内容は異なるが、ほとんどの学生が fish を利用しているものと思うので、fish のやり方を記述しておく。まず、フォルダを作成しておく。fish を使っていればできているはずだとは思うが念のため。-p オプションをつけているので、すでに作成済みであっても問題はない。

mkdir -p ~/.config/fish

エディタで ~/.config/fish/config.fish を開く。

code ~/.config/fish/config.fish

以下の記述を追加する。$PATH の部分には現在設定されているコマンド実行パスが展開されるので、この作業は PATH 環境変数の頭に ~/bin を追加するという意味になる。

set -gx PATH ~/bin $PATH

通常、このファイルは fish 起動時に自動的に読み込まれる。現在利用中の fish には影響しないので、強制的に読み込ませてみる。ここで、先頭の「.」は現在の fish にファイルを読み込ませるコマンドである。これだけでコマンドなので、後ろにスペースを記述することを忘れないこと。

. ~/.config/fish/config.fish

正しくパスが設定されたかどうかはprintenvコマンドで確認できる。/Users/アカウント名/bin が先頭に含まれていれば成功である。

hkob@BYOD-macOS ~> printenv PATH
/Users/hkob/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/TeX/texbin

スクリプトの実行

今回、MacTeX 2019 をインストールしてしまった人は、MacTeX が更新されているので、早速このスクリプトで更新してみる。

update_brew.sh

これで全てのパッケージが更新されたものと思う。MacTeX も更新されているので、LaTeX 環境の構築(macOS) - BYOD PC のセッティング(5) - hkob’s blogの tex live のパッケージ更新以降の作業を続けて実施して欲しい。

おわりに

pango が問題なくなればこのストリプトもかなり簡単になるのだが、しばらく直りそうもない。しばらくはこの体制が続くと思う。

hkob.hatenablog.com