快速安装软件包
Armory 客户端支持远程管理 SylixOS 计算机上的软件包,提供配置远程地址,安装、升级、卸载软件包及查看已安装包列表等功能。本节将重点介绍如何直接从 Armory 仓库快速安装软件包至远程 SylixOS 计算机。
操作须知
- 目前仅支持对运行 SylixOS 操作系统的远程计算机上的软件包进行管理。
- 在安装软件包时,Armory 会根据软件包中包文件的根路径相对于 SylixOS 系统根路径“/”的规则进行安装。例如,对于软件包“@global/example-app@1.0.0”,如果其包文件的根路径为“lib/example-app.so”,则其在 SylixOS 计算机上的安装路径将为“/lib”。
- 在安装软件包时,如果待安装的软件包有依赖包,系统将安装所有相关的依赖包。您可以根据系统提示确认是否进行安装。
前提条件
安装软件包的目标 SylixOS 计算机已安装
uname
和 3.7.3 或更高版本 的tar
命令,其中uname
用于检测远程计算机的平台和架构信息。若未安装,执行armory install
命令时,客户端会提示并提供自动安装选项,您也可以参考软件包 uname 和 libarchive 的中 README 手动安装。待安装的软件包必须符合 SylixOS 安装包配置示例 中的相关规则。
在线安装仓库中的软件包时,若待安装的软件包为非完全公开包,则必须 登录客户端,并确保拥有该软件包的查看与下载权限。有关权限的详细信息,请参见 权限概览。
离线安装本地软件包时,待安装的软件包必须满足以下条件:
- 软件包目录名称必须为 @namespace/package-name@version,其中
package-name@version
为软件包名称,version
不能省略,上级目录为@namespace
。 - 若目标安装包存在依赖,依赖包必须与其位于同一文件夹下,并遵循上述目录命名规则。该文件夹内不得包含非安装包之外的其他文件。同时,目标包的 armory.json 文件中
dependencies
字段的version
必须填写符合 SemVer 规范的版本号或版本区间,不可使用 Tag。
- 软件包目录名称必须为 @namespace/package-name@version,其中
操作步骤
步骤 1:配置远程地址
在开始搜索框或任意文件夹地址栏输入“cmd”,打开终端。
在终端执行如下命令,配置远程计算机地址。可多次执行以添加多个远程地址,并在使用时根据需要切换目标地址。
armory remote set <alias>=remote://<username>:<password>@<host>[:port][?ftpPort=21][&telnetPort=23]
参数说明如下:
参数 是否必选 说明 alias 是 远程计算机别名,可按需自定义,例如 default、dev、test 等 remote 是 虚拟请求协议,兼容 remote
和ftp
,新版本建议统一使用remote
,实际请求协议为 FTP & Telnetusername 是 登录远程计算机的用户名 password 是 登录远端计算机的密码 host 是 远程计算机的 IP 地址 port 否 远程计算机的端口号,等价于 ftpPort,不配置时默认为 21 ftpPort 否 FTP 端口号,等价于 Port,不配置时默认为 21 telnetPort 否 Telnet 端口号,不配置时默认为 23 此处以配置别名(alias)为“default”的远程计算机进行示例:
armory remote set default="remote://root:***@10.12.**.**?ftpPort=21&telnetPort=23" # 回显如下内容,表示配置成功: Config added: remote.default = remote://root:cm9vdA***@10.12.**.**?ftpPort=21&telnetPort=23
配置完成后,直接执行如下命令,或执行
armory remote use
并通过键盘上下键选择目标远程地址,按“Enter”键完成选择,使配置的远程地址生效。armory remote use default # 回显如下内容,表示成功切换至目标远程地址: Config changed remote_use : test => default The remote default is active now
步骤 2:安装软件包
客户端支持在线 安装仓库软件包 和离线 安装本地软件包 到远程计算机,以下分别介绍这两种安装方式。
安装仓库软件包
在终端执行如下命令,安装仓库软件包至配置的远程计算机。
armory install <package-spec> [-p <platform>] [-a <arch>] [-r <alias>] [--skip-unpack] [--force]
参数说明如下:
参数 | 是否必选 | 说明 |
---|---|---|
package-spec | 是 | 软件包 名称说明符,用于指定要安装的软件包名称、标签或版本。如果不指定标签和版本,则默认安装最新版本 |
-p, --platform | 否 | 指定要安装的软件包平台,目前仅支持安装 SylixOS 平台的软件包。如果不指定,客户端将自动检测平台类型。手动指定的平台值优先于自动检测,推荐使用自动检测方式,即不指定平台 |
-a, --arch | 否 | 指定要安装的软件包架构,如 arm64-generic、x86-64 等。更多架构选项,请参见 SylixOS 架构清单 中的“对应 Armory 架构名称”列。您也可以在远程计算机上执行 如果不指定,则客户端将自动检测架构类型,手动指定的架构值优先于自动检测,推荐使用自动检测方式,即不指定架构 |
-r, --remote | 否 | 指定要安装软件包的目标计算机地址的别名。如果不指定,则默认使用激活状态为“active”的远程地址,可通过armory remote ls 命令查看 |
-n, --skip-unpack | 否 | 设置是否跳过自动解压操作。默认情况下,Armory 在安装软件包时,会自动解压软件包根目录下的.tar.gz 或.tgz 格式文件,并将解压后的文件与其他包文件一起安装到 SylixOS 计算机。如果不希望执行解压操作,可以通过设置此参数来跳过解压步骤 |
-f, --force | 否 | 设置是否强制安装软件包。使用此选项将跳过所有交互式确认步骤,建议仅在无交互式环境(如 Jenkins 流水线)中使用。此选项存在风险,可能导致意外安装或覆盖,不建议使用,除非明确了解影响并接受后果 |
此处以安装“SylixOS 平台、x86-64 架构的 @sylixos-middleware/vsoa-dev”软件包至别名为“default”的远程计算机进行示例,执行如下命令:
armory install @sylixos-middleware/vsoa-dev -p SylixOS -a x86-64 -r default
您也可以不指定相关参数,直接执行如下命令(推荐):
armory install @sylixos-middleware/vsoa-dev
安装过程中,请根据界面提示确认要安装的文件。如下所示,当系统回显出现“Installation completed.”时,则表示安装成功:
Connecting to 10.12.**.**...
Connected
Installing: @sylixos-middleware/vsoa-dev@1.8.1-20241127
[ PRE_CHECK ] stage: pre_check
[ PRE_CHECK ] Remote environment: SylixOS@x86-64@3.6.3
[ PRE_CHECK ] Tar version: 3.7.7
... # 此处省略安装过程的详细回显信息
Package @sylixos-middleware/vsoa-dev@1.8.1-20241127 was successfully installed on remote server(10.12.**.**).
Installation completed.
安装本地软件包
在终端执行如下命令,安装本地软件包至远程计算机。
armory install --from-local /path/to/@namespace/package-name@version
其中 ./path/to/@namespace/package-name@version
用于指定本地待安装的目标软件包。您也可以参考 安装仓库软件包 步骤 2 中的参数说明指定其他非必填参数,platform
和 arch
除外。
此处以安装本地工作目录下的“@sylixos-middleware/cpython@3.12.2”为例进行介绍。 本地工作目录安装包配置示例如下:
├──offline
├──@sylixos-middleware
├── cpython@3.12.2 #目标安装包,其他为依赖包
├── liblzma@5.4.4
├── libreadline@6.3.0
├── libsqlite3@3.44.0
└── libuuid@1.0.0
├──@cloudnative
└── ecs@1.0.0
```
``` bash
armory install --from-local ./offline/@sylixos-middleware/cpython@3.12.2
安装过程中,请根据界面提示确认要安装的文件。如下所示,当系统回显出现“Installation completed.”时,则表示安装成功:
Connecting to 10.12.**.**...
Connected
Installing: @sylixos-middleware/cpython@3.12.2
[ PRE_CHECK ] stage: pre_check
[ PRE_CHECK ] Remote environment: SylixOS@x86-64@3.6.5
[ PRE_CHECK ] Tar version: 3.7.7
[ PRE_CHECK ] The package(@sylixos-middleware/cpython@3.12.2) support information(minSupportedVersion) is not provided, compatibility detection will be skipped.
[ LOCKING ] stage: locking
[ LOCKING ] Trying to lock(1 time): apm
[ LOCKED ] stage: locked
[ CONFIRMATION ] stage: confirmation
[DEPS_RESOLVING ] stage: deps_resolving
[ DEPS_RESOLVED ] stage: deps_resolved
[ DEPS_RESOLVED ] Dependencies required:
[ DEPS_RESOLVED ] Dependencies required:
[ DEPS_RESOLVED ] @sylixos-middleware/libsqlite3@3.44.0
[ DEPS_RESOLVED ] @sylixos-middleware/libreadline@6.3.0
[ DEPS_RESOLVED ] @sylixos-middleware/liblzma@5.4.4
[ DEPS_RESOLVED ] @sylixos-middleware/libuuid@1.0.0
[ DEPS_RESOLVED ] @cloudnative/ecs@1.0.0
... # 此处省略安装过程的详细回显信息
Package @sylixos-middleware/cpython@3.12.2 was successfully installed on remote server(10.12.**.**).
Installation completed.
步骤 3:查看已安装软件包
执行如下命令,可以查看已安装的软件包列表。
armory list
# 系统回显示例如下:
Connecting to 10.12.**.**...
Connected
@software_factory/tappas-dev@1.1.0
@sylixos-middleware/vsoa-dev@1.8.1-20241127
@sylixos-middleware/cpython@3.12.2
@sylixos-middleware/libarchive@3.7.7
@sylixos-middleware/liblzma@5.4.4
@sylixos-middleware/libreadline@6.3.0
@sylixos-middleware/libsqlite3@3.44.0
@sylixos-middleware/libuuid@1.0.0
@cloudnative/ecs@1.0.0
步骤 4:查看安装包元数据(可选)
安装软件包时,系统除了进行正常的安装操作外,还会生成 uninst.sh 卸载脚本 和 amr.json 元数据文件。其中 uninst.sh 用于卸载安装包,amr.json 用于存储安装包的元数据,包括包名、版本号、安装文件列表和依赖文件列表等信息。这两个文件将默认保存在远程计算机的“/var/lib/amr”目录中。您可以使用远程连接工具(如 WindTerm)登录到安装软件包的远程计算机,执行如下命令,查看是否存在软件包相关脚本和元数据。下面以查看安装包“vsoa-dev@1.8.1-20241127”元数据为例进行介绍。
cd /var/lib/amr
cd @sylixos-middleware/ #实际执行时需要替换为安装包所属的命名空间
cd vsoa-dev@1.8.1-20241127/ #实际执行时需要替换为目标安装包的包名和版本

