pgModelerはPostgreSQL用のモデリングツールでWindows, Linux, macOSのマルチプラットフォームで動作する。
同サイト上で配布されるバイナリー版は有料になっており6ヶ月の利用で12ドルほどかかるが、ソース自体はOSS(GPLv3)で公開されているため自分でビルドすれば無料で利用することができる。
ということでmacOS上でソース(v0.9.1-beta1)からビルドしてpgModelerを利用するための手順をメモ。
pgModelerのインストールに必要になるもの
現時点での最新版であるpgModeler v0.9.1-beta1をインストールする。
公式のインストールマニュアル https://pgmodeler.io/support/installation に目を通す。
macOSの場合、事前に必要なものは以下の通り。
- QT 5.9.x
- 現在のLTS版である 5.9.x が必要。
より新しいバージョンを利用する場合コンパイルエラーが起きる可能あり。 - PostgreSQL
- バージョンの指定はなし。
Windows、macOSではpgModelerのコンパイルに必要とするヘッダ、ライブラリについてもインスト−ルされる enterprisedb.comのPostgreSQLインストーラの利用が強く推奨されている。 - Xcode
- macOSのバージョンに応じたXcode
作業の流れ
- Qtのインストール
- PostgreSQLのインストール
- Xcodeのインストール
- pgModelerのインストール
Qtのインストール
Qtのインストールは
- homebrewでインストール
- qt公式サイトから指定のバージョンをダウンロードしてインストール
のいずれかの方法で行う。
homebrewでインストール
brewでサクっとインストールする事もできるが、インストールするQtのバージョンを指定できないためLTS版より若干新しいめのバージョンがインストールされてしまう。
運が悪いとpgModelerのコンパイルに失敗することもありうるが自分が試した際(Qt 5.10.1
)はコンパイルに支障がなかった。
$ brew install qt
/usr/local/Cellar/qt/5.10.1/
にヘッダ、ライブラリともにインストールされる。
qt公式からインストール
brewに比べて明示的にバージョンを指定してインストールできるので多少面倒くさくても安全に行きたい場合はこちら。
https://www.qt.io/download からOpenSource版を選択しインストーラをダウンロード。
このインストーラは起動後に指定バージョンのqtをネットーワーク経由でインストールするためインストーラ本体は13MBほどしかない。
ダウンロード後インストーラを起動、インストール先ディレクトリを指定。
Qt -> Qt 5.9.5 の以下のコンポーネントにチェック
- macOS
- Qt xxx のコンポーネント全て
でインストール実行。
PostgreSQLのインストール
Qtのインストールは
- homebrewでインストール
- enterprisedb.comからダウンロードしてインストール
のいずれかの方法で行う。
homebrewでインストール
インストールマニュアルではWindows, macOSについてはenterprisedb.comからのダウンロード&インストールが強く推奨されているものの、
自分が試した際(PostgreSQL 10.4
)には問題は起きなかった。
$ brew install postgresql
/usr/local/Cellar/postgresql/10.4
にヘッダ、ライブラリともにインストールされる。
Xcode
AppleStoreからインストールする。
macOSがHigh Sierra未満で最新のXcodeが入らない場合は、Apple Developerサイトにログインし各OSバージョン用のXcodeをダウンロード、インストールする。
(要Apple ID、但しApple Developer Programへの登録は不要)
https://developer.apple.com/download/more/
ビルドとインストール
githubからpgModelerをcloneする。
$ ghq get https://github.com/pgmodeler/pgmodeler.git
デフォルトブランチは develop
となっており、バージョンはv0.9.1-beta1
であるためこのブランチでビルドを行う。
Build and install pgModelerを参考にビルドとインストールを行う。
deploy.shの修正
PGSQL/QT_ROOTの変更
PostgreSQL、Qtをインストールしたルートディレクトリを PGSQL_ROOT
、 QT_ROOT
に指定する。
PGSQL_ROOT=/usr/local/Cellar/postgresql/10.4
QT_ROOT=/usr/local/Cellar/qt/5.10.1
Qtバージョンチェック処理を修正
インストールしたQtのバージョンが5.10.x以上の場合はこの処置が必要。
homebrewでQtをインストールした場合Qtのバージョンが5.10.xとなったがmacdeploy.sh中のQtバージョンチェックの正規表現が 以下のようにメジャー、マイナー、マイクロの各バージョン番号を1桁しか想定していないため、バージョンチェックでエラーとなってしまう。
# QT_VER=`$QT_ROOT/bin/qmake --version | grep -m 1 -o '[0-9].[0-9].[0-9]'`
QT_VER=`$QT_ROOT/bin/qmake --version | grep -m 2 -o '[0-9]\+.[0-9]\+.[0-9]\+'`
正規表現を修正し1桁以上も許容するようにする。
pgmodeler.priの修正
PostgreSQLライブラリとインクルードディレクトリを PGSQL_LIB
と PGSQL_INC
に指定する。
macx {
PGSQL_LIB = /usr/local/Cellar/postgresql/10.4/lib/libpq.dylib
PGSQL_INC = /usr/local/Cellar/postgresql/10.4/include
XML_INC = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2
XML_LIB = /usr/lib/libxml2.dylib
INCLUDEPATH += $$PGSQL_INC $$XML_INC
}
XML_INC
と XML_LIB
は修正の必要なし。
修正点の確認
今回修正した差分は以下。
diff --git a/macdeploy.sh b/macdeploy.sh
index 94b50fe8..66d0e462 100755
--- a/macdeploy.sh
+++ b/macdeploy.sh
@@ -1,8 +1,8 @@
#!/bin/bash
USR=`whoami`
-PGSQL_ROOT=/Library/PostgreSQL/10.1
-QT_ROOT=/Users/$USR/Qt5.9.3/5.9.3/clang_64
+PGSQL_ROOT=/usr/local/Cellar/postgresql/10.4
+QT_ROOT=/usr/local/Cellar/qt/5.10.1
QMAKE_ARGS="-r CONFIG+=x86_64 CONFIG+=release -spec macx-clang"
LOG=macdeploy.log
@@ -45,7 +45,7 @@ echo "Copyright 2006-2018 Raphael A. Silva <raphael@pgmodeler.io>"
# Identifying System Qt version
if [ -e "$QT_ROOT/bin/qmake" ]; then
- QT_VER=`$QT_ROOT/bin/qmake --version | grep -m 1 -o '[0-9].[0-9].[0-9]'`
+ QT_VER=`$QT_ROOT/bin/qmake --version | grep -m 1 -o '[0-9]\+.[0-9]\+.[0-9]\+'`
QT_VER=${QT_VER:0:5}
fi
diff --git a/pgmodeler.pri b/pgmodeler.pri
index d74b69a9..19bf4f31 100644
--- a/pgmodeler.pri
+++ b/pgmodeler.pri
@@ -146,8 +146,8 @@ unix:!macx {
}
macx {
- PGSQL_LIB = /Library/PostgreSQL/10/lib/libpq.dylib
- PGSQL_INC = /Library/PostgreSQL/10/include
+ PGSQL_LIB = /usr/local/Cellar/postgresql/10.4/lib/libpq.dylib
+ PGSQL_INC = /usr/local/Cellar/postgresql/10.4/include
XML_INC = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2
XML_LIB = /usr/lib/libxml2.dylib
INCLUDEPATH += $$PGSQL_INC $$XML_INC
ビルド
macdeploy.sh
でビルドを実行。
$ ./macdeploy.sh
pgModeler Mac OSX deployment script
PostgreSQL Database Modeler Project - pgmodeler.io
Copyright 2006-2018 Raphael A. Silva <raphael@pgmodeler.io>
Deploying version: 0.9.1-beta1
Cleaning previous compilation...
Running qmake...
Compiling code...
Installing dependencies...
Packaging installation...
Updating package default icon...
File created: dist/pgmodeler-0.9.1-beta1-macos.dmg
pgModeler successfully deployed!
エラーでビルドが失敗する場合は macdeploy.log
に詳細なビルドエラーが出力されているのでそちらを確認する。
成功すると dist/pgmodeler-0.9.1-beta1-macos.dmg
にインストール用のイメージが作成される。