历经 47 年,OpenVMS 终于迎来包管理器 (VSP)
历经 47 年,OpenVMS 终于迎来包管理器 (VSP)!
发布时间:17-03-2025 20:33 | 作者:Remy van Elst | 本文的纯文本版本
目录
在 2 月 18 日,以稳定性和高可用性著称,拥有 47 年历史并移植到 4 种不同 CPU 架构的 OpenVMS,终于有了一个包管理器!本文将向你展示如何使用这个包管理器,并讨论它的一些特性。这是一个早期的 Beta 版本,你在使用时会注意到这一点。根据我从 Linux (apt/yum/dnf) 的经验来看,我注意到了一些问题:似乎没有自动依赖关系解析,而且它确实列出的依赖项是不完整的。还没有更新管理,没有删除软件包的功能,也不支持你自己的软件包仓库,只有 VSI 官方的仓库。服务启动或登录脚本更改不会自动完成。包含多个安装程序文件的软件包会失败,需要手动干预。它确实可以正确识别架构,具有搜索支持,并使安装软件变得更加容易。通过下载、手动复制和启动安装所节省的时间是巨大的,所以即使是这个早期的 Beta 版本,对于 OpenVMS 来说,也是一个非常受欢迎的补充。
VSI 在他们的早期版本手册中这样描述它:
VSP 是一个用于 OpenVMS 的包管理工具,它使用 VMS Service Platform REST API 来管理和安装 PCSI 包。
OpenVMS VSP 包管理器
例如,现在安装最新的 C++ 编译器就像执行这个命令一样简单:
VSP> DOWNLOAD /INSTALL VSI-X86VMS-CXX-A1001-3_250204-1
(如果包管理器支持包含多个安装程序的软件包,例如主安装程序和一个补丁,那就更好了。但稍后会详细介绍。)
最近,我从本网站移除了所有 Google Ads,因为它们具有侵入性跟踪,以及 Google Analytics。如果你觉得这些内容有用,请考虑使用以下任何选项进行小额捐赠。如果你能表达你的感谢,并帮助支付服务器费用,这对我来说意义重大: GitHub Sponsorship PCBWay referral link (你获得 $5,我在你下单后获得 $20) Digital Ocea referral link (60 天内获得 $200 信用额度。在你的信用额度过期后消费 $25,我将获得 $25!)
你可以在这里阅读我所有的 OpenVMS 文章。
我已经在 OpenVMS x86 上完成了我所有的测试,因为我没有 Itanium 硬件进行测试。要学习本文,你需要 OpenVMS E9.2-3。你可以申请 Ambassador Program,使用 Hobbyist License Virtual Machine,或者成为 VSI 的付费客户。
概要
如果你不想阅读任何技术细节,这里有一个概要。
VSP 简化了 OpenVMS 上的包管理,允许你使用简单的命令搜索、下载和安装软件,从而取代了手动下载、解压和安装软件。
当前特性:
- 软件包搜索,用于查找可用的软件。
- 一键安装。
- 集中式仓库访问。
当前局限性:
- 没有自动依赖关系解析。
- 没有删除/卸载软件包的功能
- 包含多个安装程序的软件包会失败(例如,主程序+补丁)
- 缺少更新管理。
- 不支持私有仓库。
为了匹配现代包管理器(APT,YUM,DNF),VSP 需要的未来改进:
- 自动依赖关系处理。
- 更新和升级功能。
- 私有仓库支持。
虽然 VSP 处于早期 Beta 阶段,但对于高效的 OpenVMS 软件管理来说,这是一个了不起的进步。
让我们继续深入了解有趣的部分。
安装 OpenVMS 包管理器 (VSP)
你需要从 VSI Service Portal 下载这个文件:
VSI-X86VMS-VSP-E0100-0-1
File Size:17.24 MB (18 080 118 bytes)
MD5 Checksum:28b1dfc0ee1426981a5f44fc1dd61633
将其复制到你的 OpenVMS 安装中。我有一个专门的文件夹来存放我的随机文件:
$ show def
REMY1$DKA100:[REMY]
$ dir
Directory REMY1$DKA100:[REMY]
VSI-X86VMS-VSP-E0100-0-1^(1^).zip;1 VSI-X86VMS-VSP-E0100-0-1.PCSI$COMPRESSED;1
VSI-X86VMS-VSP-E0100-0-1.PCSI$COMPRESSED_VNC;1
不要忘记安装 SSL 111
,SSL3 不起作用。
启动产品安装:
PRODUCT INSTALL VSP
当我第一次尝试使用验证错误时,安装失败了:
Performing product kit validation of signed kits ...
%PCSI-E-VALFAILED, validation of REMY1$DKA100:[REMY]VSI-X86VMS-VSP-E0100-0-1.PCSI$COMPRESSED;1 failed
-PCSI-E-VSI_TEXT, Verification of signed file failed
error no <33554536>, text: <error:02000068:rsa routines::bad signature>
error no <478674948>, text: <error:1C880004:Provider routines::RSA lib>
Failed
%PCSIUI-E-ABORT, operation terminated due to an unrecoverable error condition
在删除文件夹中的所有文件并再次 unzip
它们之后,安装继续进行:
$ PRODUCT INSTALL VSP
Performing product kit validation of signed kits ...
%PCSI-I-VSIVALPASSED, validation of REMY1$DKA100:[REMY]VSI-X86VMS-VSP-E0100-0-1.PCSI$COMPRESSED;2 succeeded
The following product has been selected:
VSI X86VMS VSP E1.0-0 Layered Product
Do you want to continue? [YES] y
Configuration phase starting ...
You will be asked to choose options, if any, for each selected product and for
any products that may be installed to satisfy software dependency requirements.
Configuring VSI X86VMS VSP E1.0-0
VMS Software Inc.
* This product does not have any configuration options.
Execution phase starting ...
The following product will be installed to destination:
VSI X86VMS VSP E1.0-0
Portion done: 0%...90%...100%
The following product has been installed:
VSI X86VMS VSP E1.0-0 Layered Product
VSI X86VMS VSP E1.0-0
Post-installation tasks are required.
To allow all users to use the VSP utility, add the following foreign
command definition to SYS$MANAGER:SYLOGIN.COM:
$ VSP :== $SYS$COMMON:[VSP]VSP.EXE
不要忘记将 VSP
添加到你的 SYLOGIN.COM
文件。现在,我们可以通过手动定义外部命令来继续:
VSP :== $SYS$COMMON:[VSP]VSP.EXE
使用包管理器 (VSP)
包管理器仅适用于 VSI
服务门户,目前尚无适用于你自己的存储库的可能性。因此,你必须使用你的 Service Portal 凭据登录。启动 VSP
,然后输入 LOGIN
命令:
$ VSP
输出:
Most functionality is unavailable without a valid login.
OS version of current system is: E9.2-3.
vsp>
在新 vsp>
提示符下,使用你的 VSI 凭据登录:
vsp> LOGIN
输出:
_USERNAME: VSI_SP_username
_PASSWORD: NOT_SHOWN
Save user credentials (encrypted)? (Y/N): y
如果选择 YES,登录 cookie 将保存到文本文件中。它表明 VSP
工具使用 libcurl
:
$ type cookies.txt
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
#HttpOnly_sp.vmssoftware.com FALSE / FALSE 0 session a[bcd].e
sp.vmssoftware.com FALSE / TRUE 191....789 csrf_access_token a[...]a
#HttpOnly_sp.vmssoftware.com FALSE / TRUE 191....789 access_token_cookie b[...]b
登录后,请检查以确保使用了正确的帐户:
vsp> whoami
Username: Your Name
Email: Your Email
Organization: VMS Ambassadors Programme
Cookie 仅在一段时间内有效,手册中说明为 30 分钟。
列出所有可用软件包
使用 LIST PRODUCTS
命令获取所有可用软件包的列表:
vsp> list
_WHAT: products
_PATTERN:
VSI$SUPPORT V2.18-0 [ "I64", "X86", "AXP" ] V8.4-1H1
VSI-X86VMS-REDIS-V0602-1-1 V6.2-1 [ "X86" ] V9.1
VSI-X86VMS-PAHO_C-V0103-0B-1 V1.3-0B [ "X86" ] V9.1
VSI-X86VMS-DCPS-V0208-2-1 V2.8-2 [ "X86" ] V9.2-1
VSI-X86VMS-SSMGR-V1.9-4 V1.9-4 [ "X86" ] V9.1-A
VSI-X86VMS-RTR-V0504-3-1 V5.4-3 [ "X86" ] V9.2
VSI-X86VMS-DQS-V0104-3-1 V1.4-3 [ "X86" ] V9.2
VSI-X86VMS-HAPROXY-V0107-9A-1 V1.7-9A [ "X86" ] E9.2
VSI-X86VMS-STUNNEL-V0556-0BA-1 V5.56-0BA [ "X86" ] E9.2
VSI-X86VMS-DECFORMS-V0402-2-1 V4.2-2 [ "X86" ] V9.2
VSI-X86VMS-PHP-A0800-0BUILD001-1 V8.0-1A [ "X86" ] E9.2
X86VMS-CIVETWEB-V0114-0D-1 V1.14-0D [ "X86" ] V9.2
VSI-X86VMS-VMSI18N-V0902--1 V9.2-0 [ "X86" ] V9.2
X86VMS-VGIT-V0104-1A-1 V1.4-1A [ "X86" ] V9.2
X86EVALPAK V1.1-0 [ "X86" ] V9.2-1
X86VMS-SWIG-V0401-0-1 V4.1-0 [ "X86" ] V9.2
X86VMS-PAHO_C-V0103-10-1 V1.3-10 [ "X86" ] E9.2-1
X86VMS-MOSQUITTO-V0200-14-1 V2.0-14 [ "X86" ] E9.2-1
X86VMS-LIBPQ-V1304-0B-1 V13.4-0B [ "X86" ] E9.2-1
VSI-X86VMS-X86ASM-V1000-0001-1 V10.0-0001 [ "X86" ] V9.2
[...]
基本上,你可以在软件门户中看到的所有软件包也都可以在这里找到。
列出所有已安装的软件包
你可以使用以下命令列出所有已安装的软件包:
vsp> list products /installed
输出:
AVAIL_MAN_BASE E9.2-3 X86 VSI
C X7.6-4 X86 VSI
CIVETWEB V1.17-0 X86 VSI
CURL V8.0-1A X86 VSI
CXX A10.1-2_240805 X86 VSI
DECNET_PLUS V9.2-G X86 VSI
DWMOTIF V1.8-1 X86 VSI
DWMOTIF_SUPPORT E9.2-3 X86 VSI
KERBEROS V3.3-3 X86 VSI
LUA V5.3-5H X86 VSI
OPENSSH V8.9-1H01 X86 VSI
SSL111 V1.1-1W X86 VSI
SSL3 V3.0-13 X86 VSI
T4 V4.4-E X86 VSI
TCPIP V6.0-25 X86 VSI
VSP E1.0-0 X86 VSI
WEBUI V4.1-3 X86 VSI
我不确定为什么他们在此输出中包含体系结构。如何在 X86 上安装 Itanium 软件包?
下载软件包
必须先下载软件包,然后才能安装。在本指南的后面,我将向你展示一个一次执行这两项操作的命令。
让我们尝试使用 DOWNLOAD
命令WebUI:
vsp> DOWNLOAD X86VMS-WEBUI-V0401-3-1
输出:
------------------------------------------
The package has following dependencies:
1: X86VMS-LUA-V0503-5H-1
------------------------------------------
Downloading file "VSI-X86VMS-WEBUI-V0401-3-1.zip"
Progress 3% Time remaining 1:34
Verifying checksum... OK
安装软件包
下载完成后,可以使用 INSTALL
命令安装软件包:
vsp> INSTALL X86VMS-WEBUI-V0401-3-1
输出:
------------------------------------------
The package has following dependencies:
1: X86VMS-LUA-V0503-5H-1
------------------------------------------
Unpacking...
Archive: REMY1$DKA100:[REMY]VSI-X86VMS-WEBUI-V0401-3-1.ZIP;1
inflating: VSI-X86VMS-WEBUI-V0401-3-1.PCSI$COMPRESSED
extracting: VSI-X86VMS-WEBUI-V0401-3-1.PCSI$COMPRESSED_VNC
Commencing installation...
Performing product kit validation of signed kits ...
%PCSI-I-VSIVALPASSED, validation of REMY1$DKA100:[REMY]VSI-X86VMS-WEBUI-V0401-3-1.PCSI$COMPRESSED;1 succeeded
The following product has been selected:
VSI X86VMS WEBUI V4.1-3 Layered Product
Do you want to continue? [YES]
Configuration phase starting ...
You will be asked to choose options, if any, for each selected product and for
any products that may be installed to satisfy software dependency requirements.
Configuring VSI X86VMS WEBUI V4.1-3
VMS Software Inc. &
* This product does not have any configuration options.
Execution phase starting ...
The following product will be installed to destination:
VSI X86VMS WEBUI V4.1-3 DISK$X86SYS:[VMS$COMMON.]
Minimum Lua software version not found on this system, abort instalation
This kit requires a minimum Lua software version of V5.3-5F.
Terminating is strongly recommended. Do you want to terminate? [YES]
太糟糕了。包管理器检测到需要 Lua 依赖项,但没有自动下载或安装它。
依赖管理?
我在 README 中没有找到任何关于依赖关系管理的参考资料,所以让我们尝试自己下载并安装依赖关系。
你可以在 download 命令中使用 /INSTALL
标志来同时执行这两项操作。
vsp> DOWNLOAD /INSTALL X86VMS-LUA-V0503-5H-1
输出,更多依赖关系:
------------------------------------------
The package has following dependencies:
1: VMS921X_UPDATE-V0200
2: X86VMS-OPENVMS-V0902-2
3: VMS922X_UPDATE-V0200
4: X86VMS-OPENVMS-V0902-3
------------------------------------------
Downloading file "X86VMS-LUA-V0503-5H-1.ZIP"
Progress 8% Time remaining 0:24
Verifying checksum... OK
Unpacking...
Archive: REMY1$DKA100:[REMY]X86VMS-LUA-V0503-5H-1.ZIP;1
************************************************
* ||| VMS Software Inc. (x86_64) 11/28/2024 *
************************************************
* 6 Liberty Sq. *
* PMB#: 294 *
* Boston, MA. 02109-5800 *
* Main Phone#: +1 (978) 451-0921 *
* Support Phone#: +1 (978) 451-0110 *
* Support Email: support@vmssoftware.com *
* Website: https://www.vmssoftware.com/ *
****************************************************
* VSI Lua V5.3.5H for VSI OpenVMS X86 V9.2-1 and *
* later versions. Included in this ZIP package *
* are the release notes for your reference. *
****************************************************
inflating: VSI-X86VMS-LUA-V0503-5H-1.PCSI$COMPRESSED
extracting: VSI-X86VMS-LUA-V0503-5H-1.PCSI$COMPRESSED_VNC
inflating: X86VMS-LUA-V0503-5H-1-RNOTES.PDF
inflating: MANIFEST.TXT
Commencing installation...
Performing product kit validation of signed kits ...
%PCSI-I-VSIVALPASSED, validation of REMY1$DKA100:[REMY]VSI-X86VMS-LUA-V0503-5H-1.PCSI$COMPRESSED;1 succeeded
The following product has been selected:
VSI X86VMS LUA V5.3-5H Layered Product
Do you want to continue? [YES]
Configuration phase starting ...
You will be asked to choose options, if any, for each selected product and for
any products that may be installed to satisfy software dependency requirements.
Configuring VSI X86VMS LUA V5.3-5H: Lua for OpenVMS is based on Lua Version 5.3.5
Copyright 2024 VMS Software Inc.
VSI Software Inc.
* This product does not have any configuration options.
Execution phase starting ...
The following product will be installed to destination:
VSI X86VMS LUA V5.3-5H DISK$X86SYS:[VMS$COMMON.]
Portion done: 0%...40%...50%...90%...100%
The following product has been installed:
VSI X86VMS LUA V5.3-5H Layered Product
VSI X86VMS LUA V5.3-5H: Lua for OpenVMS is based on Lua Version 5.3.5
Post-installation tasks are required.
To start the Lua runtime at system boot time, add the following
lines to SYS$MANAGER:SYSTARTUP_VMS.COM:
$ file := SYS$STARTUP:LUA$STARTUP.COM
$ if f$search("''file'") .nes. "" then @'file'
To stop Lua at system shutdown, add the following lines to
SYS$MANAGER:SYSHUTDWN.COM:
$ file := SYS$STARTUP:LUA$SHUTDOWN.COM
$ if f$search("''file'") .nes. "" then @'file'
像往常一样,软件安装的输出非常详细,并告诉你需要做的一切才能让东西运行起来。非常有帮助。
未列出的依赖项?
下一次尝试安装 WebUI 时出现以下错误:
Minimum Civetweb software version not found on this system, abort instalation
This kit requires a minimum Civetweb software version of V1.17-0.
Terminating is strongly recommended. Do you want to terminate? [YES]
这未在包管理器输出中列为依赖项。
包管理器中确实有搜索支持,我可以只输入 civetweb,它会提示我一个选项列表:
vsp> DOWNLOAD /install civetweb
输出:
Choose the correct package from list below:
X86VMS-CIVETWEB-V0114-0D-1 V1.14-0D [ "X86" ] V9.2
X86VMS-CIVETWEB-V0117-0-1 V1.17-0 [ "X86" ] V9.2-1
我想要 WebUI 安装程序告诉我的版本,使用通配符:
vsp> DOWNLOAD /INSTALL civetweb*117
输出:
Downloading file "X86VMS-CIVETWEB-V0117-0-1.ZIP"
Progress 99% Time remaining 0:00
Verifying checksum... OK
Downloading file "X86VMS-CIVETWEB-V0117-0-1-RNOTES.pdf"
Progress 6% Time remaining 0:00
Verifying checksum... OK
Unpacking...
Archive: SYS$SYSROOT:[SYSMGR]X86VMS-CIVETWEB-V0117-0-1.ZIP;1
************************************************
* VMS Software Inc. (x86_64) 10/20/2023 *
************************************************
* 6 Liberty Sq. *
* PMB#: 294 *
* Boston, MA. 02109-5800 *
* Main Phone#: +1 (978) 451-0921 *
* Support Phone#: +1 (978) 451-0110 *
* Support Email: support@vmssoftware.com *
* Website: https://www.vmssoftware.com/ *
****************************************************
* VSI CIVETWEB V1.17-0 for VSI OpenVMS Versions *
* V9.2-1 x86 or higher. Installation on ODS-5 *
* enabled file system recommended. Lua V5.3-5D or *
* later is highly recommended as well.A copy of the*
* Release Notes is included in this ZIP file. *
****************************************************
inflating: VSI-X86VMS-CIVETWEB-V0117-0-1.PCSI$COMPRESSED
extracting: VSI-X86VMS-CIVETWEB-V0117-0-1.PCSI$COMPRESSED_VNC
inflating: X86VMS-CIVETWEB-V0117-0-1-RNOTES.PDF
inflating: MANIFEST.TXT
Commencing installation...
Performing product kit validation of signed kits ...
%PCSI-I-VSIVALPASSED, validation of REMY1$DKA100:[SYS0.][SYSMGR]VSI-X86VMS-CIVETWEB-V0117-0-1.PCSI$COMPRESSED;1 succeeded
The following product has been selected:
VSI X86VMS CIVETWEB V1.17-0 Layered Product
Do you want to continue? [YES]
Configuration phase starting ...
You will be asked to choose options, if any, for each selected product and for
any products that may be installed to satisfy software dependency requirements.
Configuring VSI X86VMS CIVETWEB V1.17-0: CivetWeb for OpenVMS is based on CivetWeb Version 1.17
# Copyright 2023 VMS Software Inc.
VSI Software Inc.
* This product does not have any configuration options.
Execution phase starting ...
The following product will be installed to destination:
VSI X86VMS CIVETWEB V1.17-0 DISK$X86SYS:[VMS$COMMON.]
Portion done: 0%...90%...100%
The following product has been installed:
VSI X86VMS CIVETWEB V1.17-0 Layered Product
VSI X86VMS CIVETWEB V1.17-0: CivetWeb for OpenVMS is based on CivetWeb Version 1.17
Post-installation tasks are required.
To start the web server at system boot time, add the following
lines to SYS$MANAGER:SYSTARTUP_VMS.COM:
$ file := SYS$STARTUP:CIVETWEB$STARTUP.COM
$ if f$search("''file'") .nes. "" then @'file'
To stop Civetweb at system shutdown, add the following lines to
SYS$MANAGER:SYSHUTDWN.COM:
$ file := SYS$STARTUP:CIVETWEB$SHUTDOWN.COM
$ if f$search("''file'") .nes. "" then @'file'
Note that default installation uses the SYSTEM account to run the
web server process. It is generally recommended that you run the
web server as using a less privileged account. This may be done
by supplying the account name as a parameter to
civetweb$startup.com or by defining the logical name
civetweb$user as the desired account name. It is also recommended
that you change the ownership of the civetweb$root:[000000...]
directory tree to this account.
Cleaning up...
第三次是正确的,WebUI 现在可以顺利安装:
[...]
Configuration phase starting ...
You will be asked to choose options, if any, for each selected product and for
any products that may be installed to satisfy software dependency requirements.
Configuring VSI X86VMS WEBUI V4.1-3
VMS Software Inc. &
* This product does not have any configuration options.
Execution phase starting ...
The following product will be installed to destination:
VSI X86VMS WEBUI V4.1-3 DISK$X86SYS:[VMS$COMMON.]
Portion done: 0%...10%...20%...50%...60%...90%...100%
The following product has been installed:
VSI X86VMS WEBUI V4.1-3 Layered Product
VSI X86VMS WEBUI V4.1-3
Post-installation tasks are required.
After installation you need to update civetweb$root:[conf]civetweb.conf and
civetweb$root:[conf]services.conf as described in the release notes. After
making the necessary changes you can restart the web server using the following
command:
$ @SYS$STARTUP:WEBUI$RESTART.COM
Cleaning up...
安装程序提供的建议,编辑登录或启动文件,仍然必须手动完成。
例如,如果你习惯于 Debian,在那里服务会在 apt-get install
它们之后立即启动,但这里不会发生这种情况。更安全,因为否则服务可能会在未正确配置或保护时暴露。
安装 C++ 编译器
我希望可以使用以下命令安装 C++ 编译器:
vsp> download /install VSI-X86VMS-CXX-A1001-3_250204-1
遗憾的是,这失败了,因为该存档包含多个 PCSI 文件(多个安装文件):
Downloading file "VSI-X86VMS-CXX-A1001-3_250204-1.ZIP"
Progress 99% Time remaining 0:00
Verifying checksum... OK
[...]
%VSP-E-ERROR, Archive "VSI-X86VMS-CXX-A1001-3_250204-1.ZIP" contain multiple PCSI files. Inspect it manually
这些文件已下载到当前文件夹中,因此手动检查或安装它们并不难。在尝试上述命令之后,我在编译器的测试文件夹中,可以看到 VSI-X86VMS-CXX-V1001-2U1-1.ZIP
文件:
$ dir
Directory REMY1$DKA100:[CTEST]
COOKIES.TXT;8 OPENVMS_ECO_KIT_RNOTES.PDF;1 VSI-X86VMS-CXX-V1001-2U1-1.ZIP;1
X86VMS-CXX-V1001-2U1-1-RNOTES.PDF;1
Total of 4 files.
这个软件包包含一个安装程序和一个补丁:
$ unzip VSI-X86VMS-CXX-V1001-2U1-1.ZIP
Archive: REMY1$DKA100:[CTEST]VSI-X86VMS-CXX-V1001-2U1-1.ZIP;1
inflating: VSI-X86VMS-CXX-V1001-2U1-1.PCSI$COMPRESSED
inflating: VSI-X86VMS-VMS923X_CXXFIXUP-V0100--4.PCSI$COMPRESSED
PRODUCT INSTALL
也显示了这两个:
$ product install
_Product name (* to show list): *
1 - VSI X86VMS CXX V10.1-2U1