🦭
macOSでpkgのインストールが失敗するときの調査方法
エラー内容を教えないインストーラ
環境
- macOS: ventura 13.4
目的
Google Drive を macOS にインストールしたい。
現象
- brew 経由で入れると失敗する
- dmg をポチポチしても失敗する
- いくらググっても同様の症状の人はいない
- とはいえ
/Applications/Google Drive.app
はできている
調査手順
dmg をマウントする。
$ hdiutil mount GoogleDrive.dmg
(snip)
/dev/disk5s2 Apple_HFS /Volumes/Install Google Drive 1
(snip)
移動する。
cd '/Volumes/Install Google Drive'
展開する。
pkgutil --expand GoogleDrive.pkg /tmp/GoogleDrive
マウントを閉じる。
hdiutil detach '/Volumes/Install Google Drive'
postinstall を探す。
$ cd /tmp/GoogleDrive
$ fd postinstall
GoogleDrive_arm64.pkg/Scripts/postinstall
GoogleDrive_x86_64.pkg/Scripts/postinstall
Google_Software_Update.pkg/Scripts/postinstall
中を見てみる。
$ cat /tmp/GoogleDrive/Google_Software_Update.pkg/Scripts/postinstall
(snip)
if [[ ! -f Keystone.tbz || ! -f ksinstall ]]; then
# Corrupt package? Use that error code.
exit 2
fi
(snip)
と、ksinstall の存在チェックをしている。このファイルは postinstall と同じディレクトリにある。ということは同じディレクトリで実行しないといけないようだ。
移動して実行する。
$ cd /tmp/GoogleDrive/Google_Software_Update.pkg/Scripts
$ ./postinstall
2023-06-08 11:33:05.403 ksinstall[15883/0x1e7039e00] [lvl=3] -[KeystoneInstallTool main] Google Software Update installer could not determine the installation directory. [com.google.Keystone.InstallationErrorDomain:8 - 'KSInstallTool.m:3035'] (KSPaths file in the way of subdirectory. - '/Users/alice/Library/Google/GoogleSoftwareUpdate' [com.google.Keystone.SharedErrorDomain:1003])
~/Library/Google/GoogleSoftwareUpdate
に問題があるのがわかる。
もう一方も同様に実行してみる。
$ cd /tmp/GoogleDrive/GoogleDrive_arm64.pkg/Scripts
$ ./postinstall
(snip)
./postinstall: line 93: /Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/MacOS/ksadmin: Not a directory
(snip)
こちらは /Library/Google/GoogleSoftwareUpdate
に問題があるのがわかる。
原因
思い当たるふしがあった。以前、Google Chrome を絶対に自動更新させたくなかったので両ディレクトリを破壊したのだった。こんなことをするやつはそういないので、そりゃググっても出てこないはずである。
対策
trash /Library/Google
trash ~/Library/Google
たいしたものは入っていなかったので根元から削除した。
結果
まとめ
- pkg ファイルは pkgutil で展開できる
- preinstall や postinstall を読んで手動実行すればどこでこけたかわかる
Discussion
タイトルで「何の」pkgに関する記事か分かると便利だと思いました。
macOSのpkgインストーラーに関する記事だと分かるまで少し時間がかかりました。
修正しました。