0.9 marks significant progress towards our 1.0 goals. IPM now supports using container registries for package distribution.
We've made a few incompatible changes so please read the latest release notes.
Helps to install ObjectScript classes and routines, globals, Embedded Python modules, CSP and front-end packages, and more into InterSystems IRIS, from a variety of sources:
The simplest way to install the latest version of IPM is to run the following ObjectScript snippet.
In CI/CD scripts, for deterministic behavior, replace version="latest"
with the specific IPM version desired.
s version="latest" s r=##class(%Net.HttpRequest).%New(),r.Server="pm.community.intersystems.com",r.SSLConfiguration="ISC.FeatureTracker.SSL.Config" d r.Get("/packages/zpm/"_version_"/installer"),$system.OBJ.LoadStream(r.HttpResponse.Data,"c")
IPM 0.9.0+ can be installed with different versions and registry settings per namespace, and does not have the community package registry enabled by default. If you want the legacy (<=0.7.x) behavior of a system-wide installation and access to community packages in all namespaces, run zpm "enable -community"
after installing IPM. See zpm "help enable"
for details.
To enable the community package registry without the rest of the legacy behavior, run:
zpm
repo -r -n registry -url https://pm.community.intersystems.com/ -user "" -pass ""
As an alternative installation method, if IRIS does not have access to the internet:
zpm.xml
into IRIS and compile via any available method (Management Portal, Studio or Terminal - do $System.OBJ.Load("/path/to/zpm.xml","ck")
)zpm "enable -community"
to enable instance-wide and with a connection to the community package registryzpm
in Terminal/iris session
and get the following:USER>zpm
zpm: USER>
IPM Version | IRIS Version |
---|---|
0.10.x | >2022.1 |
0.9.x | Any |
<0.9.x | <2025.1 |
With the release of IPM v0.9.0 on December 2024, IPM is no longer mapped across namespaces.
This is an intentional change so that users can have different IPM versions and configurations in different namespaces.
If you install IPM on an instance without the legacy 0.7.x version, IPM is only installed to the current namespace.
zpm "enable -map -globally
. This is automatically performed when upgrading from a legacy version and can be undone by running zpm "unmap -globally"
.zpm "enable -map -repos -namespaces NS1,NS2,NS3
or zpm "enable -map -repos -globally
. Repositories are only mapped if %IPM classes and routines are also mapped from the same namespace.zpm "enable -community"
will make IPM behave essentially the same as legacy versions (v0.7.x) by setting up the the community registry and maping %IPM routines and classes, as well IPM repository settings to all namespaces.USER> zpm
zpm: USER>repo -list-modules -n registry
deepseebuttons 0.1.7
dsw 2.1.35
holefoods 0.1.0
isc-dev 1.2.0
mdx2json 2.2.0
objectscript 1.0.0
pivotsubscriptions 0.0.3
restforms 1.6.1
thirdpartychartportlets 0.0.1
webterminal 4.8.3
zpm 0.0.7
zpm: USER> install webterminal
USER> zpm
zpm: USER> uninstall webterminal
This is described in the following set of articles
The simplest and template repository can be found here.
Here is the alternative supported folder structure.
Refer to https://github.com/intersystems/ipm/blob/main/CONTRIBUTING.md for best development practices.
ObjectScript Package Manager is a community supported project and thus open to collaboration via Pull Requests.
Issues and feature requests are very welcome