当前位置: 首页 > news >正文

学习鸿蒙-构建私有仓储

1.选择

鸿蒙提供ohpm-repo工具用于构建本地私有仓储

ohpm-repo下载

2.环境配置

安装node,ohpm-repo 支持 node.js 18.x 及以上版本

node最新版本下载

3.配置文件及运行

        1.解压 ohpm-repo 私仓工具包

        2.进入 ohpm-repo 解压目录的 conf 目录内,打开 config.yaml 配置文件
##### server configuration section #####
listen: localhost:8088        # 建议修改为具体的ip/域名
# listen:
# - localhost:8088            # 监听本机环回地址
# - http://localhost:8088     # 监听本机环回地址
# - 0.0.0.0:8088              # 监听本机所有地址 (INADDR_ANY)
# 协议可配置 http 或者 https,默认为 http
# port: 1-65535(Window系统)/ 1024-65535(Linux或Mac系统)# 可选 (listen 为 https 协议时必须配置)
https_key: ''                 # https 服务使用的 key 的路径  (不配置默认为'')
https_cert: ''                # https 服务使用的 crt 的路径  (不配置默认为'')##### server deploy root section #####
deploy_root: ''                # 安装根目录 (不配置默认为 `<现有用户home目录>/ohpm-repo`),只支持绝对路径,且路径目录必须存在##### server numeric limit section #####
max_package_size: 300          # 上传包大小限制,单位是MB (0, 300],不配置默认为 300
max_extract_size: 800          # 压缩包解压后大小限制,单位是MB ,不配置默认为 800
max_extract_file_num: 30000    # 压缩包解压后文件个数限制,默认为30000个
user_rate_limit: 100           # 用户访问频率控制,单位是次/s (0, 10000],不配置默认为 100
fetch_timeout: 60              # 请求/响应的超时时间,单位是秒 (0, 3600],不配置默认为 60
keep_alive_timeout: 60         # TCP 保持连接的超时时间,单位是秒 (0, 3600],不配置默认为 60
api_timeout: 60                # api超时时间,单位是秒(0, 3600],不配置默认为 60
upload_lock_hour: 24           # 下架某一三方包所有版本后,限时禁止同名三方包上传,单位是小时 (0, 168],不配置,默认为 24
upload_max_times: 100          # 单用户24小时内上传次数限制 (0, 100000],不配置默认为 100
operation_log_retention: 100   # 数据库中操作日志保留时间,单位是天,不配置默认为 100
##### metadata storage section #####
## 数据存储类型 filedb 和 mysql 二选一,不可都配置
db:                         # 必须用 yaml 数组形式写法type: filedbconfig:                   # 如果想修改存储路径且保留旧的数据,则需要把旧路径下的数据文件迁移至新路径path: ./db              # 本地数据存储路径,不配置默认为<deploy_root>/db;#db:                        # 必须用yaml数组形式写法
#  type: mysql
#  config:
#    host: "localhost"      # 数据库主机地址
#    port: 3306             # 数据库端口 (0,65535]
#    username: root         # 数据库的用户名
#    password: "password"   # 数据库的用户密码(请配置明文, 最终在部署目录中会转换为密文)
#    database: "repo"       # 数据库名##### storage section #####
## 文件存储类型fs,sftp 和 custom 三选一,不可多选。store:                               # 必须用 yaml 数组形式写法type: fsconfig:                            # 上传资源后如若要修改存储路径,则需要把旧路径下的数据迁移至新路径中path: ./storage                  # 已上架三方库存储路径,不配置默认为 <deploy_root>/storage;#server: http://localhost:8088   # 仓库下载链接地址,不配置取默认值# 文件存储类型为 sftp 时,最多配置三个 sftp
#store:                               # 必须用 yaml 数组形式写法
#  type: sftp                         # 当且仅当 db 的类型为 mysql 时,store 的类型才能为 sftp
#  config:
#    location:
#      -
#        name: test_one_sftp          # 主机名字名字不能与其他sftp配置重复
#        host: "localhost"            # 主机地址
#        port: 22                     # 主机端口 (0,65535]
#        read_username: "read"        # 主机有读权限的用户名字
#        read_password: "password"    # 主机有读权限的用户密码(请配置明文, 最终在部署目录中会转换为密文)
#        write_username: "write"      # 主机有写权限的用户名字
#        write_password: "password"   # 主机有写权限的用户密码(请配置明文, 最终在部署目录中会转换为密文)
#        path: /source22              # 相对 sftp 根目录的文件路径,仅限/开头,且路径文件夹必须存在
#      -
#        name: test_two_sftp
#        host: "localhost"
#        port: 24
#        read_username: "read"
#        read_password: "password"
#        write_username: "write"
#        write_password: "password"
#        path: /source24
#    #server: http://localhost:8088   # 仓库下载链接地址,不配置取默认值#store:
#  type: custom                                            # custom是自定义存储插件类型,自定义存储插件开发流程见指导文档
#  config:
#    export_name: CustomStorage                            # 插件export的类名
#    plugin_path: plugins/CustomStorage.js                 # 插件的绝对路径或者相对于ohpm-repo软件包的路径,建议将插件放在软件包的plugins目录下
#    custom_field: "test"                                  # 自定义字段,通过引入libs/common/getStorageConfigInfo.js的getStorageConfigInfo方法获取自定义字段的值
#    #server: http://localhost:8088                        # 仓库下载链接地址,不配置取默认值
##### uplink section #####
uplink_cache_path: ./uplink      # 缓存路径,不配置默认为 <deploy_root>/uplink
uplink_cache_time: 168           # 远程包 metadata 缓存时间,单位为小时,默认 168 小时,取值范围为 (0, 8760]##### log section #####
logs_path: ./logs                # 日志路径,不配置默认为 <deploy_root>/logs##### log level section #####
# 日志级别: 级别由低到高分别是 all、trace、debug、info、warn、error、fatal、mark、off
# run,operate 和 access 不配置或者配置错误,默认为 info
loglevel_run: info
loglevel_operate: info
loglevel_access: info##### auth plugin section #####
# 可选项,自定义认证插件配置
#auth_plugin:
#  name: CustomAuth              # 认证插件的名字
#  path: plugins/CustomAuth.js   # 插件的绝对路径或者相对于ohpm-repo软件包的路径,建议将插件放在软件包的plugins目录下##### compatibleSdkVersion等兼容性字段检测日志等级 #####
# 可选值:close、info、warn、error,默认:warn
compability_log_level: warn##### 是否允许下架被其他组件依赖的包 #####
# 可选项:true,false, 默认:false
allow_remove_depended_packages: false##### 是否使用文件上传新接口 #####
# 可选项:true,false, 默认:true
allow_new_file_upload_api: true

