我正在使用PackageMaker v3.0.4创建安装程序。
其中一个有效负载是一个库,我将其安装到位置/usr/local/lib/
因此设置了库本身的权限:
-rwxr-xr-x 1 root admin 992180 1 Jun 2009 libxxxx.0.dylib
只要运行安装程序时lib
目录已存在,这就可以正常工作。但是,如果安装程序运行时lib
目录不存在,则使用以下权限创建它:
drwx------ 3 username wheel 102 30 Jun 10:44 lib
随后,应用程序在运行代码时无法打开lib:
void *theDylib = dlopen("/usr/local/lib/libxxxx.0.dylib",RTLD_NOW);
如何让PackageMaker安装具有正确权限的目录?
答案 0 :(得分:2)
如果目录不存在,PackageMaker将使用默认默认值。
使用预安装脚本在目录上创建lib目录和chown
以正确设置所有权。
你可以这样做。这是未经测试的。
#!/bin/bash
libpath=/usr/local/lib
if [ ! -d "$libpath" ]; then
mkdir -m 775 "$libpath"
chown root:admin "$libpath"
fi
答案 1 :(得分:1)
<子> N.B。 Kevin Green's answer看起来是一个更好的解决方案,但这就是我最终要做的事情。
如果将有效负载设置为仅包含库而不是库本身的单个目录,并勾选Include root in package
,则安装程序将创建具有正确权限的目录(如果该目录尚不存在)。 / p>