MacにHomebrewでPostgreSQLをインストールしてハマった件
MacBook Airに Homebrewで PostgreSQLをインストールしたのですが、PostgreSQLがうまく起動できませんでした。
環境は、
macOS 12.6.2
Homebrew 4.0.6
PostgreSQL@11(11.19)
% brew install postgresql@11
で、Warningが2つ出ていて、
Warning: The post-install step did not complete successfully
You can try again using:
brew postinstall icu4c
Warning: The post-install step did not complete successfully
You can try again using:
brew postinstall postgresql@11
で、指示の通りbrew postinstall icu4c
とbrew postinstall postgresql@11
を実行するも、同じWarningが出て終わり。
この状況でサービスを立ち上げようとしてみると、
% brew services start postgresql@11
==> Successfully started `postgresql@11` (label: homebrew.mxcl.postgresql@11)
となっていても
% brew services list
Name Status User File
postgresql@11 error 512 ************* ~/Library/LaunchAgents/homebrew.mxcl.postgresql@11.plist
とエラーが出てしまう。
どうしていいか全く見当がつかなくて、だいぶ手間取ったのですが、原因は/tmp
への書き込みができないことのようでした。
% ls -l /tmp
lrwxr-xr-x@ 1 root wheel 11 12 2 17:43 /tmp -> private/tmp
で、/tmp
は/private/tmp
へのシンボリックリンクなので、実体の/private/tmp
のpermissionを変更します。
現在のパーミッションは以下の通り
% ls -l /private/
total 0
drwxr-xr-x 81 root wheel 2592 3 19 21:18 etc
drwxr-xr-x 2 root wheel 64 12 2 17:43 tftpboot
drwxr-xr-x 8 root wheel 256 3 19 21:26 tmp
drwxr-xr-x 34 root wheel 1088 3 19 21:18 var
/private/tmp
のpermissionはrwxr-xr-x
となっていて、これだとroot以外の一般ユーザーは書き込みできないので、インストール時に書き込みしようとするとエラーになるのは当然。ちなみに、sudo brew postinstall postgresql@11
を実行しようとすると、危険なのでできませんと怒られてしまう。
それに/usr
配下以外のディレクトリの所有者をrootから他のユーザーに変更したくはない。
いろいろ調べていたら、スティッキービットを使うのがベストかなと考えました。スティッキービットがディレクトリに対して設定されていると、そのディレクトリ内は全ユーザーがファイルを作成できるけれども、他人がファイル名の変更や削除をできない。所有者とrootユーザのみが名前の変更と削除を行えます。
tmpフォルダの性質から言ってもこの方が理にかなっていると思われますし、本来そうなっていなければいけないようです。では、なぜ今はそうなっていなかったかは謎になってしまうのですが・・・
スティッキービットを設定するためには、rwxr-xr-x
をrwxrwxrwt
に変更します。というわけで、
% sudo chmod 1777 /private/tmp
を実行すると、
% ls -ld /private/tmp
drwxrwxrwt 10 root wheel 320 3 21 23:47 /private/tmp
スティッキービットが設定されました。
この後、brew postinstall icu4c
とbrew postinstall postgresql@11
を実行して無事成功。
PostgreSQLのサービスも無事起動しました
% brew services list
Name Status User File
postgresql@11 started ************* ~/Library/LaunchAgents/homebrew.mxcl.postgresql@11.plist
参考にしたサイト
Discussion