PANOON 0.2.9 · LINUX X86_64
Linux 安装与使用
发布包包含全屏入口、自动化 CLI、Worker 和控制器运行文件;不依赖桌面图形库。
系统要求
Linux x86_64、glibc 2.30 或更高版本、Python 3(含 curses)、tmux、curl。
Node.js 24 或更高版本。独立下载不需要 Node.js。
uname -m
ldd --version | head -n 1
python3 --version
tmux -V
下载与校验
安装前必须验证 SHA-256。以下命令不会访问代码仓库。
curl -fLO https://app.rjfan.org/panoon/downloads/panoon-0.2.9-linux-x86_64.tar.gz
curl -fLO https://app.rjfan.org/panoon/downloads/panoon-0.2.9-linux-x86_64.tar.gz.sha256
sha256sum -c panoon-0.2.9-linux-x86_64.tar.gz.sha256
正确结果应为 panoon-0.2.9-linux-x86_64.tar.gz: OK。
个人安装
没有 sudo 权限时安装到当前用户目录,不影响其他用户。
PANOON_VERSION=0.2.9
PANOON_ROOT="$HOME/.local/opt/panoon/$PANOON_VERSION"
mkdir -p "$PANOON_ROOT" "$HOME/.local/bin"
tar -xzf panoon-0.2.9-linux-x86_64.tar.gz -C "$PANOON_ROOT"
ln -sfn "$PANOON_ROOT/panoon" "$HOME/.local/bin/panoon"
ln -sfn "$PANOON_ROOT/panoon-tui" "$HOME/.local/bin/panoon-tui"
ln -sfn "$PANOON_ROOT/panoon-worker" "$HOME/.local/bin/panoon-worker"
export PATH="$HOME/.local/bin:$PATH"
把最后一行加入自己的 Shell 配置后,新终端也能找到命令。
全局安装
管理员可安装到版本化目录,再用原子符号链接让所有用户调用同一版本。
sudo install -d -m 0755 /opt/panoon/releases/0.2.9
sudo tar -xzf panoon-0.2.9-linux-x86_64.tar.gz \
-C /opt/panoon/releases/0.2.9
sudo ln -sfn /opt/panoon/releases/0.2.9 /opt/panoon/current
sudo ln -sfn /opt/panoon/current/panoon /usr/local/bin/panoon
sudo ln -sfn /opt/panoon/current/panoon-tui /usr/local/bin/panoon-tui
sudo ln -sfn /opt/panoon/current/panoon-worker /usr/local/bin/panoon-worker
不要把安装目录设为全员可写。每位用户的偏好保存在自己的 ~/.config/panoon/。
快速开始
panoon --self-test
panoon-tui --version
panoon-worker --version
panoon
panoon 打开全屏终端界面,记住当前用户填写的代理端口、输入和输出路径。脚本与精确参数使用 panoon-tui。
代理端口
真实下载和真实 Worker 都要求当前机器上的 HTTP/mixed 代理端口。端口属于运行命令的用户,不能假设整台服务器共用一个端口。
read -r -p 'PanoOn proxy port: ' PANOON_PROXY_PORT
curl --proxy "http://127.0.0.1:$PANOON_PROXY_PORT" \
--connect-timeout 10 -fsS -o /dev/null \
https://www.google.com/generate_204
PanoOn 会在下载或注册 Worker 前再执行 Google 连通性与真实街景瓦片预检。预检失败时不会开始任务。
直接请求不带完整参数的瓦片端点并不是有效下载测试。PanoOn 使用完整的 zoom-0 瓦片请求、下载器请求头和图像解码验证。
独立下载
这是最简单的 Linux 工作流,不需要控制器或 Worker。
panoon-tui parse --input ./panoids.txt
panoon-tui download \
--input ./panoids.txt \
--output ./panoramas \
--zoom 3 \
--resize 2048x1024 \
--workers 8 \
--proxy-port "$PANOON_PROXY_PORT" \
--jpeg-quality 95
输入支持 TXT、CSV、JSON 和 --inline。默认不覆盖已有结果:匹配 panoid 与 zoom 的现有 JPEG 会被跳过。
中断后继续
panoon-tui download \
--input ./panoids.txt \
--output ./panoramas \
--zoom 3 --resize 2048x1024 --workers 8 \
--proxy-port "$PANOON_PROXY_PORT" \
--jpeg-quality 95 --resume
只重试失败项
panoon-tui download \
--output ./panoramas \
--zoom 3 --resize 2048x1024 --workers 4 \
--proxy-port "$PANOON_PROXY_PORT" \
--retry-failed
只有确实要重新下载已有图像时才添加 --overwrite。
全屏 TUI
直接运行 panoon。配置按当前 Linux 用户保存,退出页面不会停止后台 tmux Worker。
| 按键 | 作用 |
|---|---|
N | 新建下载并按需启动当前用户的后台 Worker |
W | 把当前机器作为现有控制器的工作节点 |
C | 复制供桌面 GUI 使用的连接字符串 |
P | 验证并更新控制器配对码 |
L | 查看当前用户 Worker 日志 |
S | 停止 Worker;停止后同一按键用于续跑 |
R | 刷新任务与节点状态 |
Q / Esc | 退出界面,后台任务继续 |
启动控制器
仅当你需要 Area 或分布式 Worker 时才需要控制器。下面示例假设发布包位于 $PANOON_ROOT,并要求 Node.js 24+。
read -r -s -p 'Pairing code: ' PANOON_PAIRING_CODE
echo
panoon-worker controller \
--port 8787 \
--pairing-code "$PANOON_PAIRING_CODE" \
--node node \
--service-script "$PANOON_ROOT/service-runtime/server.js"
长时间运行可放入 tmux。控制器拥有最终输出目录的写权限;不要启动多个控制器争用同一端口。
panoon-tui --server http://127.0.0.1:8787 status
只把控制器端口开放给受信网络;配对码只发给获授权用户,不要写入公开脚本或文档。
连接 Worker 节点
Worker 必须使用自己机器上的代理端口,并在注册前自动预检。
read -r -p 'PanoOn proxy port: ' PANOON_PROXY_PORT
read -r -s -p 'Pairing code: ' PANOON_PAIRING_CODE
echo
panoon-worker run \
--server http://CONTROLLER_HOST:8787 \
--pairing-code "$PANOON_PAIRING_CODE" \
--name "Linux Worker" \
--workers 8 \
--real \
--proxy-port "$PANOON_PROXY_PORT" \
--temp-dir "$HOME/.cache/panoon/worker"
--real 与 --proxy-port 缺一不可。最终文件由 Worker 上传回控制器写入,--temp-dir 只是本地缓存。
创建与查看任务
panoon-tui --server http://CONTROLLER_HOST:8787 workers list
panoon-tui --server http://CONTROLLER_HOST:8787 workers job create \
--input ./panoids.txt \
--output /path/on/controller/panoramas \
--zoom 3 --resize 2048x1024 --jpeg-quality 95
panoon-tui --server http://CONTROLLER_HOST:8787 workers job poll JOB_ID
Area PanoID
Area 由控制器执行。边界至少包含三个 lat,lng 点,并用分号分隔。
panoon-tui --server http://127.0.0.1:8787 area strategy list
panoon-tui --server http://127.0.0.1:8787 area start \
--bounds "-37.81,144.96;-37.80,144.97;-37.81,144.98" \
--strategy hybrid --density sparse
panoon-tui --server http://127.0.0.1:8787 area poll JOB_ID
panoon-tui --server http://127.0.0.1:8787 area result JOB_ID \
--output ./area-result
也可使用桌面端 Area PanoID 地图绘制多边形。Area 结果中的 TXT、CSV 或 JSON 可直接交给独立下载。
验证与排障
command -v panoon panoon-tui panoon-worker
panoon --self-test
panoon-tui --version
panoon-worker --version
panoon-tui config show
command not found
个人安装执行 export PATH="$HOME/.local/bin:$PATH";全局安装检查 /usr/local/bin 是否在 PATH。
invalid_pairing_code
代理预检通过只说明网络可用。403 和该错误表示控制器拒绝了配对码;向控制器管理员获取当前授权码后重新连接。
停止后看不到续跑
重新运行 panoon,主界面的 S 会显示为“续跑 Worker”,并复用上次控制器、代理端口和并发设置。
已有结果仍被下载
不要使用 --overwrite;确认文件名仍包含匹配的 panoid 与 zoom。分布式任务会在创建前递归扫描控制器输出目录。
升级与卸载
升级时先下载并校验新包,解压到新的版本目录,再原子切换 current。保留旧目录即可快速回滚。
sudo ln -sfn /opt/panoon/releases/NEW_VERSION /opt/panoon/current
panoon --self-test
panoon-tui --version
panoon-worker --version
个人安装卸载时删除自己的三个符号链接和对应版本目录。只有在确定不再需要个人偏好与历史时,才删除 ~/.config/panoon。