Files
HomeAgent/deploy/packaging/linux/setup.sh
JianFeeeee 503579ae18 refactor(deploy): deb control 与 postinst/prerm 改用 hologramagent 包名与 /var/lib/hologram
四个 control:Package: homeagent-{client,server,full,toolchain} →
hologramagent-*,Maintainer/Homepage 品牌名,toolchain 的 SDK 安装路径
/usr/lib/homeagent/sdk → /usr/lib/hologram/sdk。

postinst/prerm:SERVICE_NAME="hologramagent"。
这一行是「改一半就静默失效」的典型:
  systemctl enable/start/stop 全部带 2>/dev/null || true,
  单元名不对时**不报错**——装完既不 enable 也不 start,用户以为装好了。
现在 postinst 的 DATA_DIR/SETUP_SH 也一起指向 /var/lib/hologram、
/usr/lib/hologram/setup.sh,否则 setup.sh 会在旧目录里初始化凭据,
而内核按新单元从新目录读 —— 表现为「装完登录不上,credentials.txt 找不到」。

setup.sh 同步:HOLOGRAM_DATA / HOLOGRAM_API_KEY 前缀、模型目录
/usr/lib/hologram/models/...。与 postinst 传的变量名必须一致,
否则 DATA_DIR 回落到默认值、凭据写到另一个目录。

Homepage/Documentation 用 trueagent/HologramAgent(与原值同源,只换品牌词);
仓库 owner 与地址本身归批 4,这里不动。
2026-10-21 13:21:00 +08:00

80 lines
2.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# HologramAgent 首次初始化脚本
# 在安装后执行,生成凭据并初始化数据库
set -e
DATA_DIR="${HOLOGRAM_DATA:-/var/lib/hologram}"
CRED_FILE="${DATA_DIR}/credentials.txt"
CONFIG_DB="${DATA_DIR}/config.db"
WAITER_CONF="${DATA_DIR}/waiter.yaml"
INITCONFIG_BIN="/usr/bin/initconfig"
BUNDLED_MODEL_DIR="/usr/lib/hologram/models/chinese-clip-vit-b16-onnx"
MODEL_LINK="${DATA_DIR}/models/chinese-clip-vit-b16-onnx"
# 模型随 server/full 包安装到只读的 /usr/lib;配置默认仍指向 dataDir/models。
# 用符号链接把两者接起来,既不复制 754MB,也保持 dataDir 可迁移语义。
# 用户已有自定义目录时绝不覆盖;升级时既有链接自然指向新版包内容。
if [ -d "$BUNDLED_MODEL_DIR" ]; then
mkdir -p "${DATA_DIR}/models"
if [ ! -e "$MODEL_LINK" ] && [ ! -L "$MODEL_LINK" ]; then
ln -s "$BUNDLED_MODEL_DIR" "$MODEL_LINK"
fi
fi
# 如果已经初始化过,只跳过凭据/数据库生成;上面的模型链接仍须在升级时补齐。
if [ -f "$CONFIG_DB" ] && [ -f "$CRED_FILE" ]; then
exit 0
fi
mkdir -p "$DATA_DIR"
# 生成随机凭据。
#
# 允许环境变量覆盖:安装器(包括 Windows 上的 WSL 引导安装)已经在界面上
# 向用户收过这些值,若不接受传入就只能两个地方各生成一份,用户看到的那份
# 与实际写入 config.db 的那份不一致——那种错会直接表现为「登录不上」。
API_KEY="${HOLOGRAM_API_KEY:-$(cat /proc/sys/kernel/random/uuid 2>/dev/null | tr -d '-' || echo "hologram$(date +%s)")}"
WEBUI_USER="${WEBUI_USER:-admin}"
WEBUI_PASS="${WEBUI_PASS:-$(openssl rand -hex 12 2>/dev/null || echo "hologram")}"
# 初始化数据库
if [ -x "$INITCONFIG_BIN" ]; then
"$INITCONFIG_BIN" \
-data "$DATA_DIR" \
-username "$WEBUI_USER" \
-password "$WEBUI_PASS" \
-apikey "$API_KEY" 2>/dev/null
fi
# 保存凭据
cat > "$CRED_FILE" << CRED
===================================
HologramAgent 初始配置信息
请妥善保管,安装后仅此一份
===================================
WebUI 地址: http://localhost:8080
API Key: ${API_KEY}
WebUI 用户名: ${WEBUI_USER}
WebUI 密码: ${WEBUI_PASS}
CLI Socket: ${DATA_DIR}/cli.sock
===================================
CRED
chmod 600 "$CRED_FILE"
# 配置 waiter CLI
cat > "$WAITER_CONF" << WAITER
socket: "${DATA_DIR}/cli.sock"
api_key: ${API_KEY}
default: local
connections:
- name: local
socket: "${DATA_DIR}/cli.sock"
api_key: ${API_KEY}
WAITER
echo ""
echo "============================================"
echo " HologramAgent 初始化完成"
echo "============================================"
cat "$CRED_FILE"