文档首页/ 制品仓库 CodeArts Artifact/ 最佳实践/ 通过Linux命令行上传/获取Debian私有组件
更新时间:2024-11-06 GMT+08:00

通过Linux命令行上传/获取Debian私有组件

背景信息

私有依赖库管理各种开发语言对应的私有组件包(开发者通俗称之为私服)。由于不同的开发语言组件通常有不同的归档格式要求,私有依赖库目的就在于管理私有开发语言组件并在企业或团队内共享给其他开发者开发使用。

本文档介绍如何通过Linux命令行上传私有组件到Debian私有依赖库、如何从Debian私有依赖库获取依赖包。

前提条件

  • 已有可用的Debian组件。
  • 已有可连通公网的Linux系统主机。
  • 已创建Debian格式私有依赖库。
  • 已添加当前账号对当前私有库的权限,请参考配置私有依赖库权限

发布私有组件到Debian私有依赖库

  1. 登录制品仓库,选择私有依赖库,进入Debian私有依赖库。单击页面右侧“操作指导”
  2. 在弹框中单击“下载配置文件”

  3. 在Linux主机中执行以下命令,上传Debian组件。

    curl -u <USERNAME>:<PASSWORD> -X PUT "https:// <repoUrl>/<DEBIAN_PACKAGE_NAME>;deb.distribution=<DISTRIBUTION>;deb.component=<COMPONENT>;deb.architecture=<ARCHITECTURE>" -T <PATH_TO_FILE>
    • “USERNAME”“PASSWORD”“repoUrl”来源于2下载的配置文件中“Debian上传命令”部分,如图1所示。
      图1 Debian上传命令
      • USERNAME:上传文件使用的用户名,可以从Debian配置文件中获取,参考图1中标示的USERNAME。
      • PASSWORD:上传文件使用的密码,可以从Debian配置文件中获取,参考图1中标示的PASSWORD。
      • repoUrl:上传文件使用的url,可以从Debian配置文件中获取,参考参考图1中标示的repoUrl。
    • “DEBIAN_PACKAGE_NAME”“DISTRIBUTION”“COMPONENT”“ARCHITECTURE”来源于待上传的Debian组件。

      以组件“a2jmidid_8_dfsg0-1_amd64.deb”为例。

      • DEBIAN_PACKAGE_NAME:软件包名称,例如:“a2jmidid_8_dfsg0-1_amd64.deb”
      • DISTRIBUTION:发行版本,例如:“trusty”
      • COMPONENT:组件名称,例如:“main”
      • ARCHITECTURE:体系结构,例如:“amd64”
      • PATH_TO_FILE:Debian组件的本地存储路径,例如:“/root/a2jmidid_8_dfsg0-1_amd64.deb”

    完整的命令如下图所示:

  4. 命令执行成功,进入私有依赖库,可找到已上传的Debian私有组件。

从Debian私有依赖库获取依赖包

发布私有组件到Debian私有依赖库中发布的Debian私有组件为例,介绍如何从Debian私有依赖库中获取依赖包。

  1. 参考发布私有组件到Debian私有依赖库,下载Debian私有依赖库的“公钥”文件。

  2. 导入gpg公钥。

    gpg --import <PUBLIC_KEY_PATH>

    PUBLIC_KEY_PATH:Debian公钥的本地存储路径,例如:“artifactory.gpg.public”

  3. apt导入公钥。

    gpg --export --armor <SIG_ID> | apt-key add -

  4. apt仓库源添加。

    打开配置文件(获取方法参考发布私有组件到Debian私有依赖库),将文件中所有“DISTRIBUTION”替换为上传Debian文件时使用的“COMPONENT”值(例如“main”),并根据下载的配置文件sources.list执行仓库源添加。

  5. 仓库源添加后,使用如下命令更新仓库源。

    apt-get update

  6. 执行以下命令,下载Debian包。其中a2jmidid为包的“PACKAGE”值,请根据实际情况修改。

    apt download a2jmidid

    <PACKAGE>获取方法

    • 下载Debian组件的Packages源数据,以a2jmidid包为例: