mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-11-01 06:47:29 +00:00
四个 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,这里不动。
80 lines
2.6 KiB
Bash
80 lines
2.6 KiB
Bash
#!/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"
|