diff --git a/.gitignore b/.gitignore index 938310e..d14ca76 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/mirror/README.md b/mirror/README.md new file mode 100644 index 0000000..4d2083d --- /dev/null +++ b/mirror/README.md @@ -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.ini(Windows: %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` 里选最高版本下载。 diff --git a/mirror/packages/git.json b/mirror/packages/git.json new file mode 100644 index 0000000..4d08077 --- /dev/null +++ b/mirror/packages/git.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/mirror/packages/git/2.55.0.5-windows.json b/mirror/packages/git/2.55.0.5-windows.json new file mode 100644 index 0000000..9bcf67b --- /dev/null +++ b/mirror/packages/git/2.55.0.5-windows.json @@ -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" +} \ No newline at end of file diff --git a/mirror/packages/git/2.55.0.5-windows.pdm b/mirror/packages/git/2.55.0.5-windows.pdm new file mode 100644 index 0000000..4ddc567 Binary files /dev/null and b/mirror/packages/git/2.55.0.5-windows.pdm differ diff --git a/mirror/packages/nodejs.json b/mirror/packages/nodejs.json new file mode 100644 index 0000000..dda1dfd --- /dev/null +++ b/mirror/packages/nodejs.json @@ -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)" + } + ] +} \ No newline at end of file diff --git a/mirror/packages/nodejs/24.20.0-linux.json b/mirror/packages/nodejs/24.20.0-linux.json new file mode 100644 index 0000000..0ecd545 --- /dev/null +++ b/mirror/packages/nodejs/24.20.0-linux.json @@ -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)" +} \ No newline at end of file diff --git a/mirror/packages/nodejs/24.20.0-linux.pdm b/mirror/packages/nodejs/24.20.0-linux.pdm new file mode 100644 index 0000000..7e074b5 Binary files /dev/null and b/mirror/packages/nodejs/24.20.0-linux.pdm differ diff --git a/mirror/packages/nodejs/24.20.0-windows.json b/mirror/packages/nodejs/24.20.0-windows.json new file mode 100644 index 0000000..e24d07b --- /dev/null +++ b/mirror/packages/nodejs/24.20.0-windows.json @@ -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)" +} \ No newline at end of file diff --git a/mirror/packages/nodejs/24.20.0-windows.pdm b/mirror/packages/nodejs/24.20.0-windows.pdm new file mode 100644 index 0000000..e13aedf Binary files /dev/null and b/mirror/packages/nodejs/24.20.0-windows.pdm differ diff --git a/mirror/packages/pmm.json b/mirror/packages/pmm.json new file mode 100644 index 0000000..b0ea1bf --- /dev/null +++ b/mirror/packages/pmm.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/mirror/packages/pmm/0.1.1-linux-aarch64.json b/mirror/packages/pmm/0.1.1-linux-aarch64.json new file mode 100644 index 0000000..826276f --- /dev/null +++ b/mirror/packages/pmm/0.1.1-linux-aarch64.json @@ -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" +} \ No newline at end of file diff --git a/mirror/packages/pmm/0.1.1-linux-aarch64.pdm b/mirror/packages/pmm/0.1.1-linux-aarch64.pdm new file mode 100644 index 0000000..a05cb38 Binary files /dev/null and b/mirror/packages/pmm/0.1.1-linux-aarch64.pdm differ diff --git a/mirror/packages/pmm/0.1.1-linux-amd64.json b/mirror/packages/pmm/0.1.1-linux-amd64.json new file mode 100644 index 0000000..7aaebae --- /dev/null +++ b/mirror/packages/pmm/0.1.1-linux-amd64.json @@ -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" +} \ No newline at end of file diff --git a/mirror/packages/pmm/0.1.1-linux-amd64.pdm b/mirror/packages/pmm/0.1.1-linux-amd64.pdm new file mode 100644 index 0000000..7f630f5 Binary files /dev/null and b/mirror/packages/pmm/0.1.1-linux-amd64.pdm differ diff --git a/mirror/packages/pmm/0.1.1-windows-amd64.json b/mirror/packages/pmm/0.1.1-windows-amd64.json new file mode 100644 index 0000000..d04c3ce --- /dev/null +++ b/mirror/packages/pmm/0.1.1-windows-amd64.json @@ -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" +} \ No newline at end of file diff --git a/mirror/packages/pmm/0.1.1-windows-amd64.pdm b/mirror/packages/pmm/0.1.1-windows-amd64.pdm new file mode 100644 index 0000000..811e877 Binary files /dev/null and b/mirror/packages/pmm/0.1.1-windows-amd64.pdm differ diff --git a/mirror/packages/pureftpd.json b/mirror/packages/pureftpd.json new file mode 100644 index 0000000..9dcf604 --- /dev/null +++ b/mirror/packages/pureftpd.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/mirror/packages/pureftpd/1.0.51-linux.json b/mirror/packages/pureftpd/1.0.51-linux.json new file mode 100644 index 0000000..7a70f30 --- /dev/null +++ b/mirror/packages/pureftpd/1.0.51-linux.json @@ -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" +} \ No newline at end of file diff --git a/mirror/packages/pureftpd/1.0.51-linux.pdm b/mirror/packages/pureftpd/1.0.51-linux.pdm new file mode 100644 index 0000000..641ad93 Binary files /dev/null and b/mirror/packages/pureftpd/1.0.51-linux.pdm differ