63 macOS Catalina → Big Sur アップデート (MacPorts 更新)

2月19日、私にとっての入試業務が終わった。さあ、アップデートの季節到来だ。


実は、すでに Catalina → Big Sur はやったことがあるが、 それは購入直後の MacBook の話だったので、 特に何の問題もなかった。


今回は既にバリバリ使っている MacBook. これはおっかなくて、 学期中に OS 更新をする気になれなかった。 待ちに待った春休み、ということになる。 これからやってみよう。


macOS 自体のアップデート (11.2.1 20D75 になった) には何の問題もなかった。


Xcode Version 12.4 (12D4e) はアップデートする必要がないようだった。


次は MacPorts. これは面倒かもしれない。


Migrating MacPorts after a major operating system upgrade or from one computer to another に従って作業するという手もある。


どうしようかな。今日はまっさらにしてからインストールし直ししてみる。

MacPorts のアップデート Installing MacPorts から Big Sur 用のパッケージ MacPorts-2.6.4_1-11-BigSur.pkg を入手する。

ダブルクリックして実行する。

MacBook Pro (13-inch, 2019, Four Thunderbolt 3 ports) でやったところ。 1分程度で終了した。

古いものをお掃除する。
sudo port -fp uninstall installed
sudo rm -rf /opt/local

(ところで、 “Migrating a MacPorts installation” の 2.4. Uninstall によると、 色々なディレクトリィを削除することになっているが、 少なくとも私の場合は、存在しないものが多く、 実際に存在しているのは /opt/local だけであった。)


もう一度 MacPorts-2.6.4_1-11-BigSur.pkg をインストールし直し。

(毎度、古い MacPorts で sudo port -fp uninstall installed をしてみようと思っていて、忘れる (笑)。)

念のため (必要ないみたいだけど)
sudo port selfupdate
sudo port upgrade outdated

では、普段使いの Ports をインストールする。 sudo ls で sudo の空撃ちしてから、いつものコマンドをコピペする。
sudo port -N install gsed
sudo port -N install wget
sudo port -N install lha
sudo port -N install a2ps-j
sudo port -N install nkf
sudo port -N install lv
sudo port -N install jpeg2ps
sudo port -N install gnupg2
sudo port -N install gv
sudo port -N install ghostscript-fonts-hiragino
sudo port -N install xpdf-japanese +autoactivate
sudo port -N install kochi-substitute
sudo port -N install netpbm
sudo port -N install gnuplot
sudo port -N install ImageMagick
sudo port -N install ffmpeg
(でも wget とか lha とか kochi とかは最近はご無沙汰かもしれないな。)


途中で
Warning: The macOS 11.2 SDK does not appear to be installed. Ports may not build correctly.
Warning: You can install it as part of the Xcode Command Line Tools package by running `xcode-select --install'.
と警告が出るけれど、やってみると
% xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
と言われるよ。そして Software Update では何も言われない。 まあ、この警告はしばしば出る。とりあえず無視する。


あれ、jpeg2ps でエラーが。

gv でも (Ghostscript でも)エラーが。

おっと、この Mac には古い Hiragino 入ってないのだった。 じゃあ sudo port -N install ghostscript-fonts-hiragino は無意味だ。 まあ、Ghostscript の段階で引っかかっているので、意味ないけれど。

gnuplot でもエラーになる。あれま。


うーん、ダメダメだ。はてな?こうなると気になるのは、上の警告だ。

Command Line Tools をインストールし直してみるか (今回に限ったことでなく、割と良くあるよね)。
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install

これでやり直してみる。相変わらず同じ警告が出るけれど、今度は
sudo port install jpeg2ps
が通った。それでは、さっき失敗したものをやり直し。
sudo port -N install install gv
sudo port -N install install gnuplot
sudo port -N install ImageMagick

MacPorts の gcc     そうだ。gcc もインストールしておこう。 この MacBook は Intel Core i7 だから問題はないはず。
sudo port install gcc10
sudo port select --set gcc mp-gcc10
最近は gcc インストール終了しても、実際にはコンパイル出来ないことがあるから、 動作チェックは必須だね。 hello.c を書いて
% which gcc
/opt/local/bin/gcc
% gcc --version
gcc (MacPorts gcc10 10.2.0_5) 10.2.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

% gcc hello.c
% ./a.out
hello, world.
% file a.out
a.out: Mach-O 64-bit executable x86_64
%
とりあえず一安心。今日はもう寝よう。


macOS 付属の cc     一応、こちらもやっておくか。
% which cc
/usr/bin/cc
% cc --version
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: arm64-apple-darwin20.3.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
% cc hello.c
% ./a.out
hello, world.
% file a.out
a.out: Mach-O 64-bit executable x86_64
%

こうなるのは Intel Mac だからで、M1 Mac でやると
% file a.out
a.out: Mach-O 64-bit executable arm64
% cc -arch x86_64 hello.c
% file a.out
a.out: Mach-O 64-bit executable x86_64
%
となる (つまり M1 Mac では、デフォールトで arm64 が選択される。 -arch x86_64 というオプションを指定すると、 x86_64 が選択される)。


ちなみに cc 自体を file で調べると
% file /usr/bin/cc
/usr/bin/cc: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]
/usr/bin/cc (for architecture x86_64):	Mach-O 64-bit executable x86_64
/usr/bin/cc (for architecture arm64e):	Mach-O 64-bit executable arm64e
%
のように表示される。


つまり、macOS の cc は、ユニバーサル・バイナリーで、 デフォールトで生成される実行形式は、 その Mac の CPU をターゲットとするものであるが、 -arch でターゲットを変更できる。



MacPorts の余計な設定書き込みを直す     あ、そうだ。MacPorts は X11 関係で余計なことをしてくれるのだった。 DISPLAY 環境変数を :0 という文字列にセットする設定を、 勝手に書き込んでくれる。 それは XQuartz にとって不都合なので、コメントアウトする。 無事 xeyes にお目見えした。


実は、この MacPorts 以外は、何も問題が生じていない。 Catalina と比べると、画面の見栄えは変わったけれど、 使い勝手に気になるような違いはない。 正直なところ、拍子抜けしている。 「Big Sur どうですか?」 「あまり変わんないですね。」 -- 正確には、機能アップされたのかもしれないけれど、 とりあえず以前と同じような使い方は出来ます、というべきか。


猛烈にごちゃごちゃしているけれど、 次回別の Mac でアップデートをするときに整理できるであろう。

桂田 祐史