这张图解释了您的私服是怎么工作的, 整篇文章在这里: Proxy-Registry
您需要有一台自己的的服务器, 在上面安装IRIS, zpm, 然后用zpm去下载另一个软件包“zpm-registry"。象这样
- zpm:DEMO>search -r zpm-registry
- registry https://pm.community.intersystems.com:
- zpm-registry 1.1.11Repository: https://github.com/intersystems-community/zpm-registry/
-
- zpm:DEMO>install zpm-registry
- [DEMO|zpm-registry] Reload START (/usr/irissys/mgr/.modules/DEMO/zpm-registry/1.1.11/)
- [DEMO|zpm-registry] Reload SUCCESS
- [zpm-registry] Module object refreshed.
- [DEMO|zpm-registry] Validate START
- [DEMO|zpm-registry] Validate SUCCESS
- [DEMO|zpm-registry] Compile START
- [DEMO|zpm-registry] Compile SUCCESS
- [DEMO|zpm-registry] Activate START
- [DEMO|zpm-registry] Configure START
- [DEMO|zpm-registry] Configure SUCCESS
- [DEMO|zpm-registry] Activate SUCCESS
- zpm:DEMO>
到github页面, https://github.com/intersystems-community/zpm-registry/, 你可以得到更详细的软件信息。
配置私服连接公服, 需要在私服的IRIS的安装目录添加一个yaml文件, 定义uplink:
- uplinks:
- pm:
- url: https://pm.community.intersystems.com/
- allow_packages: dsw,zpm*,?u*
几点说明:
uplinks的项目可以有多个,pm是intersystems的默认公共registry
allow_packages: - a comma-separated list of allowed packages, you can use the exact package name or mask: * - any sequence of characters, ? - any charac
通过repo命令将您的zpm client切换到刚刚配置的私服。repo -n registry
里面的 - user, - pass是你搭建的私服的账号密码。您也可以在私服上修改/registryWeb应用不做用户验证。
- zpm:DEMO>repo -list
- registry
- Source: https://pm.community.intersystems.com
- Enabled? Yes
- Available? Yes
- Use for Snapshots? Yes
- Use for Prereleases? Yes
- Is Read-Only? No
- Deployment Enabled? No
-
- zpm:DEMO>repo -n registry -r -url http://localhost:52773/registry/ -user superuser -pass demo
-
- registry
- Source: http://localhost:52773/registry/
- Enabled? Yes
- Available? Yes
- Use for Snapshots? Yes
- Use for Prereleases? Yes
- Is Read-Only? No
- Deployment Enabled? No
- Username: superuser
- Password: <set>
- zpm:DEMO>
这时的私服时没有连接gongfuu
发布一个 GitHub 的包
先把软件存在github, 然后用curl命令把包发布在私服的地址。
$ curl -i -X POST -H "Content-Type:application/json" -u superuser:1104 -d '{"repository":"https://github.com/psteiwer/ObjectScript-Math"}' 'http://localhost:52773/registry/package’
使用zpm 客户端先在本地load,然后使用publish 命令
大概像这个样子:
- zpm:USER>help load
- ...
- ■ Examples
- ∙ load C:\module\root\path\
- load C:\module\root\path\module-0.0.1.tgz
- Loads the module described in C:\module\root\path\module.xml
- ∙ load -dev -verbose C:\module\root\path\
- load -dev -verbose C:\module\root\path\module-0.0.1.tgz
- Loads the module described in C:\module\root\path\module.xml in developer mode and with verbose output.
- ∙ load https://github.com/user/repository.git
- load https://github.com/user/repository.git -b branch-name
- Loads the module described in C:\module\root\path\module.xml in developer mode and with verbose output.
- zpm:USER> load https://github.com/user/repository.git
- zpm: USER> publish
这样还不是很方便,所以有人在
在使用中您还会有各种各样的需求, 但我相信看到现在您应该对怎么寻找答案非常清楚了。这里简单的说两个feautre
如果您要隐藏自己的代码,只发布编译后的软件, 可以简单的修改Module.xml, 设置“ “, zpm会自动完成。
因为有朋友问,所以说一些包依赖的功能。是的, zpm是设计了包依赖的功能的,在module.xml里添加Dependencies节点, 可以定被依赖的包的列表。 具体的写法请参见这个例子:module.xml example。
虽然但是,对ObjectScript程序来说,定义包依赖的机会并不多。我能想到的应用场景就是, 当您的软件中想用社区其他包,比如上面的bitmap-adoption的包的话,您可以包"bitmap-adoption"打包到module.xml里面。
我对当前发布的200多软件包随便挑了一些,还没有发现有哪个使用了包依赖, 象这样:
- zpm:USER>list-dependents yaml-utils
- zpm:USER>list-dependents terminal-multiline-editor
- zpm:USER>list-dependents bitmap-adoption
- zpm:USER>list-dependents global-dump-sql
- ...