Менеджеры пакетов для различных платформ очень широко применяются, позволяют быстро установить и настроить многие готовые компоненты и библиотеки. А также используются для развертывания собственных решений. При этом важно, чтобы менеджер пакетов обрабатывал зависимости, т.е. если ваше приложение использует какую-то библиотеку определенной версии, то менеджер пакетов при установке вашего приложения также установит необходимую версию этой библиотеки.
Теперь для InterSystems IRIS также доступен менеджер пакетов — ZPM.
ZPM позволяет найти, установить, обновить модуль, а также может использоваться для публикации модулей. Каждый модуль может быть отдельным приложением, библиотекой, фреймворком, утилитой или примером использования технологий InterSystems.
ZPM состоит из двух компонентов:
По умолчанию ZPM клиент настроен на использование реестра: pm.community.intersystems.com — это реестр сообщества разработчиков. В этом реестре опубликовано множество примеров, утилит и библиотек.
Также вы можете поднять и использовать и свой собственный реестр (об этом будет ниже в этой статье).
Скачайте последнюю версию инсталлера по этой ссылке.
Импортируйте скачанный класс в любую область любым удобным вам способом: через портал, через Студию или через терминал.
Если вы используете Docker, то вы можете воспользоваться образами InterSystems IRIS Community Edition и InterSystems IRIS for Health Community Edition, которые уже содержат последнюю версию ZPM (подробнее в документации).
После установки ZPM доступен в любой области.
Чтобы использовать ZPM, достаточно набрать команду zpm в терминале и вы запустите интерфейс командной строки (CLI) менеджера пакетов ZPM.
C помощью команды help можно получить список всех доступных команд.
В первую очередь с помощью команды search посмотрите список доступных модулей в реестре:
Для установки последней версии модуля или обновления используется команда install. Установка будет выполнена в текущую область.
Как видно сначала производится установка модуля mdx2json, от которого зависит модуль dsw, а затем уже dsw.
Вот и всё – модуль установлен и настроен!
Многие команды имеют специальные флаги, например, флаг -v или -verbose позволяет увидеть подробности, например:
Ознакомьтесь с полным перечнем команд их аргументов и флагов на странице документации или используя команду help.
Для того, чтобы вы могли опубликовать собственный пакет, необходимо:
В файле module.xml описан ваш пакет, входящие в пакет ресурсы, зависимости и компоненты необходимые при установке пакета (например, создание веб-приложений).
Если вы до этого использовали InterSystems IRIS Installation Manifest (%Installer), то вы найдете много общего в module.xml и в XDATA блоке .
Описание формата xml в документации
Вы можете познакомиться с примерами module.xml для опубликованных модулей:
github.com/isc-zpm/DeepSeeWeb/blob/master/module.xml
github.com/isc-zpm/Samples-BI/blob/master/module.xml
Для того, чтобы опубликовать свой пакет публичном реестре pm.community.intersystems.com достаточно опубликовать приложение в Open Exchange и указать его публичный репозиторий.
Создание собственного реестра не является обязательным, но с его помощью вы сможете проверить как собирается и устанавливается ваш модуль.
Если вы планируете публиковать свое приложение в публичном реестре pm.community.intersystems.com, то рекомендуется сначала проверить все шаги в вашем локальном реестре.
Чтобы установить собственный реестр – можно воспользоваться командой install.
Перейдите в область реестра (далее будем считать, что называется REGISTRY) и выполните
Проверьте, что ваш реестр работает – откройте в браузере страницу localhost:52773/registry/_ping (возможно надо указать другой порт, в зависимости от настроек вашего IRIS). При обращении к странице потребуется указать логин и пароль пользователя IRIS (например: _system/SYS).
Если вы увидели {«message»:«ping»} – ваш реестр установлен успешно.
Теперь настройте ваш ZPM клиент на работу с новым реестром.
Выполните команду:
Эта команда говорит, что ZPM клиенту, что в качестве удаленного реестра необходимо использовать реестр доступный по указанному URL и при обращении передавать указанные в аргументах -user и -pass логин и пароль соответственно.
Проверьте, что вы создали отдельную папку, в которой размещен module.xml и классы вашего модуля (классы принято размещать в папке /src). В примере далее этот модуль будет называться demo-module (имя задается в module.xml).
Проверьте что вы переключились на тестовый реестр.
С помощью команды load загрузите ваш код в текущую область:
Эта команда выполняет целый ряд действий – загружает и компилирует ваш код и конфигурирует ваш модуль.
Теперь ZPM клиент знает все о вашем модуле и может его опубликовать.
Для публикации используется команда module-action c аргументом publish:
Команду module-action можно опускать, и записать короче:
При выполнении этой команды модуль сначала будет «собран» (т.е. подготовлен для публикации) и экспортирован во временную директорию, заархивирован и затем опубликован на активном в данный момент реестре.
Теперь если вы выполните команду search вы должны увидеть ваш модуль в списке:
Для того, чтобы проверить, что установка проходит успешно — установите ваш модуль из тестового реестра с помощью ZPM в новую инсталляцию IRIS или новую область.
Чтобы переключиться на работу с реестром по умолчанию (pm.community.intersystems.com) используйте флаг -reset-defaults:
Вы можете опубликоовать ваш модуль в реестр сообщества (pm.community.intersystems.com) чтобы все разработчики на InterSystems могли его устанавливать и использовать в своих решениях.
Для этого опубликуйте ваше решение в InterSystems Open Exchange — маркетплейсе для приложений на InterSystems и укажите при установке что решение является модулем Package Manager:
Дополнительно вы можете посмотреть этот ролик об установке решений в Open Exchange.
ZPM поддерживается сообществом – пожалуйста сообщайте о всех возникающих проблемах или предложениях по улучшению – создавайте issues в репозитории проекта.
Замечание относительно лицензии.
ZPM клиент и реестр, расположенный на pm.community.intersystems.com, не поддерживаются InterSystems Corporation и представлены как есть по лицензии MIT.
Теперь для InterSystems IRIS также доступен менеджер пакетов — ZPM.
ZPM позволяет найти, установить, обновить модуль, а также может использоваться для публикации модулей. Каждый модуль может быть отдельным приложением, библиотекой, фреймворком, утилитой или примером использования технологий InterSystems.
Менеджер пакетов ZPM
ZPM состоит из двух компонентов:
- Клиент (CLI)
Утилита, которая устанавливается в ваш IRIS и используется для управления модулями (например, для установки) - Реестр (Registry)
База данных модулей и метаинформации, которая используется для управления модулями.
По умолчанию ZPM клиент настроен на использование реестра: pm.community.intersystems.com — это реестр сообщества разработчиков. В этом реестре опубликовано множество примеров, утилит и библиотек.
Также вы можете поднять и использовать и свой собственный реестр (об этом будет ниже в этой статье).
С чего начать
1. Установите клиент ZPM
Скачайте последнюю версию инсталлера по этой ссылке.
Импортируйте скачанный класс в любую область любым удобным вам способом: через портал, через Студию или через терминал.
USER>Do $System.OBJ.Load("/path/zpm.xml", "ck")
Если вы используете Docker, то вы можете воспользоваться образами InterSystems IRIS Community Edition и InterSystems IRIS for Health Community Edition, которые уже содержат последнюю версию ZPM (подробнее в документации).
2. Запуск ZPM
После установки ZPM доступен в любой области.
Чтобы использовать ZPM, достаточно набрать команду zpm в терминале и вы запустите интерфейс командной строки (CLI) менеджера пакетов ZPM.
MYNS> zpm
zpm: MYNS>
C помощью команды help можно получить список всех доступных команд.
zpm: MYNS>help
3. Установка модуля
В первую очередь с помощью команды search посмотрите список доступных модулей в реестре:
zpm: MYNS>search
registry https://pm.community.intersystems.com:
analyzethis 1.1.4
blocksexplorer 2.2.1
dsw 2.1.41
…
Для установки последней версии модуля или обновления используется команда install. Установка будет выполнена в текущую область.
zpm: MYNS>install dsw
[mdx2json] Reload START
[mdx2json] Reload SUCCESS
[mdx2json] Module object refreshed.
[mdx2json] Validate START
[mdx2json] Validate SUCCESS
[mdx2json] Compile START
[mdx2json] Compile SUCCESS
[mdx2json] Activate START
[mdx2json] Configure START
[mdx2json] Configure SUCCESS
[mdx2json] Activate SUCCESS
[dsw] Reload START
[dsw] Reload SUCCESS
[dsw] Module object refreshed.
[dsw] Validate START
[dsw] Validate SUCCESS
[dsw] Compile START
[dsw] Compile SUCCESS
[dsw] Activate START
[dsw] Configure START
[dsw] Configure SUCCESS
[dsw] Activate SUCCESS
Как видно сначала производится установка модуля mdx2json, от которого зависит модуль dsw, а затем уже dsw.
Вот и всё – модуль установлен и настроен!
Многие команды имеют специальные флаги, например, флаг -v или -verbose позволяет увидеть подробности, например:
zpm: MYNS>install dsw -v
Ознакомьтесь с полным перечнем команд их аргументов и флагов на странице документации или используя команду help.
Подготовка и публикация собственного пакета
Для того, чтобы вы могли опубликовать собственный пакет, необходимо:
- чтобы ваш код работал в InterSystems IRIS;
- подготовить файл module.xml.
В файле module.xml описан ваш пакет, входящие в пакет ресурсы, зависимости и компоненты необходимые при установке пакета (например, создание веб-приложений).
Если вы до этого использовали InterSystems IRIS Installation Manifest (%Installer), то вы найдете много общего в module.xml и в XDATA блоке .
Описание формата xml в документации
Вы можете познакомиться с примерами module.xml для опубликованных модулей:
github.com/isc-zpm/DeepSeeWeb/blob/master/module.xml
github.com/isc-zpm/Samples-BI/blob/master/module.xml
Для того, чтобы опубликовать свой пакет публичном реестре pm.community.intersystems.com достаточно опубликовать приложение в Open Exchange и указать его публичный репозиторий.
Установить собственный реестр
Создание собственного реестра не является обязательным, но с его помощью вы сможете проверить как собирается и устанавливается ваш модуль.
Если вы планируете публиковать свое приложение в публичном реестре pm.community.intersystems.com, то рекомендуется сначала проверить все шаги в вашем локальном реестре.
Чтобы установить собственный реестр – можно воспользоваться командой install.
Перейдите в область реестра (далее будем считать, что называется REGISTRY) и выполните
REGISTRY>zpm
zpm: REGISTRY>install zpm-registry
Проверьте, что ваш реестр работает – откройте в браузере страницу localhost:52773/registry/_ping (возможно надо указать другой порт, в зависимости от настроек вашего IRIS). При обращении к странице потребуется указать логин и пароль пользователя IRIS (например: _system/SYS).
Если вы увидели {«message»:«ping»} – ваш реестр установлен успешно.
Теперь настройте ваш ZPM клиент на работу с новым реестром.
Выполните команду:
zpm: MYNS>repo -r -n registry -url http://localhost:52773/registry/ -user _system -pass SYS
Эта команда говорит, что ZPM клиенту, что в качестве удаленного реестра необходимо использовать реестр доступный по указанному URL и при обращении передавать указанные в аргументах -user и -pass логин и пароль соответственно.
Опубликовать модуль
Проверьте, что вы создали отдельную папку, в которой размещен module.xml и классы вашего модуля (классы принято размещать в папке /src). В примере далее этот модуль будет называться demo-module (имя задается в module.xml).
Проверьте что вы переключились на тестовый реестр.
С помощью команды load загрузите ваш код в текущую область:
zpm: MYNS>load /path/to/module/folder
[demo-module] Reload START
[demo-module] Reload SUCCESS
[demo-module] Module object refreshed.
[demo-module] Validate START
[demo-module] Validate SUCCESS
[demo-module] Compile START
[demo-module] Compile SUCCESS
[demo-module] Activate START
[demo-module] Configure START
[demo-module] Configure SUCCESS
[demo-module] Activate SUCCESS
Эта команда выполняет целый ряд действий – загружает и компилирует ваш код и конфигурирует ваш модуль.
Теперь ZPM клиент знает все о вашем модуле и может его опубликовать.
Для публикации используется команда module-action c аргументом publish:
zpm: MYNS>module-action demo-module publish
Команду module-action можно опускать, и записать короче:
zpm: MYNS>demo-module publish
[demo-module] Reload START
[demo-module] Reload SUCCESS
[demo-module] Module object refreshed.
[demo-module] Validate START
[demo-module] Validate SUCCESS
[demo-module] Compile START
[demo-module] Compile SUCCESS
[demo-module] Activate START
[demo-module] Configure START
[demo-module] Configure SUCCESS
[demo-module] Activate SUCCESS
[demo-module] Package START
Module exported to:
/var/folders/9f/r62h3fxj42b5fzb0hgnb28m40000gn/T/direyLtX5/demo-module-1.0.0/
Module package generated:
/var/folders/9f/r62h3fxj42b5fzb0hgnb28m40000gn/T/direyLtX5/demo-module-1.0.0.tgz
[demo-module] Package SUCCESS
[demo-module] Register START
[demo-module] Register SUCCESS
[demo-module] Publish START
[demo-module] Publish SUCCESS
При выполнении этой команды модуль сначала будет «собран» (т.е. подготовлен для публикации) и экспортирован во временную директорию, заархивирован и затем опубликован на активном в данный момент реестре.
Теперь если вы выполните команду search вы должны увидеть ваш модуль в списке:
zpm: MYNS>search
registry http://localhost:52773/registry/:
demo-module 1.0.0
Для того, чтобы проверить, что установка проходит успешно — установите ваш модуль из тестового реестра с помощью ZPM в новую инсталляцию IRIS или новую область.
Переключиться на реестр по умолчанию
Чтобы переключиться на работу с реестром по умолчанию (pm.community.intersystems.com) используйте флаг -reset-defaults:
zpm: MYNS>repo -r -n registry -reset-defaults
Опубликовать модуль в реестре сообщества
Вы можете опубликоовать ваш модуль в реестр сообщества (pm.community.intersystems.com) чтобы все разработчики на InterSystems могли его устанавливать и использовать в своих решениях.
Для этого опубликуйте ваше решение в InterSystems Open Exchange — маркетплейсе для приложений на InterSystems и укажите при установке что решение является модулем Package Manager:
Дополнительно вы можете посмотреть этот ролик об установке решений в Open Exchange.
Нужна ваша помощь!
ZPM поддерживается сообществом – пожалуйста сообщайте о всех возникающих проблемах или предложениях по улучшению – создавайте issues в репозитории проекта.
Замечание относительно лицензии.
ZPM клиент и реестр, расположенный на pm.community.intersystems.com, не поддерживаются InterSystems Corporation и представлены как есть по лицензии MIT.