深度商店 deepin-appstore 上手指南:把 Deepin 官方应用商店跑起来
【免费下载链接】deepin-appstore项目地址: https://gitcode.com/gh_mirrors/dee/deepin-appstore
Deepin 应用商店(deepin-appstore)是 Linux Deepin 发行版的官方软件中心,负责在桌面环境里搜索、下载、安装和管理 deb 与 flatpak 两种格式的软件包。想弄清"点一下安装"背后发生了什么,或者想在本地跑一份源码改改界面,这份指南按模块带你走一遍。
一个商店,三层分工
对开发者来说,理解分层比任何界面细节都重要。deepin-appstore 把工作拆给了三种语言:
| 层 | 技术栈 | 职责 |
|---|---|---|
| UI 壳 | C++ / Qt | 窗口、标题栏、D-Bus 桥接 |
| 页面前端 | TypeScript / Angular | 首页、详情页、应用列表 |
| 包管理守护进程 | Go | 实际执行 deb / flatpak 安装卸载 |
Qt 壳通过 QCEF 内嵌网页视图加载 Angular 页面;页面上的安装请求经 D-Bus 发给 Go 守护进程,再由它调用 APT 完成真正的安装。换句话说:改"长什么样"看 src/ui/ 和 src/web/src/app/,改"能干什么"看 src/daemon/。
环境准备与第一次构建
流程只有三步:拿源码、装依赖、编译。
下面的命令拉取源码,并初始化 vendor-deps 子模块(前端构建依赖放在里面):
git clone https://gitcode.com/gh_mirrors/dee/deepin-appstore.git cd deepin-appstore git submodule update --init --recursive git submodule update --remote接着安装 Qt 与 DTK(Deepin 工具包)相关的系统包:
sudo apt install cmake libdtkwidget-dev libqcef-dev libqt5webchannel5-dev \ libsass0 qttools5-dev-tools libqt5sql5-sqlite qttools5-dev最后用 CMake 编译:
mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc)正式打包参数以 debian/rules 和项目最新文档为准。
核心机制:dpk:// 链接如何定位一个软件
前端页面不会直接写死包名,而是使用一种自定义协议——dpk 链接(DPK 在这里是包格式的标记,与文件扩展名 .dpk 无关)。比如dpk://deb/gedit表示 deb 格式的 gedit,dpk://flatpak/gedit则指 flatpak 格式。链接分三段:协议名dpk、包格式、应用名;要求全小写 ASCII 字符,同一个应用可以有多个 dpk 链接对应不同格式。规则细节见 docs/dpk.md。
⚠️ 新手容易卡住的 3 个坑
- Web 资源构建需要 Node 环境。src/web/Makefile 用 Docker 里的
node:10镜像分别构建 china 和 international 两个版本。不改页面时,可以加-DBUILD_WEB_RESOURCES=OFF跳过,省掉整个前端构建。 - 守护进程脱离桌面跑不起来。Go 程序注册的是 D-Bus 会话服务
com.deepin.AppStore.Daemon,没有 Deepin 桌面会话就没有总线。它的缓存和配置分别在~/.cache/deepin/deepin-appstore-daemon与~/.config/deepin/deepin-appstore,排查问题时先看这两个目录的日志。 - 非 x86 平台构建参数不同。debian/rules 里非 amd64 架构会自动关闭 DXCB 与多线程。若在 ARM 机器上编译报错,先对照这里的参数差异。
下一步:从哪里开始参与
- 译者看 translations/,已覆盖 30 多种语言;CMake 提供
upload-i18n、download-i18n两个 target,用 lupdate 提取字符串后同步到翻译平台。 - 想读安装主流程,从 src/daemon/deb.go 开始,配合
deb_job.go能看清一个安装任务的完整生命周期。 - 遇到问题或提交补丁前,先翻一遍 CHANGELOG,带上你的系统版本信息再提 Issue,会省很多来回。
【免费下载链接】deepin-appstore项目地址: https://gitcode.com/gh_mirrors/dee/deepin-appstore
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考