主要是修改

  1. listen: <部署ohpm-repo机器的ip>:8088
  2. deploy_root: '~/AppData/Roaming/Huawei/ohpm-repo'
3.运行

进入ohpm-repo工具包解压目录中的 bin 目录下,检查环境是否ok,出现版本号为ok

ohpm-repo -v

进入ohpm-repo工具包解压目录中的 bin 目录下,执行安装命令

ohpm-repo install

这时在环境变量会增加deploy_root这个参数值

ohpm-repo安装成功后,进入ohpm-repo工具包解压目录下的 bin 目录下,执行如下命令,启动 ohpm-repo:

ohpm-repo start

运行结果为下面图,则代表成功

4.登录后台

http://localhost:8088/   (<部署ohpm-repo机器的ip>:8088)

ohpm-repo 首次启动时,默认创建一个管理员账号,账号名称:admin,密码:12345Qq! ,需要更改密码

修改后,登录

在仓库管理可以看到仓库名

5.三方库发布到私有仓储
        1.web后台发布

                在Web页面用管理员账号登录ohpm-repo私仓管理地址,在个人中心 > 仓库管理中,点击管理三方包 > 上传三方包,包的后缀名必须为 .har 或者 .tgz。

                

        2. 配置项目私有仓储

        在用户目录下有.ohpm文件夹里面有.ohpmrc

