как установить pkg на mac os
Platypus и Packages. Создаём и устанавливаем программы на macOS
Очень часто бывает необходимо собрать код, написанный на Python, в приложение для Windows, Linux или OS X. Да, для этого действительно существует множество пакетов, таких как кросс-платформенные cx_Freeze и PyInstaller, а также обособленных py2exe и py2app. Но для macOS существует возможность избежать возни с созданием установочного файла.
Нужно сказать, что в отличии от Windows, программа на MacOS это просто папка, с расширением .app а вот исталлятор имеет расширение .pkg.
Создаём программу
Для создания программы из скрипта, используем программу Platypus. Это бесплатная, open-source программа, распространяемая под BSD лицензией. Вот так выглядит единственное главное окно этой программы:
Создаём инсталлятор
Для создания установочных пакетов существует несколько программ, мы будем использовать Packages.
При открытии программы Packages нам предлагается выбрать тип установочного пакета, выбираем Distibution, так как Raw Package необходим тогда, когда нужно установить файлы в нестандартное расположение.
В следующем окне выбираем имя и расположение проекта. Имеет смысл в качестве расположения указывать рабочую папку проекта. После создания проекта открывается следующее окно, с большим количеством вкладок.
Если в боковом меню выделить необходимый нам пакет(на картинке это My), то мы увидим следующую картину:
Во вкладке Settings, выбирается идентификатор, версия и можно указать, что попросить сделать пользователя после установки (выключить компьютер, перегрузиться и завершить сеанс пользователя). Кроме этого можно выбрать Location и дополнительные опции, например ввод админского пароля, изменение прав доступа к папке и прочее.
Во вкладке Payload происходит основной процесс, добавление файла приложения в проект. Необходимо выделить нужную папку для установки приложения, например Applications, нажать на кнопку «+» и выбрать уже готовый файл с расширением .app.
Во вкладке Scripts можно выбрать скрипты которые запустятся до или после установки.
После того как все пункты выполнены, нужно собрать проект. Это можно сделать либо из меню Build —> Build либо с помощью специальной короткой команды ⌘B.
После этого вы получите установочный файл, которым можете поделиться с вашими друзьями и партнёрами.
Ссылки на необходимые файлы и обучающее видео
Packages — программа для сбоки pkg;
Вот это — отличная видеоинструкция по работе с программой Packages.
Небольшое дополнение
По умолчанию, Platypus просто запускает скрипт, но почти всегда нам надо запускать программу на компьютере, где не установлен python. Для такого случая есть специальный лайфхак:
В Platypus в качестве типа скрипта выбираете shell script, нажимаете на + и пишете следующий код:
Теперь, если вы соберёте программу и переместите её в папку Applications, то она запустится со своим компилятором.
Мак ОС и установщики
Каждый, кто пересаживался на Mac OS был приятно удивлён, что во многих случаях установка программ на этой операционке сводится к простому «Перетащить программу в папку “Программы“» и всё. Дальше просто кликаешь по ней и она запускается. Я получал массу удовольствия от такого простого, дружелюбного и понятного подхода. Я чётко понимал: где я положил программу, там я её удалю и она попросту исчезнет. Лепота, да и только. Наверно многие были наслышаны о таком славном подходе в макоси. Но увы (или к счастью) нет ничего идеального и программы бывает нужно устанавливать и на маке, в полном смысле этого слова.
Теория
Поискав по мануалам я нашёл более-менее порядочный способ. Для этого приходится перейти на уровень консоли чтобы выполнить удаление этой и подобно установленных программ. Делется это при помощи консольной утилиты lsbom.
Начиная с 10.6, bom фалы в основном можно найти так:
Как уже наверно можно было догадаться, bom файл содержит данные о том, что было записано в файловую систему при инсталляции определённого пакета.
Практика
Возможные проблемы
Надо быть очень осторожным с этими командами т.к. они во-первых выполняются от имени root, а во-вторых в корне файловой системы. Перед подобным удалением установленного пакета лучше убедитесь, что lsbom в списке файлов случайно не укажет какой-нибудь путь, который будучи удалённым из корня приведёт к удалению системных файлов. Так же не пробуйте удалять системные пакеты от Apple — у вас начнутся проблемы с обновлением и ещё бог весть с чем.
Я конечно же знаю про стороннюю утилиту PackageAssistant, которая позволяет управлять пакетами в системе, но последнее обновление у неё датируется 2008 годом. Анализ её исходников мною только подтверждает, что она не подходит для Mac OS 10.6, поскольку ею обрабатываются bom файлы только пакетов лежащих в «/Library/Receipts», а это, как я уже говорил, применимо только до 10.6.
P.S.: Вообще всё это вопрос добросовестности программистов на чьей ответственности лежит разработка инсталлятора (особенно учитывая факт, что Apple не предоставляет штатных gui средств для работы с установленными пакетами). Под остальными системами так же хватает безответственных программ, после которых систему можно сутками вычищать от хлама. От этого ни одна система не застрахована.
UPD: Как мне подсказали в каментах, можно так же воспользоваться другой консолной утилитой (она тоже не 100% панацея, но можно оба способа пробовать):
Мне нравится иметь свои приложения в
/Applications, и я не люблю давать административные разрешения на все, что не принадлежит материнству.
9 ответов
Кроме того, все пакеты могут регистрировать сообщения, если вы нажмете Cmd-L (или выберите Журнал установщика в меню Окно вы можете просмотреть их по мере их создания. Это может дать вам представление о том, какие дополнительные вещи он устанавливает, по крайней мере, это дополнительная информация, если вы не доверяете этому пакету.
В дополнение к тому, что сказал Мэтью Холл, вы также можете нажать Cmd-I в приложении Installer, чтобы посмотреть, какие файлы установщик установит и где.
Если вы не доверяете установщику достаточно предоставить административные разрешения для установки, то почему вы доверяете двоичному файлу в /Приложения?
Pacifist позволит вам просматривать файлы пакетов. Это не обязательно позволяет вам «вытащить двоичный файл».
В качестве альтернативы вы можете попробовать,
После успешного открытия пакета найдите файл Archive.pax.gz, о котором было сказано ранее.
Создайте новую пустую папку на рабочем столе, назовите ее, как хотите. Я обычно называю их «xxxx» или «zzzz» и т. Д., Чтобы упростить ввод текста.
Опция перетащите копию файла Archive.pax.gz в эту новую папку «xxxx» на рабочем столе.
Если файл находится внутри носителя только для чтения, вы можете просто перетащить его в папку «xxxx» без клавиши «Option», чтобы создать копию.
Теперь откройте Terminal.app и в командной строке перейдите к вашему новому каталогу «xxxx» и перечислите содержимое каталога, чтобы подтвердить наличие файла Archive.pax.gz:
Теперь есть две простые команды:
Gzip скажет вам, что он заменил «Archive.pax.gz» на «Archive.pax»). Теперь перечислите содержимое каталога, чтобы подтвердить это.
Файлы в этой иерархии каталогов будут иллюстрировать вам, где установщик OS X будет устанавливать файлы в вашей системе, как если бы ваш каталог «xxxx» был корневым каталогом «/».
Затем вы можете вручную скопировать эти файлы в свои адресаты, если хотите.
Но мне удалось извлечь файлы с помощью xar :
Следуйте инструкциям по установке MAMP.
Он не только предоставит всю необходимую информацию в приложении, но также установит подключаемый модуль Quick Look, поэтому просто выберите файл пакета и нажмите пробел, откроется окно с наиболее важной информацией.
Как установить pkg на mac os
/ USR / SBIN / Установщик
Смотрите man installer для полной функциональности. Часто
. Они будут в конечном итоге, /Users/ /Applications если конкретный путь не предопределен в установщике.
3 Answers 3
/usr/sbin/installer
See man installer for the full functionality. Often
Platypus и Packages. Создаём и устанавливаем программы на macOS
Очень часто бывает необходимо собрать код, написанный на Python, в приложение для Windows, Linux или OS X. Да, для этого действительно существует множество пакетов, таких как кросс-платформенные cx_Freeze и PyInstaller, а также обособленных py2exe и py2app. Но для macOS существует возможность избежать возни с созданием установочного файла.
Нужно сказать, что в отличии от Windows, программа на MacOS это просто папка, с расширением .app а вот исталлятор имеет расширение .pkg.
Создаём программу
Для создания программы из скрипта, используем программу Platypus. Это бесплатная, open-source программа, распространяемая под BSD лицензией. Вот так выглядит единственное главное окно этой программы:
Создаём инсталлятор
Для создания установочных пакетов существует несколько программ, мы будем использовать Packages.
При открытии программы Packages нам предлагается выбрать тип установочного пакета, выбираем Distibution, так как Raw Package необходим тогда, когда нужно установить файлы в нестандартное расположение.
В следующем окне выбираем имя и расположение проекта. Имеет смысл в качестве расположения указывать рабочую папку проекта. После создания проекта открывается следующее окно, с большим количеством вкладок.
Если в боковом меню выделить необходимый нам пакет(на картинке это My), то мы увидим следующую картину:
Во вкладке Settings, выбирается идентификатор, версия и можно указать, что попросить сделать пользователя после установки (выключить компьютер, перегрузиться и завершить сеанс пользователя). Кроме этого можно выбрать Location и дополнительные опции, например ввод админского пароля, изменение прав доступа к папке и прочее.
Во вкладке Payload происходит основной процесс, добавление файла приложения в проект. Необходимо выделить нужную папку для установки приложения, например Applications, нажать на кнопку «+» и выбрать уже готовый файл с расширением .app.
Во вкладке Scripts можно выбрать скрипты которые запустятся до или после установки.
После того как все пункты выполнены, нужно собрать проект. Это можно сделать либо из меню Build —> Build либо с помощью специальной короткой команды ⌘B.
После этого вы получите установочный файл, которым можете поделиться с вашими друзьями и партнёрами.
Ссылки на необходимые файлы и обучающее видео
Packages — программа для сбоки pkg;
Вот это — отличная видеоинструкция по работе с программой Packages.
Небольшое дополнение
По умолчанию, Platypus просто запускает скрипт, но почти всегда нам надо запускать программу на компьютере, где не установлен python. Для такого случая есть специальный лайфхак:
В Platypus в качестве типа скрипта выбираете shell script, нажимаете на + и пишете следующий код:
Теперь, если вы соберёте программу и переместите её в папку Applications, то она запустится со своим компилятором.
Step-by-step: подготовка инсталляционных пакетов Mac OS. Часть вторая. Создание пакета в среде Package Maker
Первая часть статьи здесь.
В качестве примера продемонстрируем создание установочного пакета Mozilla Firefox 31.5.3 esr в среде Pakage Maker. Firefox достаточно популярен среди наших заказчиков и при этом является достаточно показательным.
Для начала скачаем последнюю версию пакета с официального сайта (на момент написания статьи была доступна Mozilla Firefox 31.5.3 esr). Запускаем DMG файл на MAC-машине. Firefox.app переносим в Applications:
(под катом много фото)
Далее создаем проектную папку Mozilla Firefox 31.5.3 esr куда будем помещать все файлы, которые нужны будут для пакета. Запускаем Package Maker, заполняем Organization и Minimum Target, как показано на картинке:
Прописываем заголовок Title:
Из Applications выбираем Firefox.app и копируем в проектную папку (Mozilla Firefox 31.5.3 esr), далее переносим в Contents. Создается новый Choice, в котором прописываем Choice Name, Identifier.
Ставим путь установки (Destination) и заполняем Package Identifier, в дальнейшем данный идентификатор используется для Upgrade.
Выдаем права для Firefox.app root:wheel, как показано ниже:
На вкладке Components снимаем галочку Allow Relocation, иначе приложение может не попасть в нужную папку при проверочной установке.
Копируем пользовательские настройки, которые хранятся в
/Library/Application Support/Firefox, предварительно удалив всё ненужное в проектную папку и создав еще один Choice.
В поле Destination выставляем путь, откуда будут копироваться пользовательские настройки.
Назначаем права root:wheel, как показано ниже:
Для копирования настроек пользователям создаем mozilla.firefox.plist файл, в котором прописываем следующее:
Program Arguments указываем путь на скрипт, который будет исполняться при первом входе пользователя в систему. После этого создаем еще один Choice.
Обратите внимание на флаг LaunchOnlyOnce и RunAtLoad, т.е. запускать скрипт при входе пользователя в систему и только один раз.
Данный plist файл устанавливаем в /Library/LaunchAgents
И выдаем права, как показано ниже:
Создаем скрипт applysettings.sh, который будет копировать из «/Library/Cashes/Mozilla пользователю:
Создаем еще один Choice для скрипта:
Задаем Destination и Package Identifier:
Права назначаем те же что и для Choice Application
После того как все настройки были применены, для пакета делаем Project-> Build
Делаем Save и ждем готовый пакет.
Демонстрационный пакет готов, и можно его проверить на клиентской машине. После установки необходимо сделать log-off, чтобы были применены настройки для пользователя (скрипт запускается через launch agents).
Также хотелось бы добавить, что Package Maker поддерживает apple script, который может быть запущен до и после установки пакета. Еще приятной особенностью Package Maker является набор шаблонных скриптов, таких как: Get Application, Kill Application, Open File, Open URL. Они могут быть запущены в начале или в конце установки пакета.
Для удобства разработки и тестирования пакетов нами был разработан целый ряд скриптов, утилит (программ), которые позволяют нам увеличить скорость разработки решений и поддерживать их высокое качество, но об этом более подробно расскажем в следующей статье.
Полученный PKG пакет можно развернуть с помощью тех же систем развертывания (например, SCCM 2012) на тысячи компьютеров в несколько кликов, при этом нет необходимости в его конфигурировании на пользовательской стороне. В итоге — пользователи счастливы, как и мы 🙂