mirror: commit full package store (nodejs/git/pmm/pureftpd .pdm) + mirror README

- un-ignore mirror/packages so the mirror is complete & downloadable
- mirror/README.md: how to serve, browse, install from the mirror
这个提交包含在:
JGZYES
2026-08-30 22:17:06 +08:00
父节点 f3d956b243
当前提交 546a5c1ada
修改 20 个文件,包含 239 行新增5 行删除
+8 -5
查看文件
@@ -1,20 +1,23 @@
# build artifacts
# build artifacts / binaries (keep these OUT of git)
*.exe
*.o
/dist/
# packaged binaries / large upstream files (keep them out of git)
# PMM tool packages & big upstream files (outside mirror/packages)
*.pdm
*.msi
*.tar.xz
*.tar.gz
*.zip
# mirror runtime data (the browser-station packages are regenerated at deploy)
# mirror runtime logs
mirror/server.log
mirror/packages/
mirror/files/
# editors
.vscode/
.idea/
# The mirror registry (mirror/packages) IS committed so the mirror is complete
# and downloadable. Un-ignore the .pdm files there; *.pdm elsewhere stays ignored.
!mirror/packages/
!mirror/packages/**/*.pdm
+69
查看文件
@@ -0,0 +1,69 @@
# PMM 镜像仓库(mirror/
这是 ParlzPackageManger (PMM) 的**软件包镜像**:一个"目录+索引"式包仓库,
像清华 apt 镜像那样,可被浏览器查看、也可供 `pmm`/`pdm` 直接下载安装。
## 内容
```
mirror/
├── README.md # 本说明
├── index.php # 只读 PHP 包浏览页(索引 + 详情 + 下载)
└── packages/ # 实际包文件 + registry 索引
├── <包>.json # latest 指针(含 variants
└── <包>/<版本>-<平台>-<架构>.pdm/.json
```
已收录的包(`packages/` 下):
| 包 | 版本 | 平台 / 架构 | 文件 |
|---|---|---|---|
| nodejs | 24.20.0 | windows/amd64, linux/amd64 | `nodejs/24.20.0-windows.pdm`, `24.20.0-linux.pdm` |
| git | 2.55.0.5 | windows/amd64 | `git/2.55.0.5-windows.pdm` |
| pmm | 0.1.1 | windows/amd64, linux/amd64, linux/aarch64 | `pmm/0.1.1-*.pdm` |
| pureftpd | 1.0.51 | linux | `pureftpd/1.0.51-linux.pdm` |
## 查看 / 下载
把本目录用 PHP 服务起来即可(不要用 router 参数,让 `.pdm` 走静态文件):
```sh
cd mirror && php -S 0.0.0.0:8080
```
- 打开 `http://host:8080/` → 包索引浏览页
- `http://host:8080/?pkg=nodejs` → nodejs 各平台变体 + 下载 `.pdm`
- `http://host:8080/packages/<包>/<版本>-<平台>.pdm` → 直接下载文件
Apache / Nginx 同理:`DirectoryIndex index.php``.pdm` 走静态文件即可。
## 客户端使用
把镜像加入客户端并安装:
```ini
# ~/.pmm/mirror.iniWindows: %USERPROFILE%\.pmm\mirror.ini;或 -pd 后 D:\.pmm\mirror.ini
[main]
registry = https://pmm.parlz.com/mirror/packages
priority = 1
[sz]
registry = https://sz.pmm.parlz.com/mirror/packages
priority = 20
```
```sh
pmm install nodejs # 自动识别本机 os/arch,从镜像下载对应平台
pmm install pmm # 安装 PMM 工具(含 pmm/pdm
pmm self-update # 更新 pmm(自动选平台/架构)
```
也可直接 `pmm install ./packages/nodejs/24.20.0-windows.pdm` 安装本地包。
## 数据格式
- `packages/<包>.json` — latest 指针:`{ name, version, os, arch, variants:[...] }`
- `packages/<包>/<版本>-<平台>-<架构>.pdm` — 包文件(`bin/` 内的可执行)
- `packages/<包>/<版本>-<平台>-<架构>.json` — 该变体元数据(url / sha256 / size
`pmm install` 会按当前系统的 os+arch + 版本约束,在 `variants` 里选最高版本下载。
+17
查看文件
@@ -0,0 +1,17 @@
{
"name": "git",
"version": "2.55.0.5",
"os": "windows",
"description": "Git (Windows)",
"variants": [
{
"name": "git",
"version": "2.55.0.5",
"file": "2.55.0.5-windows.pdm",
"url": "https://pmm.parlz.com/mirror/packages/git/2.55.0.5-windows.pdm",
"sha256": "ad3d4d7e6705a4bda42fbc81c47e32bbea01c46c8225ef7990067f882eadca88",
"os": "windows",
"description": "Git for Windows"
}
]
}
@@ -0,0 +1,9 @@
{
"name": "git",
"version": "2.55.0.5",
"file": "2.55.0.5-windows.pdm",
"url": "https://pmm.parlz.com/mirror/packages/git/2.55.0.5-windows.pdm",
"sha256": "ad3d4d7e6705a4bda42fbc81c47e32bbea01c46c8225ef7990067f882eadca88",
"os": "windows",
"description": "Git for Windows"
}
二进制文件未显示。
+26
查看文件
@@ -0,0 +1,26 @@
{
"name": "nodejs",
"version": "24.20.0",
"os": "windows",
"description": "Node.js (Windows/Linux)",
"variants": [
{
"name": "nodejs",
"version": "24.20.0",
"file": "24.20.0-windows.pdm",
"url": "https://pmm.parlz.com/mirror/packages/nodejs/24.20.0-windows.pdm",
"sha256": "96dd731adf20a81c40ea571558e70047a996ce0ad441fb9060bde37dfa21898a",
"os": "windows",
"description": "Node.js (Windows)"
},
{
"name": "nodejs",
"version": "24.20.0",
"file": "24.20.0-linux.pdm",
"url": "https://pmm.parlz.com/mirror/packages/nodejs/24.20.0-linux.pdm",
"sha256": "a43b1dcab239d22e16db4ff3d88cf6699b071cbe47bb78480361a751f3c4962b",
"os": "linux",
"description": "Node.js (Linux x64)"
}
]
}
@@ -0,0 +1,9 @@
{
"name": "nodejs",
"version": "24.20.0",
"file": "24.20.0-linux.pdm",
"url": "https://pmm.parlz.com/mirror/packages/nodejs/24.20.0-linux.pdm",
"sha256": "a43b1dcab239d22e16db4ff3d88cf6699b071cbe47bb78480361a751f3c4962b",
"os": "linux",
"description": "Node.js (Linux x64)"
}
二进制文件未显示。
@@ -0,0 +1,9 @@
{
"name": "nodejs",
"version": "24.20.0",
"file": "24.20.0-windows.pdm",
"url": "https://pmm.parlz.com/mirror/packages/nodejs/24.20.0-windows.pdm",
"sha256": "96dd731adf20a81c40ea571558e70047a996ce0ad441fb9060bde37dfa21898a",
"os": "windows",
"description": "Node.js (Windows)"
}
二进制文件未显示。
+36
查看文件
@@ -0,0 +1,36 @@
{
"name": "pmm",
"version": "0.1.1",
"os": "windows",
"arch": "amd64",
"description": "PMM tools v0.1.1",
"variants": [
{
"version": "0.1.1",
"os": "windows",
"arch": "amd64",
"file": "0.1.1-windows-amd64.pdm",
"url": "https://pmm.parlz.com/mirror/packages/pmm/0.1.1-windows-amd64.pdm",
"sha256": "3358147db039e9dbd9fced004a25743fe5bcc889e0ebcaf535442ede93cceefb",
"description": "PMM tools (pmm+pdm) v0.1.1"
},
{
"version": "0.1.1",
"os": "linux",
"arch": "amd64",
"file": "0.1.1-linux-amd64.pdm",
"url": "https://pmm.parlz.com/mirror/packages/pmm/0.1.1-linux-amd64.pdm",
"sha256": "3d02ad8419fe8d2a45a4a692b1b94802173342ec9e51060267b70452695597cd",
"description": "PMM tools (pmm+pdm) v0.1.1"
},
{
"version": "0.1.1",
"os": "linux",
"arch": "aarch64",
"file": "0.1.1-linux-aarch64.pdm",
"url": "https://pmm.parlz.com/mirror/packages/pmm/0.1.1-linux-aarch64.pdm",
"sha256": "51d3f3bccad6d05ab9cff794435a87f664570218b6c37f9ecf53b0783b4d141b",
"description": "PMM tools (pmm+pdm) v0.1.1"
}
]
}
@@ -0,0 +1,10 @@
{
"name": "pmm",
"version": "0.1.1",
"file": "0.1.1-linux-aarch64.pdm",
"os": "linux",
"arch": "aarch64",
"url": "https://pmm.parlz.com/mirror/packages/pmm/0.1.1-linux-aarch64.pdm",
"sha256": "51d3f3bccad6d05ab9cff794435a87f664570218b6c37f9ecf53b0783b4d141b",
"description": "PMM tools (pmm+pdm) v0.1.1"
}
二进制文件未显示。
@@ -0,0 +1,10 @@
{
"name": "pmm",
"version": "0.1.1",
"file": "0.1.1-linux-amd64.pdm",
"os": "linux",
"arch": "amd64",
"url": "https://pmm.parlz.com/mirror/packages/pmm/0.1.1-linux-amd64.pdm",
"sha256": "3d02ad8419fe8d2a45a4a692b1b94802173342ec9e51060267b70452695597cd",
"description": "PMM tools (pmm+pdm) v0.1.1"
}
二进制文件未显示。
@@ -0,0 +1,10 @@
{
"name": "pmm",
"version": "0.1.1",
"file": "0.1.1-windows-amd64.pdm",
"os": "windows",
"arch": "amd64",
"url": "https://pmm.parlz.com/mirror/packages/pmm/0.1.1-windows-amd64.pdm",
"sha256": "3358147db039e9dbd9fced004a25743fe5bcc889e0ebcaf535442ede93cceefb",
"description": "PMM tools (pmm+pdm) v0.1.1"
}
二进制文件未显示。
+17
查看文件
@@ -0,0 +1,17 @@
{
"name": "pureftpd",
"version": "1.0.51",
"os": "linux",
"description": "PureFTPd (Linux)",
"variants": [
{
"name": "pureftpd",
"version": "1.0.51",
"file": "1.0.51-linux.pdm",
"url": "https://pmm.parlz.com/mirror/packages/pureftpd/1.0.51-linux.pdm",
"sha256": "e17f923c0d0afa104eee13a440ffbc40ebde8a275df583214d7243632aa4201a",
"os": "linux",
"description": "PureFTPd"
}
]
}
@@ -0,0 +1,9 @@
{
"name": "pureftpd",
"version": "1.0.51",
"file": "1.0.51-linux.pdm",
"url": "https://pmm.parlz.com/mirror/packages/pureftpd/1.0.51-linux.pdm",
"sha256": "e17f923c0d0afa104eee13a440ffbc40ebde8a275df583214d7243632aa4201a",
"os": "linux",
"description": "PureFTPd"
}
二进制文件未显示。