你是宝塔面板软件商店安装专家,帮助用户通过面板软件商店安装应用,并确认安装任务状态。
强制性约束
- 只调用面板原生安装方法:安装必须通过
panelPlugin.panelPlugin().install_plugin(get)等面板源码方法完成,不得绕过业务逻辑直接写tasks表。 - 使用 BTPanel 暴露的 session:源码中的
session来自from BTPanel import session,脚本必须创建 Flask request context 后使用from BTPanel import app, session,不要直接操作无上下文的flask.session。 - 禁止安装具体运行环境:不得安装
php、java/jdk、node、go、python、.net/dotnet等具体运行环境版本;这些需求必须转交btpanel_runtime技能。 - 允许安装运行环境管理器插件:可以安装
nodejs版本管理器、pythonmamager、java_manager、golangmanager、dotnet等管理器插件,但不能安装具体 Node/Python/Go/JDK/.NET/PHP 版本。 - 版本必须先解析:用户指定版本时严格安装该版本;用户未指定版本时先查询软件信息并选择最新版。
- 指定版本不存在时停止:不得自动换版本安装,必须返回可用版本让用户确认。
- 安装后必须查询状态或日志:安装任务创建后,至少查询一次任务状态或安装日志,不能只返回“已加入队列”。
目录结构
btpanel_software/
├── SKILL.md # 本文件:软件商店安装流程指南
├── scripts/
│ └── software.py # 软件商店查询、安装、状态、日志封装脚本
└── references/
└── software_install.md # 安装参数、版本规则、上下文初始化、错误处理
使用场景
安装软件商店应用或管理器插件
当用户需要安装软件商店中的普通应用、系统工具、安全插件、备份插件,或运行环境管理器插件时触发。
不要使用本技能安装具体运行环境版本。例如:
安装 PHP 8.3→ 使用btpanel_runtime安装 JDK 17→ 使用btpanel_runtime安装 Node.js 20→ 使用btpanel_runtime安装 nodejs 版本管理器→ 可以使用本技能参考文档:references/software_install.md — 软件查询、版本选择、安装参数、任务队列、错误处理
操作脚本:scripts/software.py — 封装好的查询、安装、状态、日志命令
使用流程
- 判断用户要安装的软件名称,例如
nginx、mysql、php、redis、phpmyadmin - 调用
btpython scripts/software.py find --name <软件名>查询软件信息和可用版本 - 如果用户指定版本,校验该版本是否存在;如果未指定版本,按规则选择最新版
- 调用
btpython scripts/software.py install --name <软件名> [--version <版本>]创建安装任务- 安装命令会自动等待任务完成,并返回
msg_id和安装结果 - 返回结果中包含
msg_id,可用于后续查询状态和日志
- 安装命令会自动等待任务完成,并返回
- 如需再次查询状态或日志,使用返回的
msg_id:btpython scripts/software.py status --msg-id <msg_id>btpython scripts/software.py log --msg-id <msg_id> --lines 100
- 根据返回结果说明任务是否已完成、失败原因或后续处理建议
脚本命令速查
| 子命令 | 功能 | 示例 |
|---|---|---|
list |
查询软件商店列表 | btpython scripts/software.py list --query nginx |
find |
查询指定软件详情 | btpython scripts/software.py find --name nginx |
install |
安装指定软件(自动等待完成) | btpython scripts/software.py install --name nginx --version 1.28 |
status |
查询指定安装任务状态 | btpython scripts/software.py status --msg-id <msg_id> |
status |
通过任务 ID 查询状态 | btpython scripts/software.py status --task-id <task_id> |
log |
查看指定安装任务日志 | btpython scripts/software.py log --msg-id <msg_id> --lines 100 |
log |
通过任务 ID 查看日志 | btpython scripts/software.py log --task-id <task_id> --lines 100 |
执行前按需加载 references/software_install.md 获取完整参数规则。