Skip to content

Commit ac70166

Browse files
committed
fix(scripts): add QQ installation detection and dependency management for Linux
1 parent 11912fe commit ac70166

1 file changed

Lines changed: 82 additions & 4 deletions

File tree

script/start-linux.sh

Lines changed: 82 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,83 @@
11
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
22

3+
# 检测是否为 Debian 系列系统(通过 apt 命令)
4+
if ! command -v apt &> /dev/null; then
5+
echo "错误:本脚本只支持使用 apt 包管理器的系统(如 Debian、Ubuntu 等)"
6+
exit 1
7+
fi
8+
9+
# 检测系统架构
10+
ARCH=$(uname -m)
11+
if [ "$ARCH" == "x86_64" ]; then
12+
ARCH_TYPE="amd64"
13+
elif [ "$ARCH" == "aarch64" ]; then
14+
ARCH_TYPE="arm64"
15+
else
16+
echo "错误:不支持的系统架构: $ARCH"
17+
echo "本脚本只支持 x86_64 (x64) 和 aarch64 (arm64) 架构"
18+
exit 1
19+
fi
20+
21+
echo "检测到系统架构: $ARCH_TYPE"
22+
23+
# 检测 QQ 是否已安装
24+
if [ ! -f "/opt/QQ/qq" ]; then
25+
echo "未检测到 QQ 安装 (/opt/QQ/qq 不存在)"
26+
echo "是否需要安装 QQ?(Y/n)"
27+
read -n 1 -s -r key
28+
echo ""
29+
if [[ "$key" == "Y" || "$key" == "y" || "$key" == "" ]]; then
30+
echo "正在下载 QQ ($ARCH_TYPE 版本)..."
31+
QQ_DEB="/tmp/qq_linux_$ARCH_TYPE.deb"
32+
sudo apt-get update
33+
sudo apt-get install wget
34+
wget -O "$QQ_DEB" "https://dldir1v6.qq.com/qqfile/qq/QQNT/ec800879/linuxqq_3.2.20-40990_$ARCH_TYPE.deb"
35+
if [ $? -ne 0 ]; then
36+
echo "错误:QQ 下载失败"
37+
exit 1
38+
fi
39+
echo "正在安装 QQ..."
40+
41+
sudo apt install -y "$QQ_DEB"
42+
if [ $? -ne 0 ]; then
43+
echo "错误:QQ 安装失败"
44+
exit 1
45+
fi
46+
echo "QQ 安装完成"
47+
rm -f "$QQ_DEB"
48+
echo "进行安装 QQ 相关依赖"
49+
# 检测 libasound 包名(新系统用 libasound2t64,旧系统用 libasound2)
50+
# 使用 apt-cache policy 检测包是否真正可安装
51+
if apt-cache policy libasound2t64 2>/dev/null | grep -q "Candidate:"; then
52+
LIBASOUND_PKG="libasound2t64"
53+
elif apt-cache policy libasound2 2>/dev/null | grep -q "Candidate:"; then
54+
LIBASOUND_PKG="libasound2"
55+
else
56+
# 如果都不可用,尝试安装 alsa-utils 作为替代(会拉取正确的 libasound 依赖)
57+
LIBASOUND_PKG="alsa-utils"
58+
fi
59+
echo "使用 ALSA 库包: $LIBASOUND_PKG"
60+
61+
sudo apt-get install -y \
62+
x11-utils \
63+
libgtk-3-0 \
64+
libxcb-xinerama0 \
65+
libgl1-mesa-dri \
66+
libnotify4 \
67+
libnss3 \
68+
xdg-utils \
69+
libsecret-1-0 \
70+
libappindicator3-1 \
71+
libgbm1 \
72+
$LIBASOUND_PKG \
73+
fonts-noto-cjk \
74+
libxss1
75+
else
76+
echo "跳过 QQ 安装,退出脚本"
77+
exit 0
78+
fi
79+
fi
80+
381
chmod +x $SCRIPT_DIR/llbot/node
482
chmod +x $SCRIPT_DIR/llbot/pmhq
583

@@ -8,20 +86,20 @@ USE_XVFB=1
886
if ! command -v xvfb-run &> /dev/null; then
987
echo "未找到 xvfb-run 命令"
1088
echo "如果你是桌面环境,按 Y 继续运行"
11-
echo "如果不是桌面环境,请先安装 xvfb,按其他键退出"
89+
echo "如果不是桌面环境,按其他键进行安装 xvfb"
1290
read -n 1 -s -r key
1391
echo ""
1492
if [[ "$key" == "Y" || "$key" == "y" ]]; then
1593
USE_XVFB=0
1694
else
17-
exit 0
95+
sudo apt install -y xvfb
1896
fi
1997
fi
2098

2199
$SCRIPT_DIR/llbot/node $SCRIPT_DIR/llbot/llonebot.js &
22100

23101
if [ $USE_XVFB -eq 1 ]; then
24-
xvfb-run $SCRIPT_DIR/llbot/pmhq
102+
sudo xvfb-run $SCRIPT_DIR/llbot/pmhq
25103
else
26-
$SCRIPT_DIR/llbot/pmhq
104+
sudo $SCRIPT_DIR/llbot/pmhq
27105
fi

0 commit comments

Comments
 (0)