### 仓库配置,支持配置多个地址,使用英文逗号分割
registry=https://repo.harmonyos.com/ohpm/
# registry=https://ohpm.openharmony.cn/ohpm/
## 支持配置含有group的仓库,优先匹配
#@group1:registry=
#@group2:registry=### 代理配置
#no_proxy=
#http_proxy=
#https_proxy=### 证书校验配置
## 是否校验https仓库的证书,取值:true|false, default: true, 为true时需要配置ca_files证书路径
strict_ssl=true
#ca_files=### 发布配置
## 因为registry支持配置多仓,所以此处需明确指定发布仓
publish_registry=https://repo.harmonyos.com/ohpm/
## 用户发布三方库的发布id,从云端个人中心获取
#publish_id=
## 用户私钥文件路径,公钥需在云端进行配置
#key_path=### 缓存路径, 默认在用户目录下的.ohpm/cache
#cache=### 日志级别, 取值:debug|info|warn|error, default: info
log_level=info### 网络请求超时时间, 单位ms, 默认为60s
fetch_timeout=60000

        配置registry地址(用于拉取)和publish_registry(用于上传)

  1. ohpm config set registry <配置的ohpm-repo私仓服务地址>/repos/ohpm 也可以ohpm install @ohos/lottie --registry <配置的ohpm-repo私仓服务地址>/repos/ohpm
  2. ohpm config set publish_registry <ohpm-repo私仓管理地址>/repos/ohpm
registry=http://192.168.158.99:8087/repos/ohpm
strict_ssl=true
publish_registry=http://192.168.158.99:8087/repos/ohpm
log_level=info
fetch_timeout=60000
如果要发布,还需要配置rsa和publish_id

利用工具 ssh-keygen 生成公、私钥,必须输入passphrase(eg.123456)

ssh-keygen -m PEM -t RSA -b 4096 -f <your_key_path>
// eg.
ssh-keygen -m PEM -t RSA -b 4096 -f D:\path\my_key_path

登录 ohpm-repo 私仓管理地址,单击主页右上角的个人中心,新增公钥,将公钥文件(<your_key_path>.pub)的内容粘贴到公钥输入框中

打开命令行工具,执行如下命令设置私钥路径

ohpm config set key_path <your_key_path>
登录 ohpm-repo 私仓管理地址,单击主页右上角的个人中心,复制发布码

将发布码配置到 .ohpmrc 文件中,可执行如下命令

ohpm config set publish_id <your_publish_id>
        3.命令行发布

                静态共享包HAR包

ohpm config set publish_registry <ohpm-repo私仓管理地址>/repos/ohpm
ohpm publish demo.har

或者

ohpm publish demo.har --publish_registry <ohpm-repo私仓管理地址>/repos/ohpm

                动态共享包 HSP 包

                        动态共享包 HSP 包不能直接发布在ohpm-repo内,需要先转化为 .tgz 包,转换方TGZ 包的发布流程同 HAR 一致。

ohpm config set publish_registry <ohpm-repo私仓管理地址>/repos/ohpm
ohpm publish demo.tgz

或者

ohpm publish demo.tgz --publish_registry <ohpm-repo私仓管理地址>/repos/ohpm
组件上传后,在ohpm-repo
6.使用上传到私有仓储的库

        参考5.2 配置项目私有仓储,设置好registry

ohpm config set registry <配置的ohpm-repo私仓服务地址>/repos/ohpm  或者 
ohpm install @ohos/lottie --registry <配置的ohpm-repo私仓服务地址>/repos/ohpm

相关文章:

学习鸿蒙-构建私有仓储

1.选择 鸿蒙提供ohpm-repo工具用于构建本地私有仓储 ohpm-repo下载 2.环境配置 安装node&#xff0c;ohpm-repo 支持 node.js 18.x 及以上版本 node最新版本下载 3.配置文件及运行 1.解压 ohpm-repo 私仓工具包 2.进入 ohpm-repo 解压目录的 conf 目录内&#xff0c;打开 c…...

经验是负债,学习是资产

经验是负债&#xff0c;学习是资产 经验是负债&#xff0c;学习是资产。这是李嘉诚先生的一句名言。他一语道出了学习在企业发展中的推动作用。 企业家经营的目的&#xff0c;无非就是将利润最大化。企业能够产生利润&#xff0c;靠的是提升自身业绩、降低运营成本&#xff0c;…...

电脑屏幕录制工具分享5款,附上详细电脑录屏教程(2024全新)

日月更迭&#xff0c;转眼间已经来到了2024年的立秋&#xff0c;在这个数字技术快速发展的时代&#xff0c;电脑录屏技术已经成为了一项不可或缺的技能&#xff0c;无论是用于工作汇报、在线教学、游戏直播还是个人娱乐。那么录屏软件哪个好用呢&#xff1f;接下来&#xff0c;…...

Docker资源隔离的实现策略以及适用场景

Docker通过多种技术实现资源隔离&#xff0c;确保不同容器之间相互独立并有效利用主机资源。 以下是Docker资源隔离的主要实现策略以及适用场景&#xff1a; 实现策略 1、命名空间&#xff08;Namespaces&#xff09; 进程命名空间&#xff08;PID Namespace&#xff09;: 隔…...

PLL基本原理、设计及应用

PLL基本原理 锁相环&#xff08;Phase-Locked Loop, PLL&#xff09;是一种基本的反馈控制系统&#xff0c;广泛应用于电子通信、信号处理、时钟同步等多个领域。PLL通过反馈机制锁定输入信号的频率和相位&#xff0c;从而实现输出信号与输入信号的同步。其基本工作原理可以概…...

Qt实现类似淘宝商品看板的界面,带有循环翻页以及点击某页跳转的功能

效果如下&#xff1a; #ifndef ModelDashboardGroup_h__ #define ModelDashboardGroup_h__#include <QGridLayout> #include <QLabel> #include <QPushButton> #include <QWidget>#include <QLabel> #include <QWidget> #include <QMou…...

2024下半年国际学术会议一览表

在科技与人文的交汇点&#xff0c;2024年的国际学术会议季即将拉开帷幕&#xff0c;一系列聚焦于计算机科学与人工智能、工程与技术、教育与社会科学的盛会&#xff0c;不仅展示了全球学术研究的最新成果&#xff0c;更促进了跨学科交流与合作&#xff0c;为未来的科技发展与社…...

serial靶场

项目地址 https://download.vulnhub.com/serial/serial.zip 实验过程 将下载好的靶机导入到VMware中&#xff0c;设置网络模式为NAT模式&#xff0c;然后开启靶机虚拟机 使用C段扫描&#xff0c;获取靶机IP地址 arp-scan -l 扫描一下端口 nmap -sV -p- 192.168.48.149 查看…...

如何在Vue3项目中引入并使用Echarts图表

在Vue 3项目中引入并使用ECharts图表&#xff0c;你可以通过npm或yarn来安装ECharts&#xff0c;然后在Vue组件中引入并使用它。以下是一个基本的步骤指南&#xff1a; 1. 安装ECharts 首先&#xff0c;你需要在你的Vue 3项目中安装ECharts。打开你的终端或命令提示符&#x…...

C# 子类、接口

栏目总目录 子类 继承的概念 继承机制&#xff1a;C#支持单继承&#xff0c;即一个类只能直接继承自一个基类。但基类本身可以继承自另一个类&#xff0c;从而实现继承链。继承关键字&#xff1a;使用冒号&#xff08;:&#xff09;表示继承关系&#xff0c;子类在声明时指定…...

