先日のWWDC 2019 では、SwiftUI のような新しい技術の発表もあり、次のmacOSが待ち遠しいですね。
ところが、私のメイン開発機の Macbook Pro のOSは未だに High Sierra でした、仕事が続いて来てアップデートする機会を逸していましたが、やっとアップデート出来る余裕とモチベーションが沸いて来ました。
アップグレードインストール vs. クリーンインストール
さて、OS のアップデートには、現状の環境を保ったまま新OSに更新する アップグレードインストール と、SSDを消去し新しいOSをインストールする クリーンインストール があります。
アップグレードインストール
良い点は問題が起きなければ、環境が引き継がれるのでインストールの時間が短くすみます。ただし、アップルの方針変更で従来の環境が上手くアップデート出来な事があります、過去にHomebrew等の開発ツール周りでトラブルがあった記憶があります。
クリーンインストール
良い点はOSインストール後にツール等のソフトを再インストール必要があり時間がかかりますが、環境が新たに構築されるのでトラブルは起きにくいです。またテンポラリーファイル等が削除されストレージの空き容量が増え、動作もキビキビとする事もあります。
さてメイン開発機のMacbook Proは、前回の Sierra から High Sierra へのアップデートでは 購入後あまり時間が経っていなかったのでアップグレードインストールしたので、今回はクリーンインストールしようと決断しました。
クリーンインストールの手順
クリーンインストールは時間もかかるし、アップデート中や直後に現行サービスやアプリの緊急メンテナンス作業が発生する可能性もあり以下のように行っています。
- 新OSインストール用のUSBメモリーを作成
- アップデート直前に Time Machine バックアップを取る
- リカバーモードで起動し、USB接続のSSDドライブに内蔵SSDのブート可能なフルコピーを作る
- 新OSインストール用のUSBメモリーから起動し、内蔵SSDを消去(フォーマット)てから、新OSをインストール
- コードやドキュメントなどをUSB接続のSSDからコピー
この手順を取ることで緊急時はUSB接続のSSDドライブから起動し一時的に旧OS環境で作業したり出来ます、また最悪の場合 Time Machine で旧OS環境に戻せます。
今回のトラブル
フルコピーが出来ない
手順3.のブート可能フルコピー作成です、以前は asr(Apple Software Restore)コマンドでブート可能フルコピーが作れたのですが、ファイルシステムが HFS+ から APFS に替わり フルコピー が作成出来なくなりました。
いろいろと調べ Carbon Copy Cloner というソフトを使い、無事にブート可能フルコピーが作れました。
Mojaveのパスワードは4文字以上
セキュリティーを考えると仕方ないですよね、しかしネットを検索したら短いパスワードを使う方法がありました ^^);
ソフトウェアのライセンスが見つからない
ライセンスコードの管理は1Passwordを使っていますが、Mac用Officeのライセンスコードがありません! 調べてたら、Office365のサイトから購入した事が判りました、無事解決。
PostgreSQL9.6+PGroongaがインストール出来ない
あるサイトのRailsアプリではPostgreSQL9.6 + 全文検索エンジンPGroonga を使っています。PostgreSQL9.6 は Homebewで postgresql@9.6 という形でインストールできますが、そこへの PGroonga が上手く行きませんでした。
既に Mojaveに アップグレードインストールした Macbook の環境では動いていたのでが、クリーンインストール環境では上手く行きませんでした。
High Sierra環境のUSB接続SSDを調べたり、半日以上の時間を費やしましたが出来ませんでした。
PostgreSQLの拡張機能であるPGroongaの動作環境などをちゃんと学びソースコードからインストールすれば良いかもしれませんが、ここでクリーンインストールを止める決断をしました。
そして、アップグレードインストール
手順 2. で作ったTime Machine バックアップを使い、内蔵SSDを消去しTime Machineからの復元を行いました。
復元時間は、最初 5 〜 10時間と表示され復元は明日かなと思っていたのですが、気がつくと3時間くらいで終わっていました。
そして、アップグレードインストールを行いました。問題無く完了しました、PostgreSQL9.6 + PGroongaも復元しました。
今回の失敗で学んだこと
フレームワーク、ミドルウェア等は適宜バージョンアップする
PostgreSQLの最新晩は 11.3 です。今回のPostgreSQL9.6+PGroongaがインストール出来ない件も 、PostgreSQLを早めにアップデート出来ていれば開発環境の構築でトラブらなかったかもしれません。
仕事が忙しくなると、ついついバージョンアップは後回しになってしまいがちです。クラウド時代になりバージョンアップ作業は容易になっているので、ちゃんと行わないと行けませんね。
Homebrew switch と link の違いを理解した
今回 PostgreSQL9.6+PGroongaがインストールするのにHomebrewを徹底的に調べました。簡単に書くと、
brew switch
: シンプルなコマンドのようなソフトのバージョンを切り替えるbrew link/unlink
: postgresql と postgresql@9.6のように brewが複数バージョンサポートしているソフトを切り替える (postgresql@9.6のpsqlコマンドを psql として使えるようにする)
Docker化する?
Ruby on Rails等の開発環境をDockerにしてしまうのも手かもしれませんね、現在の Homebrewは異なるバージョンの実行環境を持つのに苦労します、例えば brew link
や rbenv
, nvm
など・・・、 Docker で開発環境を持てばスッキリするかもしれません。
Dockerは初期に使い、あまり良い印象を持っていないので、どうも消極的ななってしまいます。