安装软件包
通过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”。
- 在安装软件包时,如果待安装的软件包有依赖项,系统将递归安装所有相关的依赖包。您可以根据系统提示确认是否进行安装。
- 系统不支持同时安装同一软件包的多个不同版本,如需安装不同版本,建议在包名上进行区分,例如使用 example-app1 和 example-app2。
前提条件
- 已 配置远程地址,且配置的远程 SylixOS 计算机需满足以下条件:
- 已安装 3.7.3 或更高版本 的
tar
命令。若未安装或需要更新,可以参考软件包 libarchive 的中 README 进行安装。 - 已安装
uname
命令,用于检测远程计算机的平台和架构信息。若未安装,请参考软件包 uname 的中 README 进行安装。
- 已安装 3.7.3 或更高版本 的
- 待安装的软件包必须符合 SylixOS 安装包配置示例 中的相关规则,并且已成功 发布软件包 至 Armory 仓库。
- 若待安装的软件包为非完全公开包,则必须 登录客户端,并确保拥有该软件包的查看与下载权限。有关权限的详细信息,请参见 权限概览。
操作步骤
在开始搜索框或任意文件夹地址栏输入“cmd”,打开终端。
在终端执行如下命令,安装软件包至远程计算机。
armory install <package-spec> -p <platform> -a <arch> -r <alias> --skip-unpack
参数说明如下:
参数 是否必选 说明 package-spec 是 软件包 名称说明符,用于指定要安装的软件包名称、标签或版本。如果不指定标签和版本,则默认安装最新版本 platform 否 指定要安装的软件包平台,目前仅支持安装 SylixOS 平台的软件包。如果不指定,客户端将自动检测平台类型。手动指定的平台值优先于自动检测,推荐使用自动检测方式,即不指定平台 arch 否 指定要安装的软件包架构,如 arm64-generic、x86-64 等。更多架构选项,请参见 SylixOS 架构清单 中的“对应 Armory 架构名称”列。您也可以在远程计算机上执行
uname -i
命令获取其架构信息,以确保安装与目标计算机架构匹配的软件包
如果不指定,则客户端将自动检测架构类型,手动指定的架构值优先于自动检测,推荐使用自动检测方式,即不指定架构alias 否 远程计算机的别名,用于指定要安装软件包的目标计算机地址。具体别名可参见 配置远程地址 时设置的名称,例如 default。如果未指定,则默认使用激活状态为“active”的远程地址,可通过 armory remote ls
命令查看skip-unpack 否 设置是否跳过自动解压操作。默认情况下,Armory 在安装软件包时,会自动解压软件包根目录下的 .tar.gz
或.tgz
格式文件,并将解压后的文件与其他包文件一起安装到 SylixOS 计算机。如果不希望执行解压操作,可以通过设置此参数来跳过解压步骤此处以安装“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.
执行如下命令,可以查看已安装的软件包。
armory list # 系统回显示例如下: Connecting to 10.12.**.**... Connected @install/arch1@0.0.1 @software_factory/tappas-dev@1.0.2
(可选)您也可以使用远程连接工具(如 WindTerm)登录到安装软件包的远程计算机。然后执行如下命令,进入软件包安装信息存储路径“/var/lib/amr”中,查看是否存在软件包相关脚本和元数据。
cd /var/lib/amr cd @software_factory/ #实际执行时需要替换为安装包所属的命名空间 cd tappas-dev@1.0.2/ #实际执行时需要替换为目标安装包的包名和版本
如上图所示,amr.json 和 uninst.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" ] }