Qt实现圆形窗口

重新实现paintEvent()函数。 效果如下&#xff1a; 效果为蓝色区域&#xff0c;背景是vs接面&#xff0c;代码直接复制可用&#xff0c;留给有需要的人。 #ifndef CircleWidget_h__ #define CircleWidget_h__#include <QWidget>class CCircleWidget : public QWidget {Q…...

LeetCode 算法:有效的括号 c++

原题链接&#x1f517;&#xff1a;有效的括号 难度&#xff1a;简单⭐️ 题目 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; …...

react和vue的diff算法的差别

React 的 Diff 算法 React 的 diff 算法主要基于以下几个原则&#xff1a; 同层比较&#xff1a; React 只会比较同一层级的节点&#xff0c;不会跨层级比较。假设跨层级的变化较少&#xff0c;从而简化了算法&#xff0c;提高了性能。 深度优先遍历&#xff1a; React 采用深…...

算法【滑动窗口】

滑动窗口指的是维持左、右边界都不回退的一段范围&#xff0c;来求解很多子数组&#xff08;串&#xff09;的相关问题。 滑动窗口的关键是找到范围和答案指标之间的单调性关系&#xff08;类似贪心&#xff09;。 滑动过程&#xff1a;滑动窗口可以用简单变量或者结构来维护…...

【RISC-V设计-06】- RISC-V处理器设计K0A之ALU

【RISC-V设计-06】- RISC-V处理器设计K0A之ALU 文章目录 【RISC-V设计-06】- RISC-V处理器设计K0A之ALU1.简介2.顶层设计3.内部结构4.端口说明5.操作码说明6.设计代码7.总结 1.简介 算术逻辑单元&#xff08;Arithmetic Logic Unit&#xff0c;简称 ALU&#xff09;是计算机中…...

MyIP:强大且简单好用!

在这个数字化的时代&#xff0c;IP地址就像是我们的网络身份证。各位在日常的工作中&#xff0c;肯定会会遇到需要和 IP 地址相关的需求。 今天和大家聊一聊一个非常好用的开源 IP 工具项目 - MyIP。 简介 MyIP一个开源IP工具箱&#xff0c;提供了一系列的网络检测工具&…...

Redis作为缓存,如何与MySql的数据进行同步?

允许延时一致的业务 概念 采用异步通知使用MQ作为中间件&#xff0c;更新数据之后通知缓存删除利用canal中间件&#xff0c;不需要修改业务代码&#xff0c;伪装成Mysql的一个从节点&#xff0c;canal通过读取binlog数据更新缓存 强一致性业务 概念 采用Redission提供的读写锁…...

Android 通知栏推送功能

Android 通知栏推送功能 Android 通知栏推送功能 让消息在用户的通知栏上显示&#xff0c;并且点击后跳转到指定的页面 MainActivity.Java import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import andro…...

【LVS】防火墙mark标记解决调度问题

实验环境是在之前部署DR模式集群的基础上做的&#xff0c;参考如下 部署DR模式集群 以http和https为例&#xff0c;当我们在webserver中同时开放80和443端口&#xff0c;那么默认控制是分开轮询的&#xff0c;就会出现了一个轮询错乱的问题&#xff1a; 当第一次访问80被轮询…...

算法笔记|Day20回溯算法II

算法笔记|Day20回溯算法II ☆☆☆☆☆leetcode 39. 组合总和题目分析代码 ☆☆☆☆☆leetcode 40.组合总和II题目分析代码 ☆☆☆☆☆leetcode 131.分割回文串题目分析代码 ☆☆☆☆☆leetcode 39. 组合总和 题目链接&#xff1a;leetcode 39. 组合总和 题目分析 本题采用回…...

图像去雾新思路:当无监督学习遇上注意力机制(CycleGAN+SK Fusion深度解析)

