[英]How do I get PackageMaker to create the payload's containing folder with correct permissions
我正在使用 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
随后,应用程序在运行代码时无法打开库:
void *theDylib = dlopen("/usr/local/lib/libxxxx.0.dylib",RTLD_NOW);
如何让 PackageMaker 以正确的权限安装目录?
如果该目录不存在,PackageMaker 将使用它的默认设置。
使用预安装脚本创建 lib 目录并在目录上chown
以正确设置所有权。
你可以做这样的事情。 这是未经测试的。
#!/bin/bash
libpath=/usr/local/lib
if [ ! -d "$libpath" ]; then
mkdir -m 775 "$libpath"
chown root:admin "$libpath"
fi
NB Kevin Green 的回答看起来像是一个更好的解决方案,但这就是我最终要做的。
如果您将有效负载设置为仅包含库而不是库本身的单个目录,并勾选Include root in package
则安装程序将创建具有正确权限的目录(如果该目录尚不存在)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.