快速安装软件包

更新时间:
2025-04-22

快速安装软件包

Armory 客户端支持远程管理 SylixOS 计算机上的软件包,提供配置远程地址,安装、升级、卸载软件包及查看已安装包列表等功能。本节将重点介绍如何直接从 Armory 仓库快速安装软件包至远程 SylixOS 计算机。

操作须知

  • 目前仅支持对运行 SylixOS 操作系统的远程计算机上的软件包进行管理。
  • 在安装软件包时,Armory 会根据软件包中包文件的根路径相对于 SylixOS 系统根路径“/”的规则进行安装。例如,对于软件包“@global/example-app@1.0.0”,如果其包文件的根路径为“lib/example-app.so”,则其在 SylixOS 计算机上的安装路径将为“/lib”。
  • 在安装软件包时,如果待安装的软件包有依赖包,系统将安装所有相关的依赖包。您可以根据系统提示确认是否进行安装。

前提条件

  • 安装软件包的目标 SylixOS 计算机已安装 uname3.7.3 或更高版本tar命令,其中 uname 用于检测远程计算机的平台和架构信息。若未安装,执行 armory install 命令时,客户端会提示并提供自动安装选项,您也可以参考软件包 unamelibarchive 的中 README 手动安装。

  • 待安装的软件包必须符合 SylixOS 安装包配置示例 中的相关规则。

  • 在线安装仓库中的软件包时,若待安装的软件包为非完全公开包,则必须 登录客户端,并确保拥有该软件包的查看与下载权限。有关权限的详细信息,请参见 权限概览

  • 离线安装本地软件包时,待安装的软件包必须满足以下条件:

    • 软件包目录名称必须为 @namespace/package-name@version,其中package-name@version 为软件包名称,version 不能省略,上级目录为@namespace
    • 若目标安装包存在依赖,依赖包必须与其位于同一文件夹下,并遵循上述目录命名规则。该文件夹内不得包含非安装包之外的其他文件。同时,目标包的 armory.json 文件中 dependencies 字段的 version 必须填写符合 SemVer 规范的版本号或版本区间,不可使用 Tag。

操作步骤

步骤 1:配置远程地址

  1. 在开始搜索框或任意文件夹地址栏输入“cmd”,打开终端。

  2. 在终端执行如下命令,配置远程计算机地址。可多次执行以添加多个远程地址,并在使用时根据需要切换目标地址。

    armory remote set <alias>=remote://<username>:<password>@<host>[:port][?ftpPort=21][&telnetPort=23]
    

    参数说明如下:

    参数是否必选说明
    alias远程计算机别名,可按需自定义,例如 default、dev、test 等
    remote虚拟请求协议,兼容 remoteftp新版本建议统一使用 remote,实际请求协议为 FTP & Telnet
    username登录远程计算机的用户名
    password登录远端计算机的密码
    host远程计算机的 IP 地址
    port远程计算机的端口号,等价于 ftpPort,不配置时默认为 21
    ftpPortFTP 端口号,等价于 Port,不配置时默认为 21
    telnetPortTelnet 端口号,不配置时默认为 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
    
  3. 配置完成后,直接执行如下命令,或执行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 架构名称”列。您也可以在远程计算机上执行uname -i命令获取其架构信息,以确保安装与目标计算机架构匹配的软件包


如果不指定,则客户端将自动检测架构类型,手动指定的架构值优先于自动检测,推荐使用自动检测方式,即不指定架构
-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 中的参数说明指定其他非必填参数,platformarch 除外。

此处以安装本地工作目录下的“@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"
   ]
}