【2024/03時点】M1 MacでのPostgreSQLインストール手順

# はじめに

M1 MacでのPostgreSQLインストール手順をメモしておきます。

:::note warn
ただし、色々詰まって試しながらやったので、完全な手順の再現はできていないと思います。ご了承ください。
:::

## 環境

- M1 Mac（Sonoma 14.3.1）
- postgres (PostgreSQL) 14.11 (Homebrew)

## インストール手順

※ Homebrewがインストールされている前提です。

おそらく以下の手順でやればうまくいくはず。

### 1. PostgreSQL用のドライバのインストール

```bash
$ go get github.com/lib/pq
```

### 2. PostgreSQLのインストール
    
※ `@14`をつけないとWarningが出る

```bash
$ brew install postgresql@14
```

:::note info
インストール後に`$ initdb /usr/local/var/postgres -E utf8`を実行して文字コードをUTF-8にするよう書かれている記事もありますが、現在では最初からUTF-8に設定されているため不要のようです。
:::

###  バージョンの確認
    
```bash
$ postgres --version
```

### 3. PostgreSQLサーバの起動

```bash
$ brew services start postgresql@14
```

### 4.サービスの起動確認

```bash
$ brew services list
Name          Status  User File
postgresql@14 started wsigma21  ~/Library/LaunchAgents/homebrew.mxcl.postgresql@14.plist
```

### 5.データベース一覧の取得

```bash
$ psql -l
```

### 6.PostgreSQLサーバの停止

```bash
$ brew services stop postgresql@14
```

### 参考

https://qiita.com/kushiyama0225/items/dd1a29048ea63000b001

## エラー

インストール時に起きた複数のエラーについて、私が試したり調べたりしたことがどなたかの役に立てばと思い、記録しておきます。

:::note info
結論を言うと、色々試したのですが私の環境での原因はよくわかっていません。
最終的にアンインストールしてMacを再起動してインストールしなおしたらうまく行きました。
:::

### その1「Warning: The post-install step did not complete successfully」

インストール時に以下のWarningが出ました。

```bash
Warning: The post-install step did not complete successfully
You can try again using:
  brew postinstall postgresql@14
```

指示通り「$ brew postinstall postgresql@14」を実行しても同じWarningが出ます。
一旦無視して`$ brew services start postgresql@14`を実行するとSuccessfullyになるのですが、サービスの状態は`error`でした。

```bash
$ brew services list
Name          Status     User          File
postgresql@11 error  512 wsigma21 ~/Library/LaunchAgents/homebrew.mxcl.postgresql@14.plist
```

以下の記事を参考に`/private/tmp`のパーミッションを確認したのですが、元から`rwxrwxrwt`に設定されていたので、パーミッションは関係なさそうでした。。

https://zenn.dev/treefield/articles/a1723d4532749d

### その2「Bootstrap failed: 5: Input/output error」

起動時にこちらのエラーが出たこともありました。

```bash
Warning: Use postgresql@14 instead of deprecated postgresql
Bootstrap failed: 5: Input/output error
Try re-running the command as root for richer errors.
Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/wsigma21/Library/LaunchAgents/homebrew.mxcl.postgresql@14.plist` exited with 5.
```

以下の記事を参考に`postmaster.pid`の削除を試みましたが、そもそも`/opt/homebrew/var/postgres@14`が空でした（この件については次項で記述）

https://qiita.com/taraontara/items/a563f75de68b8308c2ea

https://note.com/mknfdjfksja/n/ndbaf0b504612


### その3「psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory」

起動時にこちらのエラーが出たこともありました。

一度Postgresを停止・再起動すればうまくいくという記事もありましたが、私の環境では変化ありませんでした。

https://qiita.com/taraontara/items/a563f75de68b8308c2ea

次に、以下の記事を参考に、ログを確認してみました。

https://zenn.dev/yusuke99/scraps/c4fa33411de09f

```bash:
$ cat /opt/homebrew/var/log/postgresql@14.log 
postgres: could not access the server configuration file "/opt/homebrew/var/postgresql@14/postgresql.conf": No such file or directory
```

そもそも`postgresql.conf`がないことがエラーの原因な気がしてきました。

確認すると`/opt/homebrew/var/postgresql@14`の下にやはり何もありません。

```bash
$ ls -la /opt/homebrew/var/postgresql@14
total 0
```

最初にインストールを試みたときのコマンドがM1用ではなく色々試したため、正しくインストールされていなかったのでしょう。

## アンインストール

インストール失敗が原因なら、アンインストールして再インストールすればいいはずです。

- （起動している場合は）サーバの起動停止

```bash
$ brew services stop postgresql@14
```

- 不要なディレクトリの削除

```bash
$ rm -rf /opt/homebrew/var/postgresql@14
```

- アンインストール

```bash
$ brew uninstall postgresql@14
```

- Macの再起動（一応）


再起動後、序盤に記述したインストール手順に従って再インストールしたところ、正常に動作するようになりました

## 終わりに

Intel プロセッサでは`/user/var/postgres`にインストールされますが、Appleシリコンでは`/opt/homebrew/var/postgresql@14`にインストールされます。

そのことを最初に確認し、その直下を見に行けば最短でインストール時の不具合と見抜けたと思います。

無闇にエラーメッセージでググり続ける悪癖を直したいです。