brew upgrade postgresql したら下記のエラーが出て起動しなくなったので、対応したメモ。
FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.5, which is not compatible with this version 9.6.2.
ログは
% tail `brew --prefix`/var/log/postgres.log
にあるはず。
公式のドキュメントは→https://www.postgresql.jp/document/9.6/html/pgupgrade.html
まず動いているプロセスを停止していまのdataを退避し、代わりに空のdataを作る。
% launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
% mv `brew --prefix`/var/postgres `brew --prefix`/var/postgres_95
% initdb `brew --prefix`/var/postgres -E utf8
退避したdataから新しく作ったdataにコピー。
% pg_upgrade \
-b `brew --prefix`/Cellar/postgresql/9.5.4_1/bin \
-B `brew --prefix`/Cellar/postgresql/9.6.2/bin \
-d `brew --prefix`/var/postgres_95 \
-D `brew --prefix`/var/postgres
最後に下記のメッセージが出るので、「正常に起動することを確認した後に」それぞれのスクリプトを実行して完了。
Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
./analyze_new_cluster.sh
Running this script will delete the old cluster's data files:
./delete_old_cluster.sh
起動する。
% launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
インストールのメモはこちら。
過去に遭遇した気がするようなしないような状態でググってみたら、弩ストライクなエントリを書いている方がいらして助かりました。
ひと言で言うと「そのtarボール、Macで固めたやつをLinuxで展開しようとしてない?」ということ。
Capistranoを使ってデプロイするとtarのエラーになる tar: Ignoring unknown extended header keyword – Qiita
どうやらMacがBSDのtarを使ってデプロイ先がGNUのtarを使っているために、正しく解釈できなくなっているらしい。
ありがとうございましtar。
Karuku Mac: fileコマンドがテキストファイルでエラーになる問題の回避
いろいろ試行錯誤したところ、localeの環境変数(LANGなど)を消すかCにすると正常に表示されるようになりました。
まさにこれでした。
% export LANG=ja_JP.UTF-8
% file -b --mime hoge.csv
ERROR: line 22: regexec error 17, (illegal byte sequence); charset=unknown-8bit
% export LANG=C
% file -b --mime hoge.csv
text/plain; charset=unknown-8bit
% sw_vers
ProductName: Mac OS X
ProductVersion: 10.10.5
BuildVersion: 14F1605
% file -v
file-5.04
magic file from /usr/share/file/magic
実行時にLANGを切り替えるのは恒久的な対策ではないと思うけれど、どうすればいいんだろ。
先日MBP(※1)のバッテリーとロジックボードがいかれて修理に出した(※2)んですが、それ以来起動に時間がかかるようになっていました。起動音が鳴ったりアップルのロゴが出るなどのタイミングで症状が分かるらしいんですが、うちの場合は起動音からアップルのロゴが出るまで時間がかかるパターンでした。
修理出したばかりなのにまたかーと思いながらググっていると辿り着いたのがここ。
スタートアップが遅い | Apple サポートコミュニティ
あと、システム環境設定の「起動ディスク」で起動ボリュームを指定していますか? これが出来ていないと、起動ボリュームを探す時間がかかるので、起動に時間がかかります。
もしやと思い確認してみたら、ビンゴでした。

確認したときには無選択の状態で、選択してみたら二度と外れませんでした。
選択肢がひとつなんだから自動で選択しておいて欲しいんですが、ともあれハードウェアの不良ではなくてよかった。
※1 Retina, 15-inch, Mid 2014
※2 アップルストア持込で2泊3日で返ってきた。早い!
Karabiner – Software for OS X
If you want to use Fn+F1,…,Fn+F12 as Function keys, activate “Fn+Functional Keys to F1..F12”.
controlは左下隅にあって欲しいのでfnと置き換えたのだけれど、「Control_L to Fn」だけでは不十分だった。
How to Make an OS X Yosemite Boot Installer USB Drive
sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia –volume /Volumes/Untitled –applicationpath /Applications/Install\ OS\ X\ Yosemite.app –nointeraction
こちらを参考に、というか書かれている手順の通りにやりました。
これを使ってクリーンインストール→スッキリ!
いくつか気をつけるところあったのでメモ。
% sw_vers
ProductName: Mac OS X
ProductVersion: 10.9.4
BuildVersion: 13E28
% brew install postgresql --no-tcl
% rm -rf `brew --prefix`/var/postgres
% initdb `brew --prefix`/var/postgres -E utf8
% ln -sfv `brew --prefix postgresql`/*.plist ~/Library/LaunchAgents
% launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
※1 Homebrewが勝手にinitdbしちゃうのでエンコーディング指定して再実行する
※2 作業するときにはtmuxは使わない(launchctlで失敗する)
% ARCHFLAGS="-arch x86_64" bundle install
※3 pgのgem入れるときにはARCHFLAGSを付ける
あちこちググって回ったらみんな少しずつ違って試行錯誤したのでメモ。
こんな感じでインストールできた。
% sw_vers
ProductName: Mac OS X
ProductVersion: 10.9.4
BuildVersion: 13E28
% brew tap homebrew/dupes
% brew install libxml2 libxslt libiconv
% brew link libxml2 libxslt --force
% bundle config build.nokogiri --use-system-libraries --with-xml2-include=`brew --prefix libxml2`/include/libxml2 --with-xml2-lib=`brew --prefix libxml2`/lib --with-xslt-include=`brew --prefix libxslt`/include/libxslt --with-xslt-lib=`brew --prefix libxslt`/lib --with-iconv-include=`brew --prefix libiconv`/include --with-iconv-lib=`brew --prefix libiconv`/lib
% bundle install
% bundle list | grep nokogiri
* nokogiri (1.6.3.1)
公式はこちら。
Nokogiri
Installing Nokogiri
ruby – Gem mysql2 doesn’t compile with the latest mysql, 5.6.12, in MacOS X with Homebrew – Stack Overflow
I had the same problem, I managed to fix it. I did a lot of things, and I don’t know for sure what it was, but going to MySQL 5.6.10 seems to have worked.
環境壊したかと思ってもがいてたらどうも既知でした、っていう。
Stack Overflowにはなんでもあるなぁ。