在鸿蒙PC上使用pkgsrc进行包管理

在鸿蒙PC上使用pkgsrc进行包管理 1 前言本文是《在OpenHarmony设备上使用pkgsrc进行包管理》的续作。在前文中我们手动完成了 pkgsrc 在鸿蒙环境上的安装与使用验证并走通了从软件源在线安装软件包的基础流程。但当时还遗留了两个问题没有支持鸿蒙 PC鸿蒙 PC 上没有 root 权限只能在应用沙箱中执行命令前文的实验是在鸿蒙开发板和鸿蒙容器上完成的。没有 pkgin前文只能通过pkg_add配合手动设置PKG_PATH来安装软件包使用体验远不如 pkgin。这段时间我把这两个问题都解决了并搭建了一套完整的 CI/CD 流水线和分发体系发布了 pkgsrc-ohos 项目。现在用户可以开箱即用地在鸿蒙上使用 pkgsrc包括鸿蒙 PC。本文就来讲讲这些进展。2 现在的使用体验先看效果。以鸿蒙 PC 为例只需三步# 第一步下载并解压 bootstrap kitcurl-f-Ohttps://cdn.pkgsrc-ohos.com/bootstrap/bootstrap-2025Q4-arm64.zipunzip-uqbootstrap-2025Q4-arm64.zip-d/storage/Users/currentUserexportPATH/storage/Users/currentUser/.pkg/bin:/storage/Users/currentUser/.pkg/sbin:$PATH# 第二步更新包索引pkgin update# 第三步安装软件包以 xz 为例pkgininstallxz鸿蒙开发板和鸿蒙容器也类似只是 bootstrap kit 的格式和安装方式略有不同具体可参考项目文档。跟前文相比你不需要再手动准备工具链、下载源码树、打补丁、bootstrap、搭建软件源……全部都省了。下载一个压缩包加一下 PATH直接就能用 pkgin 装软件。3 鸿蒙 PC 的适配思路前文中我分析过鸿蒙 PC 上有两大挑战一是 uname 返回值不是 Linux二是没有 root 权限。这次适配的核心思路就是绕过这两个问题而不是正面硬碰。3.1 uname 问题由于鸿蒙 PC 的 uname 返回值不是 Linux在鸿蒙 PC 上直接进行源码编译会触发各种平台识别问题。但我们完全可以不在鸿蒙 PC 上编译——在 OpenHarmony开源鸿蒙上把二进制包构建好然后在鸿蒙 PC 上只做在线安装就行了。OpenHarmony 用的就是 Linux 内核uname 返回值是 Linux编译过程不存在任何平台识别问题。而编译出来的二进制文件只要安装路径对得上在鸿蒙 PC 上就能正常使用。这个思路本质上是把“构建”和“使用”解耦了构建在 OpenHarmony 上做使用在 HarmonyOS 上做。3.2 root 权限与安装路径鸿蒙 PC 上没有 root 权限只能在应用沙箱中执行命令。应用沙箱中的用户家目录是/storage/Users/currentUser因此我把 pkgsrc 的安装前缀设为/storage/Users/currentUser/.pkg。鸿蒙开发板和鸿蒙容器有 root 权限只要创建出同名目录就能使用同一套 bootstrap kit三者统一。3.3 代码签名鸿蒙 PC 上未签名的二进制文件无法执行。因此在构建阶段需要启用代码签名pkgsrc-ohos 通过在mk.conf中加入OHOS_CODE_SIGNyes来实现自动签名。这个配置只在构建时生效对用户透明。4 流水线与分发体系要让用户开箱即用光解决适配问题还不够还需要一套自动化的构建和分发体系。不可能让用户自己去跑前文那一大堆手动操作。4.1 项目组成pkgsrc-ohos 项目由四个仓库组成仓库功能ci-runnerDocker 容器镜像提供 ohos-sdk 及编译工具链的完整构建环境pkgsrcpkgsrc 2025Q4 的 fork包含鸿蒙适配补丁dl 库、ranlib、m4 等ciGitHub Actions 工作流与构建脚本docs安装指南与贡献指南其中 ci 仓库定义了两条流水线是整个分发体系的核心Bootstrap 流水线在 arm64 容器中执行 pkgsrc bootstrap预装 openssl、CA 证书、libfetch、pkgin然后打包成 bootstrap kit 上传到云端。这个阶段只在工具链升级时才需要重新执行。Bulk-build 流水线下载 bootstrap kit遍历白名单中的软件包逐个编译每编译完一个就上传到云端并更新包索引。支持增量构建——已存在的包会自动跳过。所有制品存储在阿里云 OSS通过 CDN 加速分发给用户。pkgin 的软件源地址在 bootstrap 阶段就被预配置好了用户不需要手动设置PKG_PATH。4.2 为什么能跑在 GitHub Actions 上有一个关键约束目标平台是 arm64 架构的鸿蒙系统所以构建环境必须是 arm64 的。GitHub Actions 在 2024 年开放了 arm64 runnerubuntu-24.04-arm这恰好满足了需求。整个构建过程在 arm64 架构的鸿蒙容器中完成编译出来的二进制文件天然就是 arm64 架构的无需交叉编译。4.3 白名单机制pkgsrc 源码树里面有超过两万个软件包流水线只构建白名单中列出的软件包。白名单目前包含 pkgsrc 工具链自身的依赖以及一些常用基础库后续可以逐步扩展。如果想要新增软件包需要先在 ci-runner 容器内做本地构建验证确认能成功构建后再把软件包及其级联依赖加入白名单。具体操作可以看项目文档中的贡献指南。5 小结从手动在鸿蒙开发板上跑通 pkgsrc bootstrap到支持鸿蒙 PC 开箱即用这条路的本质就是把“构建”和“使用”解耦——构建在 OpenHarmony 容器中通过流水线自动化完成用户只需要下载 bootstrap kit就能直接用 pkgin 装软件。pkgsrc-ohos 目前仍然是 POC 项目还有不少可以继续探索的方向。如果你感兴趣欢迎基于 pkgsrc-ohos 进行二次开发或模仿其中思路实现自己的移植项目。项目中已经准备了完善的二次开发指南。