执行cat amr.json
命令,可以查看该文件的详细内容。具体内容示例如下:
{
"namespace": "sylixos-middleware",
"name": "vsoa-dev",
"version": "1.8.1-20241127",
"scripts": {
"uninst": "/var/lib/amr/@sylixos-middleware/vsoa-dev@1.8.1-20241127/uninst.sh"
},
"files": [
"/apps/vsoa/example/c/clisuber",
"/apps/vsoa/example/c/position",
"/apps/vsoa/example/c/timer",
"/apps/vsoa/example/c/regulator",
"/apps/vsoa/example/c/composite",
"/apps/vsoa/example/c/server",
"/apps/vsoa/example/c/client",
"/apps/vsoa/example/c/broker",
"/apps/vsoa/example/c/cliauto",
"/apps/vsoa/example/jsre/client.js",
"/apps/vsoa/example/jsre/fetch.js",
"/apps/vsoa/example/jsre/server.js",
"/apps/vsoa/example/jsre/position.js",
"/lib/libvsoa-server.so",
"/lib/libvsoa-hpserv.so",
"/lib/libvsoa-position.so",
"/lib/libvsoa-json.so",
"/lib/libvsoa-parser.so",
"/lib/jsre/ext/vsoa.so",
"/lib/jsre/ext/js/vsoa/server_stream.jsc",
"/lib/jsre/ext/js/vsoa/regulator.jsc",
"/lib/jsre/ext/js/vsoa/constant.jsc",
"/lib/jsre/ext/js/vsoa/server.jsc",
"/lib/jsre/ext/js/vsoa/client_stream.jsc",
"/lib/jsre/ext/js/vsoa/position.jsc",
"/lib/jsre/ext/js/vsoa/index.jsc",
"/lib/jsre/ext/js/vsoa/proxy.jsc",
"/lib/jsre/ext/js/vsoa/client.jsc",
"/lib/libvsoa-client.so",
"/sbin/vcx",
"/sbin/vcl"
]
}