diff --git a/web/_common.php b/web/_common.php index 9670e85..14bd84a 100644 --- a/web/_common.php +++ b/web/_common.php @@ -8,13 +8,8 @@ define('PMM_VERSION', '0.3.6'); function pmm_nav_links(string $active): string { $items = [ - 'home' => ['index.php', '首页'], - 'features' => ['features.php', '特性'], - 'install' => ['install.php', '安装'], - 'download' => ['download.php', '下载'], - 'status' => ['servers.php', '服务状态'], - 'translate'=> ['translate.php', '翻译'], - 'source' => ['git.php', '源码'], + 'home' => ['index.php', '首页'], + 'docs' => ['docs/index.php', '文档'], ]; $html = ''; foreach ($items as $key => [$href, $label]) { @@ -24,6 +19,21 @@ function pmm_nav_links(string $active): string { return $html; } +/* Minimal markdown renderer (self-contained). Used by the docs site. */ +function md(string $t): string { + $t = htmlspecialchars($t, ENT_QUOTES, 'UTF-8'); + $t = preg_replace('/```([a-zA-Z0-9]*)\n(.*?)```/s', "
\\2", $t);
+ $t = preg_replace('/^### (.*)$/m', '$1', $t);
+ return $t;
+}
+
function pmm_header(string $active, string $title): void {
$t = htmlspecialchars($title, ENT_QUOTES, 'UTF-8');
echo '' . "\n" .
diff --git a/web/assets/style.css b/web/assets/style.css
index 5568fde..015acfa 100644
--- a/web/assets/style.css
+++ b/web/assets/style.css
@@ -297,3 +297,26 @@ code{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,"Co
.rel-size{font-size:11.5px;color:var(--dim);font-family:ui-monospace,monospace;white-space:nowrap}
.rel-dl{margin-left:auto;font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:3px 10px;text-decoration:none;white-space:nowrap}
.rel-dl:hover{color:#fff;border-color:#fff}
+
+/* ---------- docs site ---------- */
+.docs-nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px;border-bottom:1px solid var(--line);padding-bottom:14px}
+.docs-link{font-size:13.5px;color:var(--muted);text-decoration:none;padding:6px 14px;border:1px solid var(--line);border-radius:999px;white-space:nowrap}
+.docs-link:hover{color:#fff;border-color:#fff}
+.docs-link.active{color:var(--ink);background:var(--accent);border-color:var(--accent)}
+.docs-body{max-width:860px;line-height:1.8;color:var(--text)}
+.docs-body h1{font-size:30px;margin:0 0 18px;letter-spacing:-.5px;border-bottom:1px solid var(--line);padding-bottom:14px}
+.docs-body h2{font-size:20px;margin:34px 0 12px;color:#fff}
+.docs-body h3{font-size:16px;margin:26px 0 10px;color:#fff}
+.docs-body p{margin:0 0 14px}
+.docs-body li{margin:5px 0}
+.docs-body ul,.docs-body ol{padding-left:22px;margin:0 0 14px}
+.docs-body code{background:var(--panel);border:1px solid var(--line);padding:1px 6px;border-radius:5px;font-size:13px;font-family:ui-monospace,monospace;color:var(--muted)}
+.docs-body pre.mdcode{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px;overflow:auto;margin:0 0 14px}
+.docs-body pre.mdcode code{background:none;border:0;padding:0;color:var(--text);font-size:13px;line-height:1.6;display:block}
+.docs-body hr{border:0;border-top:1px solid var(--line);margin:22px 0}
+.docs-body a{color:#fff;text-decoration:underline}
+.docs-body a:hover{color:var(--accent)}
+.docs-body strong{color:#fff}
+.docs-body table{border-collapse:collapse;width:100%;margin:0 0 16px}
+.docs-body th,.docs-body td{border:1px solid var(--line);padding:8px 12px;font-size:13px;text-align:left}
+.docs-body th{background:var(--panel);color:#fff}
diff --git a/web/docs/cli.md b/web/docs/cli.md
new file mode 100644
index 0000000..dc8cfbf
--- /dev/null
+++ b/web/docs/cli.md
@@ -0,0 +1,57 @@
+# 命令参考
+
+## 安装
+
+```bash
+pmm install 可从官方镜像站或 GitHub Release 获取。镜像地址不变。
-curl -sSL https://pmm.parlz.com/install.sh | bashLinux 也可 curl -sSL https://pmm.parlz.com/install.sh | bash;.pdm 包可直接 pmm install pmm 安装。
PMM 默认镜像(apt 式,按优先级回退),地址与 mirror.ini 一致。
https://sz.pmm.parlz.com/mirror/packageshttps://pmm.parlz.com/mirror/packages全部历史版本的 .pdm 都在镜像 mirror/packages/pmm/ 下。
支持 mirror.ini / mirror.conf,按优先级自动回退;默认自带 sz(深圳)与 main(香港)两个镜像,缺失时自动生成。
pmm install --git repo 自动识别 GitHub / GitLab / Gitea / Forgejo 及私有部署;支持 repo@tag / -b branch 安装指定版本。
pmm pack <dir> 生成含 control.tar.gz / data.tar.gz / sha256sums 的归档,思路同 .deb。
pdm-control 声明 Depends:,registry 包声明 "depends": [...];安装时自动递归解析并按版本约束(==/≥/≤)安装,带防环保护。
大文件(≥8MB)自动 4 路 Range 分片并行下载、逐片续传、拼接后校验;失败自动回退单流。进度条含已用/剩余时间与实时速度。
内置 SHA-256 与 SHA-1(FIPS 180-4),下载后强校验;pmm verify <file> 随时验证任意安装包。
pmm install -dpkg x.deb(Linux)、pmm install -msi x.msi(Windows),也支持 .rpm/.zip/.tar.gz/.exe/.dmg 等,直接装文件或 URL。
pmm search <关键词> 发现镜像里的包;pmm info <pkg> 查看版本与平台变体;pmm list 列出已装包。
下载缓存统一放在 <base>/cache;pmm cache clean 一键清空,--no-cache 强制重新下载。
\\2", $t);
- $t = preg_replace('/^### (.*)$/m', '$1', $t);
- return $t;
-}
-function gh_api(string $url): array {
- $json = null;
- if (function_exists('curl_init')) {
- $ch = curl_init($url);
- curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 15,
- CURLOPT_FOLLOWLOCATION => true, CURLOPT_SSL_VERIFYPEER => false,
- CURLOPT_SSL_VERIFYHOST => false, CURLOPT_USERAGENT => 'pmm-site']);
- $r = curl_exec($ch); curl_close($ch);
- if (is_string($r) && $r !== '') $json = $r;
- }
- if ($json === null) $json = (string)@shell_exec('curl -s --max-time 15 ' . escapeshellarg($url));
- $d = json_decode((string)$json, true);
- return is_array($d) ? $d : [];
-}
-/* Prefer a local copy of a release asset on this server; fall back to GitHub. */
-/* Prefer a local copy of a release asset (web/releases/' . esc($branch) . ' · ' . esc($REPO_DIR)
- : '提示:本地依赖仓库尚未初始化,请先 git clone 或点击下方“初始化/更新”。'; ?>
- 页面将 PMM 仓库副本存入 。若 PHP 无写权限(web 根归 root),先
- chmod -R 775 或其父目录;或用环境变量 PMM_SRC_DIR 指定持久目录。初始化命令:
git clone --depth 1
- source
- ' . esc($p) . ''; } ?>
-
-
- | 名称 | 提交 | 时间 | 大小 |
|---|---|---|---|
| - | - |
- - | - |
一个用 C 语言从零编写的跨平台包管理器。像 apt 一样多用镜像源,也能直接从 GitHub / GitLab / Gitea / Forgejo Release 装包。
下载对应平台二进制,一条命令搞定,完成后自动加入 PATH。
-# ZIP 免安装版(解压即用,pmm.exe 在压缩包内)
-curl -L -o pmm.zip https://pmm.parlz.com/releases/v/pmm--windows-amd64.zip
-# 解压后把 pmm.exe 所在目录加入 PATH,然后:
-pmm -v
-
- # 方式一:sh 一键安装(自动下载二进制 + 加 PATH)
-curl -sSL https://pmm.parlz.com/install.sh | bash
-
-# 方式二:.deb 安装
-curl -L -o pmm.deb https://pmm.parlz.com/releases/v/pmm__amd64.deb
-sudo apt install ./pmm.deb
-
-# 方式三:.rpm 安装
-curl -L -o pmm.rpm https://pmm.parlz.com/releases/v/pmm-.x86_64.rpm
-sudo rpm -Uvh pmm.rpm
-pmm -v
-
- # sh 一键安装
-curl -sSL https://pmm.parlz.com/install.sh | bash
-pmm -v
-
- pmm search node # 在镜像里搜包
-pmm install nodejs # 安装(自动解析依赖)
-pmm install nodejs==24.20.0 # 指定版本
-pmm install --git owner/repo@v1.2.3 # 从 git release 安装指定 tag
-pmm list # 已装列表
-pmm remove nodejs # 卸载
- 实时监控 PMM 双镜像(深圳 / 香港)的注册表、下载服务与 Web 浏览三项能力,每 15 秒自动刷新。不暴露任何服务器 IP。
- - - -PMM 的界面文案由 .pjson 语言包驱动。每门语言一个包;想新增语言或修订译文,请
- 发邮件
- 或在 GitHub 提 Issue。
zh-CN)卡片 → 下载 .pjson。zh-CN 的键名保留、只改值,另存为你的语言,如 ja-JP.pjson、zh-TW.pjson。web/mirror/lang/,用户用 pmm setting lang <locale> 安装。安装语言包:
-pmm setting lang ja-JP
-pmm setting lang -l
-