docs: add ppdm (ParlzPackageDevManager) tutorial

Covers install, register/login, 'ppdm pack', publish (auto json + dup/owner rules),
'pmm install' of a published package, 'ppdm update' and FAQ. Added to the docs
tree order after 'pack'.
这个提交包含在:
JGZYES
2026-09-06 14:25:55 +08:00
父节点 012f689de1
当前提交 e72e79c2d7
修改 2 个文件,包含 119 行新增0 行删除
+1
查看文件
@@ -17,6 +17,7 @@ $GLOBALS['docs_order'] = [
'features' => 40, 'features' => 40,
'cli' => 50, 'cli' => 50,
'pack' => 55, 'pack' => 55,
'ppdm' => 57,
'mirror' => 60, 'mirror' => 60,
'translate' => 70, 'translate' => 70,
'source' => 80, 'source' => 80,
+118
查看文件
@@ -0,0 +1,118 @@
# ppdm — 打包与发布工具
`ppdm`(ParlzPackageDevManager)是 PMM 生态里的**开发者工具**:把软件打包成 `.pdm` 并发布到镜像注册表。
它与 `pmm`(安装/使用包)分开,负责“做包、发包”。
- 版本:独立版本号(当前 `0.0.1`),不受 PMM 主版本影响。
- 服务端:`https://pmm.parlz.com/ppdm`PHP,对应仓库 `web/ppdm/`)。
- 配置:`~/.ppdm/config`Linux)或 `D:\.ppdm\config`Windows)。
## 安装
下载 release 里的 `ppdm`Linux/ `ppdm.exe`Windows):
```bash
# Linux amd64
curl -L -o ~/.local/bin/ppdm \
https://github.com/JGZYES/ParlzPackageManger/releases/download/v0.5.5/ppdm
chmod +x ~/.local/bin/ppdm
# 或自更新到 ~/.ppdm/bin/ppdm
ppdm update
```
验证:
```bash
ppdm -v # ppdm 0.0.1
ppdm help
```
## 命令总览
| 命令 | 作用 |
|------|------|
| `ppdm register <email> <password>` | 注册账号(本地算术人机验证,答对才创建) |
| `ppdm login <email> <password>` | 登录,保存 token |
| `ppdm logout` | 撤销并清除 token |
| `ppdm whoami` | 显示当前邮箱 + 服务器 |
| `ppdm pack <dir> [out]` | 把 `dir` 打包成 `.pdm``dir` 内需有 `pdm-control` |
| `ppdm update` | 更新 ppdm 自身 |
| `ppdm ./xxx.pdm` | 发布包(自动生成 json) |
| `ppdm help` | 帮助 |
## 1. 注册 / 登录
```bash
ppdm register you@mail.com 你的密码 # 出一道算术题,答对即注册成功
ppdm login you@mail.com 你的密码 # 保存 token,之后可发布
```
> 人机验证在**本地**完成(一道中等难度算术题),不依赖邮件/服务器。
## 2. 打包成 .pdm
在任意目录准备源文件 + `pdm-control``Package/Version/Architecture/Description/Maintainer` 字段):
```text
myapp/
pdm-control # 见下
bin/myapp # 可执行文件、配置等(会被装进 ~/.pmm/root 下)
```
`pdm-control` 示例:
```ini
Package: myapp
Version: 1.0.0
Architecture: linux
Description: My app
Maintainer: you@mail.com
```
打包:
```bash
ppdm pack ./myapp # 生成 myapp_1.0.0.pdm
ppdm pack ./myapp out/my.pdm # 指定输出名
```
## 3. 发布(自动生成 json
```bash
ppdm ./myapp_1.0.0.pdm
```
服务端会:
- 校验登录 token;
- 计算 sha256;
- 写入 `web/mirror/dists/<pkg>.json`variants+ `dists/<pkg>/<version>.json`
-`.pdm` 放到 `web/mirror/files/<首字母>/<pkg>/`
- 追加到 `dists/packages.json`
**重复与权限**
-`name` 已存在且是**你创建的** → 可以继续上传**新版本**;
- 同版本重复上传 → 409;
- 别人改你的包 → 409(阻止越权)。
## 4. 用 pmm 安装刚发布的包
```bash
# pmm 的镜像 base 需指向 dists~/.pmm/mirror.ini
# registry = https://pmm.parlz.com/mirror/dists
pmm update
pmm install myapp
```
## 5. 更新 ppdm
```bash
ppdm update # 下载最新 ppdm 二进制到 ~/.ppdm/bin/ppdm
```
## 常见问题
- **发布失败:`package 'xx' already exists (owner: ...)`** —— 该包不是你发布的,或版本重复。
- **本地算术题**每次都随机,答错可重跑。
- **服务端地址**默认 `https://pmm.parlz.com/ppdm`;如需改:在 `~/.ppdm/config``server = <url>`
- **安装后 `pmm install <pkg>` 找不到** —— 确认 `~/.pmm/mirror.ini` 的 registry 是 `.../mirror/dists`(不是旧的 `/packages`)。