图像去雾新思路&#xff1a;当无监督学习遇上注意力机制&#xff08;CycleGANSK Fusion深度解析&#xff09; 清晨的山间薄雾给风景增添了几分朦胧美&#xff0c;但对于计算机视觉系统而言&#xff0c;这种大气散射效应却是清晰感知世界的障碍。从自动驾驶车辆的环境感知到卫星…...

OpenClaw生活助手:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF管理家庭购物清单与比价

OpenClaw生活助手&#xff1a;Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF管理家庭购物清单与比价 1. 为什么需要AI管理购物清单&#xff1f; 上周六早上&#xff0c;我站在超市冷藏柜前盯着三款不同品牌的有机牛奶发呆——这个场景已经重复了三个月。每次采购都要花20…...

宝塔面板PHP8.0如何快速安装Redis缓存扩展_在PHP设置的安装扩展模块中一键配置

宝塔面板PHP 8.0下无法一键安装Redis扩展&#xff0c;因官方源无适配预编译包且构建脚本不兼容ZTS/NTS、phpize路径及头文件要求&#xff1b;须用pecl手动编译redis-5.3.7并正确配置php.ini。宝塔面板 PHP 8.0 下无法通过「安装扩展」一键启用 Redis&#xff0c;是因为官方源里…...

设计工程师到底应不应该自己验证自己的设计?

让设计工程师自己跑仿真、自己查波形。效率是真的高&#xff0c;问题也确实能发现不少。但有一个麻烦没法回避——人很难发现自己思维盲区里的东西。设计一个模块的时候&#xff0c;工程师脑子里已经有了一套逻辑假设。写验证用例的时候&#xff0c;这套假设还在&#xff0c;测…...

《SpringBoot》史上最全SpringBoot相关注解介绍

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

隐私优先方案:OpenClaw+本地化Qwen3.5-9B处理敏感数据

隐私优先方案&#xff1a;OpenClaw本地化Qwen3.5-9B处理敏感数据 1. 为什么我们需要隐私优先的AI方案 去年我在帮一家诊所做数字化改造时&#xff0c;遇到了一个棘手问题&#xff1a;他们需要自动化处理患者病历&#xff0c;但又担心使用云端AI服务会导致数据泄露。这让我意识…...

IT自动化运维平台建设解决方案:三阶段演进思路、平台架构与核心能力、关键功能模块、典型自动化场景与执行流程

该方案提出从人工运维向自动化、智能化演进&#xff0c;核心是通过统一平台整合Zabbix监控、脚本管理与工单系统&#xff0c;实现告警自动治愈与周期性任务自动化执行。方案采用分批推进策略&#xff0c;旨在提升效率、保障业务连续性并降低人为风险&#xff0c;最终落地智能化…...

论文写作卡壳不用愁!这几款AI工具帮你高效赶稿

写论文最怕思路卡壳&#xff1f;大纲憋不出来、正文续写没头绪、降重改到崩溃&#xff0c;还担心AI生成痕迹过不了检测&#xff1f;以下几款实用AI写作工具直击本硕生核心需求&#xff0c;从初稿到答辩全流程辅助&#xff0c;让写作效率直接翻倍。 一、SpeedAI科研小助手&#…...

5大核心功能打造高效媒体播放:免费开源解码工具LAV Filters全解析

5大核心功能打造高效媒体播放&#xff1a;免费开源解码工具LAV Filters全解析 【免费下载链接】LAVFilters LAV Filters - Open-Source DirectShow Media Splitter and Decoders 项目地址: https://gitcode.com/gh_mirrors/la/LAVFilters 在数字媒体播放领域&#xff0c…...

提升开发效率:用快马一键生成自动化twitter x数据采集工具

今天想和大家分享一个提升开发效率的小技巧——如何快速搭建一个自动化采集Twitter X数据的工具。作为一个经常需要分析社交媒体数据的人&#xff0c;我发现手动收集数据实在太费时间了&#xff0c;于是研究了一下如何用Python实现自动化采集。 需求分析 首先明确我们需要实现的…...