前のiMacで取ったタイムマシーンのバックアップからM1 iMacにファイルを復元するとWindowsのようにいちいち新たにプログラムのインストールをやりなおさなくていいのはとてもいいのだけれど、古いデータもそのまま引き継がれるわけで、それがトラブルの元になったりします。
私の場合、homebrewです。
大昔、Macのパッケージ管理ソフトはportsとhomebrewがあり、私はなんとなくportsを使っていたのですが、homebrewが主流となってhomebrewを使い始めたのでした。
ほとんど忘れていますが、使いはじめたころいろいろ間違いもやらかしていたわけで、M1チップの世界にhomebrewは完全には対応していないので、トラブルが出てきました。
私の場合はcurlを動かすとどこぞのphp5を呼ぶのです。
curlが使えないってことはhomebrewのFAQにあるhomebrewのアンインストールができないってことです。
しかも知らないうちにすごいたくさんPATH定義がなされてる。
いったい誰がこんなに追加しているのだろう、とpathの追加をしているところを探しました。
シェルはAppleさんが推奨しているzshを使っています。
zshは設定ファイルを大量に読みます。
- /etc/zshenv
- ~/.zshenv
- /etc/zprofile
- ~/.zprofile
- /etc/zshrc
- ~/.zshrc
- /etc/zlogin
- ~/.zlogin
中でも/etc/zprofileの中でこんなことしています。
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
このpath_helperってのが曲者で”man path_helper”ってコマンドプロンプトで叩くと、
DESCRIPTION
The path_helper utility reads the contents of the files in the directories
/etc/paths.d and /etc/manpaths.d and appends their contents to the PATH
and MANPATH environment variables respectively.
(The MANPATH environment variable will not be modified unless it is already
set in the environment.) Files in these directories should contain one path
element per line. Prior to reading these directories, default PATH and MANPATH
values are obtained from the files /etc/paths and /etc/manpaths respectively.
要するに/etc/paths.dと/et/manpaths.dのディレクトリーにあるファイルを読んでPATHとMANPATHに追加していくものらしい。
ここにだけあって存在しないファイルをどんどん消した。
次にhomebrewをもう一度、インストールしてみました。
この時にもcurlは使えないのですが、OSXオリジナルのcurlを指定してインストールします。
これがオリジナルのhomebrewで推奨されているスクリプト
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
ここに/usr/binをを追加
/bin/bash -c "$(/usr/bin/curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
いったんインストールして、それからアンインストールしました。
すると案の定、スクリプトで消しきれないフォルダーがぞろぞろ。
手作業で全部消して、すっきり。
M1 iMacではしばらくhomebrewを使いません。
当面、これでゴミは消えたとしておきましょう。
ホント、Rubyのバージョン管理rbenvとか、Pythonのバージョン管理pyenvとか、言語のバージョンを切り替えるなんて簡便してほしい。
あちこちで、さもそれが当たり前であるかのごとくやってるけど、インストールするバージョン決めたらそれでいいという自由がなぜないのか、理解に苦しみます。
RubyならV3, PythonもV3でよくて古いものなんか使いたくもないのに。
ジジイのせいかなぁ。。。