安装软件包

更新时间:
2025-04-22

安装软件包

使用 armory install 命令,可自动安装本地或 Armory 仓库中的软件包到远程 SylixOS 计算机,无需手动发布、下载和上传,提升了开发效率。本节重点介绍如何安装软件包到远程计算机。

操作须知

  • 执行 armory install 命令时,系统除了进行正常的安装操作外,还会生成 uninst.sh 卸载脚本 和 amr.json 元数据文件。其中 uninst.sh 用于卸载安装包,amr.json 用于存储安装包的元数据,包括包名、版本号、安装文件列表和依赖文件列表等信息。这两个文件将默认保存在远程计算机的“/var/lib/amr”目录中。
  • 在安装软件包时,Armory 会根据软件包中包文件的根路径相对于 SylixOS 系统根路径“/”的规则进行安装。例如,对于软件包“@global/example-app@1.0.0”,如果其包文件的根路径为“lib/example-app.so”,则其在 SylixOS 计算机上的安装路径将为“/lib”。
  • 在安装软件包时,如果待安装的软件包有依赖项,系统将安装所有相关的依赖包。用户可以根据系统提示确认是否进行安装。
  • 在安装软件包时,系统会根据 armory.json 中的 minSupportedVersion 字段进行版本兼容性检测。若未配置或配置了非 SemVer 版本信息,则默认兼容所有版本;若配置为 SemVer 版本,则按要求检测,若检测到远程系统版本不满足要求,则提示用户可能存在兼容性问题,并由用户决定是否安装。

前提条件

  • 配置远程地址,且配置的远程 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. 在开始搜索框或任意文件夹地址栏输入“cmd”,打开终端。

  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指定要安装软件包的目标计算机地址的别名。具体别名可参见 配置远程地址 时设置的名称,例如 default。如果未指定,则默认使用激活状态为“active”的远程地址,可通过armory remote ls命令查看
    -n, --skip-unpack设置是否跳过自动解压操作。默认情况下,Armory 在安装软件包时,会自动解压软件包根目录下的.tar.gz.tgz格式文件,并将解压后的文件与其他包文件一起安装到 SylixOS 计算机。如果不希望执行解压操作,可以通过设置此参数来跳过解压步骤
    -f, --force设置是否强制安装软件包。使用此选项将跳过所有交互式确认步骤,建议仅在无交互式环境(如 Jenkins 流水线)中使用。此选项存在风险,可能导致意外安装或覆盖,不建议使用,除非明确了解影响并接受后果

    此处以安装“SylixOS 平台、x86-64 架构的 @software_factory/tappas-dev”软件包至别名为“default”的远程计算机进行示例,执行如下命令:

    armory install @software_factory/tappas-dev -p SylixOS -a x86-64 -r default
    

    您也可以不指定相关参数,直接执行如下命令:

    armory install @software_factory/tappas-dev
    

    安装过程中,请根据界面提示确认要安装的文件。如下所示,当系统回显出现“Installation completed.”时,则表示安装成功:

    Connecting to 10.12.**.**...
    Connected
    
    Installing: @software_factory/tappas-dev@latest
    [   PRE_CHECK   ] stage: pre_check
    [   PRE_CHECK   ] Remote environment: SylixOS@x86-64@3.6.3
    [   PRE_CHECK   ] Tar version: 3.7.7
    ...  # 此处省略安装过程的详细回显信息
    Package @software_factory/tappas-dev@1.0.2 was successfully installed on remote server(10.12.**.**).
    Installation completed.
    
  3. 执行如下命令,可以查看已安装的软件包。

    armory list
    
    # 系统回显示例如下:
    Connecting to 10.12.**.**...
    Connected
    
    @install/arch1@0.0.1
    @software_factory/tappas-dev@1.0.2
    
  4. (可选)您也可以使用远程连接工具(如 WindTerm)登录到安装软件包的远程计算机。然后执行如下命令,进入软件包安装信息存储路径“/var/lib/amr”中,查看是否存在软件包相关脚本和元数据。

    cd /var/lib/amr
    cd @software_factory/   #实际执行时需要替换为安装包所属的命名空间
    cd tappas-dev@1.0.2/    #实际执行时需要替换为目标安装包的包名和版本
    

    如上图所示,amr.jsonuninst.sh 文件是系统安装软件包时自动生成的卸载脚本和安装包元数据存储文件。amr.json 中存储了安装包的名称、版本号、安装文件列表和依赖文件列表等信息。您可以执行cat amr.json命令来查看其内容。

    amr.json 文件内容示例如下:

    {
     "namespace": "software_factory",
     "name": "tappas-dev",
     "version": "1.0.2",
     "scripts": {
         "uninst": "/var/lib/amr/@software_factory/tappas-dev@1.0.2/uninst.sh"
     },
     "files": [
         "/bin/parse_hef",
         "/lib/hailo/lib3ddfa_croppers.so",
         "/lib/hailo/libcenterpose_post.so",
         "/lib/hailo/libclassification_post.so",
         "/lib/hailo/libdebug_tools.so",
         "/lib/hailo/libdepth_estimation_post.so",
         "/lib/hailo/libdetection_croppers.so",
         "/lib/hailo/libface_attributes_post.so",
         "/lib/hailo/libface_detection_post.so",
         "/lib/hailo/libface_recognition_post.so",
         "/lib/hailo/libfacial_landmarks_post.so",
         "/lib/hailo/libgsthailotools.so",
         "/lib/hailo/libhailo_cv_singleton.so",
         "/lib/hailo/libhailo_tracker.so",
         "/lib/hailo/liblpr_croppers.so",
         "/lib/hailo/libmobilenet_ssd_post.so",
         "/lib/hailo/libmspn_croppers.so",
         "/lib/hailo/libmspn_post.so",
         "/lib/hailo/libnanodet_post.so",
         "/lib/hailo/libocr_post.so",
         "/lib/hailo/libperson_attributes_post.so",
         "/lib/hailo/libre_id_croppers.so",
         "/lib/hailo/libre_id_post.so",
         "/lib/hailo/libscrfd_post.so",
         "/lib/hailo/libsemantic_segmentation_post.so",
         "/lib/hailo/libstream_id_tool.so",
         "/lib/hailo/libvms_croppers.so",
         "/lib/hailo/libwhole_buffer_croppers.so",
         "/lib/hailo/libyolo_hailortpp_post.so",
         "/lib/hailo/libyolo_post.so",
         "/lib/hailo/libyolov5seg_post.so"
       ]
     }
    

安装本地软件包

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

  2. 在终端执行如下命令,安装软件包至远程计算机。

    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
    
    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/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