Как мне заставить PackageMaker создать папку, содержащую полезные данные, с правильными разрешениями - PullRequest
1 голос
/ 30 июня 2011

Я создаю установщик с помощью 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 установить каталог с правильными разрешениями?

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Если каталог не существует, PackageMaker сделает его с настройками по умолчанию.

Используйте сценарий предварительной установки для создания каталога lib и chown в каталоге, чтобы правильно установить владельца.

Вы можете сделать что-то вроде этого. Это не проверено.

#!/bin/bash

libpath=/usr/local/lib

if [ ! -d "$libpath" ]; then
    mkdir -m 775 "$libpath"
    chown root:admin "$libpath"
fi
1 голос
/ 05 июля 2011

NB Ответ Кевина Грина выглядит как лучшее решение, но это то, что я в итоге сделал.

Если вы установите полезную нагрузку в один каталогсодержащий только библиотеку вместо самой библиотеки, и отметьте Include root in package, тогда установщик создаст каталог с правильными разрешениями, если он еще не существует.

...