如意玲珑(Linyaps)从 1.13.0 升级到 1.14.0,没有把重点放在堆叠新概念上,而是集中处理几类会直接影响日常使用的问题:普通用户升级时可能遇到的模块丢失、打包者调试应用时的阻力,以及运维团队关心的磁盘占用和合规审计。对准备在桌面环境或组织内部推广玲珑应用的团队来说,这类改进往往比单纯增加功能更有价值。
升级不只是“应用还能启动”
对普通用户而言,版本升级后的最低预期通常是应用可以继续运行。但在模块化应用体系中,仅验证主程序是否存在还不够:应用依赖的模块、运行时组件和关联数据同样可能影响启动结果。
1.14 针对升级过程中的“丢模块”问题进行了改善。这意味着升级验收不应只检查软件包数量,还应关注三个层面:
- 原有应用是否仍在已安装列表中;
- 与应用关联的模块是否被保留;
- 常用应用能否在升级后的运行环境中正常启动。
来源摘要没有列出 1.14 的具体命令行参数,因此不宜假设某个新选项一定存在。可以使用现有的 ll-cli list 配合系统工具,在升级前后留下可比较的快照。下面的脚本默认玲珑数据目录为 $HOME/.local/share/linglong;如果实际部署位置不同,请通过 DATA_DIR 修改。
#!/usr/bin/env bash
set -euo pipefail
LIST_CMD="${LIST_CMD:-ll-cli list}"
DATA_DIR="${DATA_DIR:-$HOME/.local/share/linglong}"
REPORT_DIR="${REPORT_DIR:-$PWD/linyaps-upgrade-report}"
mkdir -p "$REPORT_DIR"
snapshot() {
local stage="$1"
local output="$REPORT_DIR/$stage"
mkdir -p "$output"
echo "Collecting $stage snapshot..."
date --iso-8601=seconds > "$output/time.txt"
uname -a > "$output/uname.txt"
if command -v ll-cli >/dev/null 2>&1; then
bash -lc "$LIST_CMD" > "$output/packages.txt" 2>&1 || true
else
echo "ll-cli was not found" > "$output/packages.txt"
fi
if [[ -d "$DATA_DIR" ]]; then
du -sh "$DATA_DIR" > "$output/disk-usage.txt"
du -ah "$DATA_DIR" 2>/dev/null \
| sort -h \
| tail -n 30 > "$output/largest-items.txt"
else
echo "$DATA_DIR does not exist" > "$output/disk-usage.txt"
fi
}
snapshot before
echo
read -r -p "请在另一个终端完成升级,然后按 Enter 继续... "
snapshot after
echo
echo "Installed package/module differences:"
diff -u \
"$REPORT_DIR/before/packages.txt" \
"$REPORT_DIR/after/packages.txt" || true
echo
echo "Report saved to: $REPORT_DIR"
保存为 check-linyaps-upgrade.sh 后执行:
chmod +x check-linyaps-upgrade.sh
./check-linyaps-upgrade.sh
如果发行版使用了不同的数据目录或列表命令,可以这样覆盖:
DATA_DIR=/var/lib/linglong \
LIST_CMD='ll-cli list' \
./check-linyaps-upgrade.sh
这段脚本并不替代官方升级机制,它解决的是另一个问题:为升级前后的状态提供可审阅证据,避免仅凭“看起来没问题”完成验收。
打包者需要的是可复现的调试现场
打包应用时,最难处理的往往不是稳定复现的编译错误,而是只在特定环境、特定依赖组合或特定运行阶段出现的问题。1.14 对应用调试体验进行了改善,价值在于缩短“发现异常—收集信息—重新验证”的路径。
即使新版本让调试更顺手,团队仍应保留完整日志,而不是只截取终端最后几行。可以用一个通用包装脚本记录命令、环境和退出码;它不依赖 1.14 的未公开参数,也可以包装现有的构建或运行命令。
#!/usr/bin/env bash
set -uo pipefail
if [[ "$#" -eq 0 ]]; then
echo "Usage: $0 <command> [args...]" >&2
echo "Example: $0 ll-builder build" >&2
exit 64
fi
LOG_DIR="${LOG_DIR:-$PWD/debug-logs}"
STAMP="$(date +%Y%m%d-%H%M%S)"
LOG_FILE="$LOG_DIR/linyaps-$STAMP.log"
mkdir -p "$LOG_DIR"
{
echo "time=$(date --iso-8601=seconds)"
echo "directory=$PWD"
printf 'command='
printf '%q ' "$@"
echo
echo "kernel=$(uname -srmo)"
echo "PATH=$PATH"
echo "---- output ----"
} | tee "$LOG_FILE"
"$@" 2>&1 | tee -a "$LOG_FILE"
status=${PIPESTATUS[0]}
echo "---- exit_status=$status ----" | tee -a "$LOG_FILE"
echo "Log saved to $LOG_FILE"
exit "$status"
例如,保存为 capture-linyaps-debug.sh 后,可按项目实际使用的命令运行:
chmod +x capture-linyaps-debug.sh
./capture-linyaps-debug.sh ll-builder build
提交问题时,建议同时附上以下内容:
- 最小化后的项目配置;
- 完整命令和完整日志;
- 宿主系统、玲珑版本与架构信息;
- 问题发生在构建阶段、安装阶段还是运行阶段;
- 是否可以在干净环境中复现。
要注意,日志可能包含用户名、目录、内部仓库地址或访问令牌。对外发送前应先脱敏,不能因为调试流程变方便就忽略信息泄露风险。
磁盘占用与合规审计要分开治理
磁盘管理和合规审计经常被放在同一个运维需求里,但两者回答的问题不同:
- 磁盘治理关心“空间被谁占用、增长速度如何、哪些内容可以清理”;
- 合规审计关心“安装了什么、何时发生变化、结果能否追溯”。
1.14 对这两类需求都给予了关注。落地时,建议把“清理动作”和“证据采集”分开:先生成清单和校验信息,确认保留策略后再执行删除,避免清理过程本身破坏审计证据。
下面是一个不修改任何数据的只读盘点示例。它会记录目录大小、较大的文件以及文件哈希,适合在测试机上验证后接入周期任务。大型目录计算全部 SHA-256 可能耗时较长,因此示例只校验超过 10 MiB 的文件。
#!/usr/bin/env bash
set -euo pipefail
DATA_DIR="${DATA_DIR:-$HOME/.local/share/linglong}"
OUT_DIR="${OUT_DIR:-$PWD/linyaps-audit-$(date +%Y%m%d-%H%M%S)}"
if [[ ! -d "$DATA_DIR" ]]; then
echo "Data directory not found: $DATA_DIR" >&2
exit 1
fi
mkdir -p "$OUT_DIR"
du -sh "$DATA_DIR" | tee "$OUT_DIR/total-usage.txt"
du -ah "$DATA_DIR" 2>/dev/null \
| sort -h \
| tail -n 100 \
> "$OUT_DIR/largest-items.txt"
find "$DATA_DIR" -xdev -type f -size +10M -print0 \
| sort -z \
| xargs -0 -r sha256sum \
> "$OUT_DIR/large-file-sha256.txt"
printf 'generated_at=%s\ndata_dir=%s\n' \
"$(date --iso-8601=seconds)" "$DATA_DIR" \
> "$OUT_DIR/metadata.txt"
echo "Audit inventory written to: $OUT_DIR"
审计报告本身也可能暴露目录结构和应用名称,应限制读取权限:
chmod -R go-rwx ./linyaps-audit-*
在生产环境中,还需要明确保留周期、访问权限、时间同步方式,以及谁有权执行清理。单纯生成文件列表并不等于满足合规要求,真正的合规性仍取决于组织制度和适用标准。
升级到 1.14 前后的执行清单
对于个人桌面,可以重点验证常用应用和模块是否保留;对于企业环境,则建议采用小范围灰度,而不是一次性覆盖全部终端。
- 升级前导出已安装应用与模块清单;
- 记录玲珑数据目录的容量和大文件分布;
- 选择包含典型模块依赖的应用做启动验证;
- 为打包流水线保留完整构建与运行日志;
- 对日志和审计报告进行脱敏与权限控制;
- 在测试环境验证清理策略,不直接删除未知目录;
- 确认回退方案以及升级失败时的责任人。
如意玲珑 1.14 的意义不只是“升级到了新版本”,而是让升级、调试和管理这三条日常路径更可靠。要把这些改进转化为团队收益,还需要配合升级快照、可复现日志和审计留痕:工具解决操作痛点,流程负责把改进稳定地带入生产环境。