镜像自地址
https://github.com/JGZYES/ParlzPackageManger.git
已同步 2026-09-11 05:42:44 +08:00
feat: ppdm one-line installer + fix ppdm release asset naming
- web/install-ppdm.sh (+ web/download/install-ppdm.sh, and copied into the release as out/install-ppdm.sh): downloads the latest ppdm binary and installs to ~/.ppdm/bin/ppdm (same path as ppdm update), prepends ~/.ppdm/bin to PATH in ~/.bashrc, prints version (amd64; aarch64 uses ppdm-aarch64). - release.yml: per-arch ppdm asset names (ppdm / ppdm-aarch64 / ppdm.exe) so the amd64 and aarch64 builds no longer both write out/ppdm (collision).
这个提交包含在:
@@ -25,18 +25,21 @@ jobs:
|
||||
ext: .exe
|
||||
pkg: mingw-w64
|
||||
bin: pmm.exe
|
||||
ppdm: ppdm.exe
|
||||
arch: windows-amd64
|
||||
- target: linux-amd64
|
||||
cc: gcc
|
||||
ext: ''
|
||||
pkg: ''
|
||||
bin: pmm
|
||||
ppdm: ppdm
|
||||
arch: amd64
|
||||
- target: linux-aarch64
|
||||
cc: aarch64-linux-gnu-gcc
|
||||
ext: ''
|
||||
pkg: gcc-aarch64-linux-gnu
|
||||
bin: pmm-aarch64
|
||||
ppdm: ppdm-aarch64
|
||||
arch: aarch64
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
@@ -57,7 +60,7 @@ jobs:
|
||||
src/main.c src/json.c src/ini.c src/pmm.c src/http.c src/repo.c src/install.c \
|
||||
src/sha256.c src/sha1.c src/mirrors.c src/pdm.c src/out.c src/i18n.c
|
||||
# -- ppdm package dev tool (register/login/update/pack/publish) — own version 0.0.1
|
||||
${{ matrix.cc }} -O2 -Wall -static -std=c11 -D_GNU_SOURCE -D_FORTIFY_SOURCE=0 -U_FORTIFY_SOURCE -DPPDM_VERSION=\"0.0.1\" -o out/ppdm${{ matrix.ext }} \
|
||||
${{ matrix.cc }} -O2 -Wall -static -std=c11 -D_GNU_SOURCE -D_FORTIFY_SOURCE=0 -U_FORTIFY_SOURCE -DPPDM_VERSION=\"0.0.1\" -o out/${{ matrix.ppdm }} \
|
||||
src/ppdm.c src/pmm.c src/json.c src/ini.c src/http.c src/repo.c src/install.c \
|
||||
src/sha256.c src/sha1.c src/mirrors.c src/pdm.c src/out.c src/i18n.c
|
||||
|
||||
@@ -70,6 +73,7 @@ jobs:
|
||||
|
||||
# -- install.sh helper (uploaded to the release, also served at /install.sh)
|
||||
cp web/install.sh out/install.sh
|
||||
cp web/install-ppdm.sh out/install-ppdm.sh
|
||||
|
||||
# -- aarch64: a .pdm (pure tar, no pmm needed) for Linux ARM64
|
||||
if [ -f out/pmm-aarch64 ]; then
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
#!/bin/sh
|
||||
# ppdm (ParlzPackageDevManager) — Linux/macOS one-line installer.
|
||||
#
|
||||
# 用法:
|
||||
# curl -sSL https://pmm.parlz.com/download/install-ppdm.sh | bash
|
||||
# 或:curl -sSL -o install-ppdm.sh https://pmm.parlz.com/install-ppdm.sh && bash install-ppdm.sh
|
||||
#
|
||||
# 下载官方 release 的 ppdm 二进制并安装到 ~/.ppdm/bin/ppdm(与 `ppdm update` 同一路径),
|
||||
# 并把 ~/.ppdm/bin prepend 到 PATH。
|
||||
set -e
|
||||
REPO="JGZYES/ParlzPackageManger"
|
||||
|
||||
# ---- 检测平台 ----
|
||||
OS="$(uname -s)"; ARCH="$(uname -m)"
|
||||
case "$OS" in
|
||||
Linux) os=linux ;;
|
||||
Darwin) os=macos ;;
|
||||
*) echo "ppdm: 不支持的平台 $OS"; exit 1 ;;
|
||||
esac
|
||||
case "$ARCH" in
|
||||
x86_64|amd64) arch=amd64; ASSET="ppdm" ;;
|
||||
aarch64|arm64) arch=arm64; ASSET="ppdm-aarch64" ;;
|
||||
*) echo "ppdm: 不支持的架构 $ARCH"; exit 1 ;;
|
||||
esac
|
||||
|
||||
# ---- 下载 ----
|
||||
URL="https://github.com/$REPO/releases/latest/download/$ASSET"
|
||||
echo "ppdm: 下载 ppdm-$arch ($os) ..."
|
||||
TMP="$(mktemp)"
|
||||
if ! curl -fL --progress-bar --max-time 300 -o "$TMP" "$URL"; then
|
||||
rm -f "$TMP"
|
||||
echo "ppdm: 下载失败($URL)"
|
||||
if [ "$ASSET" = "ppdm-aarch64" ]; then
|
||||
echo "ppdm: 若该资产暂未发布,可先构建(gcc src/ppdm.c ...)或稍后再试。"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
chmod +x "$TMP"
|
||||
|
||||
# ---- 安装到 ~/.ppdm/bin/ppdm(与 ppdm update 一致)----
|
||||
DEST="${HOME}/.ppdm/bin/ppdm"
|
||||
mkdir -p "$(dirname "$DEST")"
|
||||
cp "$TMP" "$DEST" && chmod +x "$DEST" && rm -f "$TMP"
|
||||
|
||||
# ---- 把 ~/.ppdm/bin prepend 进 ~/.bashrc ----
|
||||
DEST_DIR="$(dirname "$DEST")"
|
||||
RC="$HOME/.bashrc"
|
||||
if [ -e "$RC" ] || [ -w "$HOME" ]; then
|
||||
if ! grep -qF "export PATH=\"$DEST_DIR:" "$RC" 2>/dev/null; then
|
||||
printf 'export PATH="%s:$PATH"\n' "$DEST_DIR" >> "$RC" 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
hash -r 2>/dev/null || true
|
||||
|
||||
echo ""
|
||||
echo "ppdm: 安装完成 -> $DEST"
|
||||
"$DEST" -v 2>/dev/null || true
|
||||
|
||||
case ":$PATH:" in
|
||||
*":$DEST_DIR:"*) ;;
|
||||
*) echo "ppdm: 当前 shell 请执行: export PATH=\"$DEST_DIR:\$PATH\" && hash -r" ;;
|
||||
esac
|
||||
@@ -0,0 +1,63 @@
|
||||
#!/bin/sh
|
||||
# ppdm (ParlzPackageDevManager) — Linux/macOS one-line installer.
|
||||
#
|
||||
# 用法:
|
||||
# curl -sSL https://pmm.parlz.com/download/install-ppdm.sh | bash
|
||||
# 或:curl -sSL -o install-ppdm.sh https://pmm.parlz.com/install-ppdm.sh && bash install-ppdm.sh
|
||||
#
|
||||
# 下载官方 release 的 ppdm 二进制并安装到 ~/.ppdm/bin/ppdm(与 `ppdm update` 同一路径),
|
||||
# 并把 ~/.ppdm/bin prepend 到 PATH。
|
||||
set -e
|
||||
REPO="JGZYES/ParlzPackageManger"
|
||||
|
||||
# ---- 检测平台 ----
|
||||
OS="$(uname -s)"; ARCH="$(uname -m)"
|
||||
case "$OS" in
|
||||
Linux) os=linux ;;
|
||||
Darwin) os=macos ;;
|
||||
*) echo "ppdm: 不支持的平台 $OS"; exit 1 ;;
|
||||
esac
|
||||
case "$ARCH" in
|
||||
x86_64|amd64) arch=amd64; ASSET="ppdm" ;;
|
||||
aarch64|arm64) arch=arm64; ASSET="ppdm-aarch64" ;;
|
||||
*) echo "ppdm: 不支持的架构 $ARCH"; exit 1 ;;
|
||||
esac
|
||||
|
||||
# ---- 下载 ----
|
||||
URL="https://github.com/$REPO/releases/latest/download/$ASSET"
|
||||
echo "ppdm: 下载 ppdm-$arch ($os) ..."
|
||||
TMP="$(mktemp)"
|
||||
if ! curl -fL --progress-bar --max-time 300 -o "$TMP" "$URL"; then
|
||||
rm -f "$TMP"
|
||||
echo "ppdm: 下载失败($URL)"
|
||||
if [ "$ASSET" = "ppdm-aarch64" ]; then
|
||||
echo "ppdm: 若该资产暂未发布,可先构建(gcc src/ppdm.c ...)或稍后再试。"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
chmod +x "$TMP"
|
||||
|
||||
# ---- 安装到 ~/.ppdm/bin/ppdm(与 ppdm update 一致)----
|
||||
DEST="${HOME}/.ppdm/bin/ppdm"
|
||||
mkdir -p "$(dirname "$DEST")"
|
||||
cp "$TMP" "$DEST" && chmod +x "$DEST" && rm -f "$TMP"
|
||||
|
||||
# ---- 把 ~/.ppdm/bin prepend 进 ~/.bashrc ----
|
||||
DEST_DIR="$(dirname "$DEST")"
|
||||
RC="$HOME/.bashrc"
|
||||
if [ -e "$RC" ] || [ -w "$HOME" ]; then
|
||||
if ! grep -qF "export PATH=\"$DEST_DIR:" "$RC" 2>/dev/null; then
|
||||
printf 'export PATH="%s:$PATH"\n' "$DEST_DIR" >> "$RC" 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
hash -r 2>/dev/null || true
|
||||
|
||||
echo ""
|
||||
echo "ppdm: 安装完成 -> $DEST"
|
||||
"$DEST" -v 2>/dev/null || true
|
||||
|
||||
case ":$PATH:" in
|
||||
*":$DEST_DIR:"*) ;;
|
||||
*) echo "ppdm: 当前 shell 请执行: export PATH=\"$DEST_DIR:\$PATH\" && hash -r" ;;
|
||||
esac
|
||||
在新工单中引用
屏蔽一个用户