Упакуйте сценарий командной строки в пакет Mac OS X.

У меня есть программа (созданная коллегой, перенесенная из Linux, но успешно компилируемая на Mac), которую мне нужно развернуть на множестве рабочих станций Mac. В настоящее время мы делаем это, отправляя файлы pkg (не созданные нами).

Мой общий вопрос (на который другие могут найти ответы на полезные) заключается в том, как мне упаковать программу/скрипт командной строки в файл pkg, который устанавливает программу? Обычный метод упаковки файла .app кажется достаточно хорошо задокументированным, но мало подробностей о том, как взять произвольную программу и обернуть ее в установщик pkg.

На справочных страницах для pkgbuild (и т. д.) делается много предположений — что вы уже создали приложение с помощью xcode, что вы собираетесь использовать .app и можете генерировать списки и т. д. Все, что мы хотим сделать, это позволить mac server устанавливает программу, не являющуюся приложением, и хочет использовать pkgs.

Было бы лучше, если бы решение было скриптовым, чтобы каждый раз, когда мы обновляем программу, мы могли легко создавать новый файл pkg. Если бы можно было связать достойный ресурс, уже объясняющий этот процесс, это, конечно, тоже сработало бы. Вопрос здесь: Создание пакетов установщика OS X, таких как готовый пакет Pro-Xcode Developer ID, не соответствует необходимости просто установить базовая программа cli.


person Mercury00    schedule 11.04.2014    source источник
comment
Установленный файл в /etc/path.d кажется хорошим способом добавить вашу утилиту в PATH.   -  person David Grayson    schedule 11.02.2016


Ответы (1)


Я бы рекомендовал Пакеты.

Он доступен для сценариев, поэтому он может стать частью вашего процесса сборки и сгенерировать для вас хороший mpkg.

Мы используем его для автоматизации загрузки сторонних библиотек, а затем вызова make для компиляции, а также для установки скомпилированных файлов.

В качестве примечания, хотя это будет генерировать mpkg, большинство дистрибутивов выполняется с образами дисков, поэтому мы также используем hdiutil для создания разреженного образа, копируем в него mpkg, конвертируем его в сжатый dmg только для чтения, а затем распространяем его.

Примером этой процедуры может быть:

1) Создайте разреженный файл RW DMG.

hdiutil create -size 100M -type SPARSE -volname "MyInstaller" -fs HFS+ MyInstaller.dmg.sparseimage

2) Прикрепить к изображению. Обратите внимание на имя диска и смонтированного тома из вывода (например, /dev/disk2s1 и /Volumes/MyInstaller)

hdiutil attach MyInstaller.dmg.sparseimage

3) Скопируйте в установщик mpkg

cp -R Packages/build/My_Packages.mpkg /Volumes/MyInstaller/

4) Отделить от изображения.

hdiutil detach -force {mounted disk} (ex. hdiutil detach -force /dev/disk2s1)

5) Создайте сжатый образ только для чтения из доступного для записи разреженного изображения.

hdiutil convert "MyInstaller.dmg.sparseimage" -format UDZO -o "MyInstaller.dmg" -ov -imagekey zlib-level=9
person ssnobody    schedule 11.04.2014