在M1 Mac上运行DAZ Studio

运动环境
・MacBookPro macOS12.1(蒙特雷),M1 Max。
・DAZ Studio 4.16
我想解决这个错误。
当您启动DAZ Studio时,会显示”无法建立有效的PostgreSQL CMS连接…”的错误消息。尽管您可以使用它来处理本地文件,但无法登录,因此无法使用在线购买的内容。

使用DIM安装DAZ Studio
最初我是通过DAZ Central安装的DAZ Studio,但看起来最新版本的Mac系统并不完全支持它,实际运行时出现了几次冻结并崩溃的情况。
根据推荐,建议使用DIM(Daz 3D安装管理器)进行安装。

将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的共享内存存在”错误”和”实现问题”,这个错误可以通过重新启动计算机来解决”,所以首先尝试重新启动计算机,如果问题仍未解决,请尝试以下步骤。
首先,在终端上确认当前的共享内存设置时,会发现内存最大值和段的最大值非常低。
$ 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
请执行以下命令以增加最大值,并重新启动计算机。
$ 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安装的PostgreSQL,决定尝试使用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/

数据库已被重置,但在这里也出现了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

在工作过程中,多次尝试使用DIM重新安装,或重复启动DAZ Studio,若无法成功,请尝试多次重新安装或重启。