1

我正在使用 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 以正确的权限安装目录?

4

2 回答 2

2

如果该目录不存在,PackageMaker 将使用它的默认设置。

使用预安装脚本创建 lib 目录并chown在该目录上正确设置所有权。

你可以做这样的事情。这是未经测试的。

#!/bin/bash

libpath=/usr/local/lib

if [ ! -d "$libpath" ]; then
    mkdir -m 775 "$libpath"
    chown root:admin "$libpath"
fi
于 2011-07-04T18:21:10.530 回答
1

NB Kevin Green 的回答看起来像是一个更好的解决方案,但这就是我最终要做的。

如果您将有效负载设置为仅包含库而不是库本身的单个目录,并勾选,Include root in package则安装程序将创建具有正确权限的目录(如果该目录尚不存在)。

于 2011-07-05T08:35:08.070 回答