DAZ StudioをM1 Macにインストールしましたが、PostgreSQL周りでエラーが出てしまい、動くようにした時の忘備録です。
公式Forumでも現状明確な解決法はないようで、諦める人もいれば、エラーも出ず普通に動く人もいるといった感じでした。
isapplesiliconreadyを見てもまだ未対応の様子。
無駄な工程もあるかと思いますが、あくまで自分の環境はこれで動いたということで参考までに。。
動作環境
・MacBookPro macOS12.1(Monterey), M1 Max
・DAZ Studio 4.16
解決したいエラー
DAZ Studioを起動すると、「A valid PostgreSQL CMS connection could not be established...」なるエラーが表示されます。
ただローカルファイルを動かすだけなら使えますが、ログインできないのでオンラインで購入したコンテンツが使用できません。
DIMでDAZ Studioをインストールする
最初DAZ StudioはDAZ Central経由でインストールしましたが、最新版のmacには完全に対応していないようで、実際起動中に何度かフリーズして落ちました。
DIM(Daz 3D Install Manager)でのインストールが推奨されているようです。
DIMでは、DAZ Studio
とPostgreSQL CMS
の2つをインストールしました。
PostgreSQLの作業用フォルダ変更
PostgreSQLの作業用フォルダは通常、以下のディレクトリに作成されます。
~/Library/Application Support/DAZ 3D/cms/ContentCluster
PostgreSQL CMS
をインストールするとこの中に設定ファイルやログファイルが保存されるはずですが、Big Sur以降?権限周りの処理が変わったのか、うまくいかないケースがあるようです。自分の場合は、ログファイルも何も保存されず空の状態でした。
権限の設定を変更してもうまくいかなかったので、デスクトップにcms
フォルダを作り、DAZ Studio上で「Preferences...」>「CMS Settings」>「Cluster Directory」からパスを新しく作ったcms
フォルダに変更しました。
その後、DIMでもう一度DAZ Studio、PostgreSQLを再インストールで無事ログが生成されるようになりました。
共有メモリの設定変更
ContentClusterフォルダ内のログファイル(dblog.txt)を確認すると、以下のエラーが出ています。
FATAL: could not create shared memory segment: Cannot allocate memory
DETAIL: Failed system call was shmget(key=17237001, size=40, 03600).
HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMALL parameter. You might need to reconfigure the kernel with larger SHMALL.
The PostgreSQL documentation contains more information about shared memory configuration.
共有メモリが足りていないと思って設定を変更しましたが、後にフォーラムで「macOSの共有メモリには"バグ", "実装上の問題"があり、このエラーはPC再起動で解決する」とのコメントがあったので、まずPC再起動を試して、それで解決しなければ以下の手順を試してみてください。
まずターミナルで現在の共有メモリ設定を確認すると、メモリ最大値やセグメントの最大値がかなり少ないです。
$ sysctl kern.sysv
kern.sysv.shmall: 1024
kern.sysv.shmmax: 4194304
kern.sysv.shmmin: 1
kern.sysv.shmmni: 32
kern.sysv.shmseg: 8
kern.sysv.semmni: 87381
kern.sysv.semmns: 87381
kern.sysv.semmnu: 87381
kern.sysv.semmsl: 87381
kern.sysv.semume: 10
以下のコマンドで最大値を増やし、PC再起動してください。
$ sudo sysctl kern.sysv.shmmax=536870912
$ sudo sysctl kern.sysv.shmseg=1024
$ sudo sysctl kern.sysv.shmall=131072
共有メモリの変更についてはこちらの記事を参考にしました。
PostgreSQLをhomebrewでインストールしたものに切り替え
次に、以下のエラーがログファイルに表示されました。
FATAL: Database files are incompatible with server
DETAIL: The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL.
HINT: It looks like you need to recompile or initdb.
なんとなく、intelからarmにプロセッサが変わったことによる影響がありそうな気がしており、再コンパイルも大変そうなのでDIMでインストールしたポスグレを諦めて、homebrewでインストールしたものを使ってみることにしました。
まずhomebrewでpostgresqlをインストール
$ brew install postgresql
/Applications/DAZ 3D/PostgreSQL CMS
にあるbin
, include
, lib
, share
フォルダを削除し、シンボリックリンクを作って先ほどインストールしたものと中身を置き換えます。(普通に中身丸ごとコピーでいいかもしれないけど)
$ ln -s /opt/homebrew/Cellar/postgresql/14.1_1/bin /Applications/DAZ\ 3D/PostgreSQL\ CMS/bin
$ ln -s /opt/homebrew/Cellar/postgresql/14.1_1/include /Applications/DAZ\ 3D/PostgreSQL\ CMS/include
$ ln -s /opt/homebrew/Cellar/postgresql/14.1_1/lib /Applications/DAZ\ 3D/PostgreSQL\ CMS/lib
$ ln -s /opt/homebrew/Cellar/postgresql/14.1_1/share /Applications/DAZ\ 3D/PostgreSQL\ CMS/share
データベースの初期化
この工程はいらないかもしれませんが、一応initdbでContentClusterフォルダの中身を初期化しました。
$ initdb --locale=C -E UTF-8 ~/Desktop/cms/ContentCluster/
DAZ Studioからもデータベースをリセットしました。
Smart Contentタブを右クリック > 「Content DB Maintenance」> 「Reset Database」にチェック > 「Accept」
データベースがリセットされましたが、ここでもdblog.txtにエラーが出ました。
FATAL: pg_hba.conf rejects connection for host "[local]", user "USERNAME", database "postgres", SSL off
pg_hba.confを開いてみると、local
が全てreject
となっているので、この行のreject
をtrust
に書き換えます。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all reject
再度DAZ Studioを再起動すると、エラーが消え、無事ログインできました。
作業の途中で何度もDIMを使って再インストールを試したり、DAZ Studioの再起動を繰り返したので、うまくいかない場合は再インストールや再起動も何度か試してみてください。