エラーの園

仕事、日常のあらゆるエラーと戦い、先人の知恵も拝借して何としても解決……したい!

dyld: Library not loaded:〜

エラー発生前の操作や設定など

昔出したエラーを元に記事を書こうと、psql --version を実行したらエラーになった。

エラー内容

dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  Referenced from: /usr/local/Cellar/postgresql/11.4/lib/libpq.5.11.dylib
  Reason: image not found
Abort trap: 6

参考サイト

1. 前にエラーになったときにお世話になったサイト

unot13.hatenablog.com   ↑
ありがとうございます! 参考になりました 😌
brew info めっちゃ、分かりやすいです!

2. 新たなエラーでお世話になったサイト

qiita.com

原因

brewが古かった。

【補足】

PostgreSQLのバージョンアップを久しぶりにしたので、  
手順に戸惑って試行錯誤したので下記解決手順は実際に行っていないので、  
コマンド実行時のログは一部省略する。 
次回のupgradeで、実際に下記解決手順を実施して正確な手順+ログを更新する。  

(R02.05.11追記)  
実際に実施した手順を再検証したので、実施できないが修正しておく。   
まずい部分は、次回、upgrade時に修正する。

作業環境

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.4

PostgreSQL Version: 10 -> 12

(仮)解決手順

【準備】

・DBのバックアップは、忘れずに取っておいてください。

1. brewでインストールしたPosgreSQLの情報を確認する。

$ brew info postgresql
postgresql: stable 12.2 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/
/usr/local/Cellar/postgresql/11.4 (3,188 files, 35.4MB) *
  Poured from bottle on 2019-07-21 at 11:28:38
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
==> Dependencies
Build: pkg-config ✘
Required: icu4c ✘, krb5 ✘, openssl@1.1 ✔, readline ✔

※↑Dependenciesのicu4ckrb5ビルドエラーになっている。

2. 1.「✘」のパッケージをそれぞれupgradeする。

(例) icu4c の場合

$ brew upgrade icu4c
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
code-server         ghc@8.8             openstackclient     xxh

...(以下、省略)...

3. 再度 'brew info postgresql' を 実行してエラーが無いか確認する。

$ brew info postgresql
postgresql: stable 12.2 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/
/usr/local/Cellar/postgresql/12.2_1 (3,218 files, 37.8MB) *
  Poured from bottle on 2020-05-07 at 15:35:44
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
==> Dependencies
Build: pkg-config ✔
Required: icu4c ✔, krb5 ✔, openssl@1.1 ✔, readline ✔

...(以下、省略)...

pkg-config、ビルドOKでございます👍

4. brewPostgreSQLをupgradeする。

brew postgresql-upgrade-database

5. PostgreSQLのバージョンを確認する。

$ psql --version
psql (PostgreSQL) 12.2

6. PostgreSQLの起動確認

※詳しくは参考サイト1参照。

データベースの起動
$ brew services start postgresql
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)

または、

pg_ctl -D /usr/local/var/postgres start

環境変数を設定している場合は、

$ pg_ctl start
waiting for server to start....2020-05-07 19:43:22.466 JST [19213] LOG:  starting PostgreSQL 12.2 on x86_64-apple-darwin19.4.0, compiled by Apple clang version 11.0.3 (clang-1103.0.32.59), 64-bit
2020-05-07 19:43:22.467 JST [19213] LOG:  listening on IPv6 address "::1", port 5432
2020-05-07 19:43:22.467 JST [19213] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2020-05-07 19:43:22.470 JST [19213] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2020-05-07 19:43:22.492 JST [19214] LOG:  database system was shut down at 2020-05-07 19:43:17 JST
2020-05-07 19:43:22.499 JST [19213] LOG:  database system is ready to accept connections
 done
server started
データベースの一覧を表示する。
$ psql -l
                                 List of databases
   Name    |    Owner    | Encoding | Collate | Ctype |      Access privileges      
-----------+-------------+----------+---------+-------+-----------------------------
 postgres  | [user_name] | UTF8     | C       | C     | 
 template0 | [user_name] | UTF8     | C       | C     | =c/[user_name]             +
           |             |          |         |       | naitoukazue=CTc/[user_name] 
 template1 | [user_name] | UTF8     | C       | C     | =c/[user_name]              +
           |             |          |         |       | [user_name]=CTc/[user_name] 
(3 rows)
(おまけ)データベースの停止
$ brew services stop postgresql
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)

または、

pg_ctl -D /usr/local/var/postgres stop

環境変数を設定している場合は、

$ pg_ctl stop

バックアップ

令和2年5月8日の最初に投稿した(仮)解決手順1〜6書き直すため、
とりあえず、バックアップとして封印しておく。

1. brewでインストールしたPosgreSQLの情報を確認する。

$ brew info postgresql
postgresql: stable 12.2 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/
/usr/local/Cellar/postgresql/11.4 (3,188 files, 35.4MB) *
  Poured from bottle on 2019-07-21 at 11:28:38
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
==> Dependencies
Build: pkg-config ✘
Required: icu4c ✘, krb5 ✘, openssl@1.1 ✔, readline ✔

※↑Dependenciesのicu4ckrb5ビルドエラーになっている。

2. brewをupgradeする。

$ brew upgrade
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 4 taps (heroku/brew, homebrew/core, homebrew/cask and homebrew/services).
==> New Formulae
duktape      guile@2      kamel        openfast     redo         vlmcsd
==> Updated Formulae
gradle ✔                   gsoap                      pueue

...(以下、省略)...

3. 上記2. 実行時に何かと注意されるので、それを解決する。

(例)
Removing: /usr/local/Cellar/node/12.8.0... (4,649 files, 53.7MB)
Error: Could not remove node keg! Do so manually:
  sudo rm -rf /usr/local/Cellar/node/12.8.0

keg がよく分からないが、'/usr/local/Cellar/node/12.8.0を削除しろ!'
とのことなので、とりあえず、中身を確認してみる。

$ ls -l /usr/local/Cellar/node
total 0
drwxr-xr-x   7 [user_name]  staff  224  5  7 15:45 12.8.0
drwxr-xr-x  14 [user_name]  staff  448  5  7 15:43 14.1.0

なるほど。。。バージョン違いで2個ある。
古い方が邪魔な訳か。

$ sudo rm -rf /usr/local/Cellar/node/12.8.0
$
$ ls -l /usr/local/Cellar/node
total 0
drwxr-xr-x  14 [user_name]  staff  448  5  7 15:43 14.1.0

再度、実行!

$ brew upgrade

。。。と、こんな感じでErrorを潰していきます。

4. 3. の作業でエラーが無くなったら、再度 'brew info postgresql' を 実行してエラーが無いか確認する。

$ brew info postgresql
postgresql: stable 12.2 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/
/usr/local/Cellar/postgresql/12.2_1 (3,218 files, 37.8MB) *
  Poured from bottle on 2020-05-07 at 15:35:44
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
==> Dependencies
Build: pkg-config ✔
Required: icu4c ✔, krb5 ✔, openssl@1.1 ✔, readline ✔

...(以下、省略)...

5. brewPostgreSQLをupgradeする。

`brew postgresql-upgrade-database'

【補足】

もし、brew upgradePostgreSQLがupgradeされていたら、
下記のエラーメッセージになるかも。(しっかりupgradeされています)

$ brew postgresql-upgrade-database
Error: postgresql data already upgraded!