Linux部署ALAS并尝试调用MAA——非Docker方式
最近入坑明日方舟,正好b站小伙伴@一只尛丛雨问了如何使用maa,那就直接开始整
N天后——经过多次尝试,最后也没有成功,所以将这个笔记改为了《Linux部署ALAS——非Docker方式》
本文基于雨云——新一代云服务提供商的Debian11服务器操作,NAT网络服务器实惠不限流量,有兴趣可以去看看。
linux部署alas
安装ALAS
建议直接用Anaconda创建虚拟环境,省得自己安装python或者更改系统自带的python
下载Anaconda的安装脚本
1
2cd /home
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh运行安装脚本
1
bash Anaconda3-2021.11-Linux-x86_64.sh
运行后先阅读协议,按
q
跳过,输入yes
同意,然后选择安装目录,直接回车用默认目录或者输入/home/anaconda3
再回车,最后问你要不要初始化,输入yes
(如果没选yes
会导致找不到conda命令,解决办法:先执行/home/anaconda3/bin/conda shell.bash hook >>~/.bashrc
,再执行source ~/.bashrc
)重新加载环境
1
source ~/.bashrc
下载ALAS源码
1
2
3
4mkdir /home/alas
cd /home/alas
git init
git pull https://github.com/LmeSzinc/AzurLaneAutoScript.git创建一个虚拟环境
1
conda create -n alas_venv python==3.8.10 -y
激活刚才创建的虚拟环境
1
conda activate alas_venv
进入alas项目目录,安装依赖
1
2
3pip install -r deploy/headless/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
#若上述命令不行就改用腾讯源
#pip install -r deploy/headless/requirements.txt -i https://mirrors.cloud.tencent.com/pypi/simple这里可能会因为依赖问题而报错:
没有关系,往上翻一翻,看看是哪个依赖出的问题:
发现是没有找到合适的pbr,那就先手动安装
1
pip install pbr -i https://mirrors.cloud.tencent.com/pypi/simple --trusted-host mirrors.cloud.tencent.com
然后再安装项目依赖
1
pip install -r deploy/headless/requirements.txt -i https://mirrors.cloud.tencent.com/pypi/simple
创建配置文件
1
cp config/deploy.template-linux-cn.yaml config/deploy.yaml
配置git远程仓库和分支,防止自动更新器无法使用
1
vim /home/alas/.git/config
将
[remote "origin"]
和[branch "master"]
添加到文件末尾,添加完后整体文件如下1
2
3
4
5
6
7
8
9
10
11[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://github.com/LmeSzinc/AzurLaneAutoScript.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master最后再拉取一下即可
1
git pull
前台运行
1
python gui.py
运行中没有报错即为正常,这里是前台运行,需要一直挂着,所以改为后台运行
先
ctrl+c
退出终止当前程序,然后执行1
nohup python gui.py &
这时会提示你没有指定文件,系统会默认将日志输出到
nohup.out
中,回车即可接下来安装一下adb,用于连接手机
1
apt install adb
这里可能因为apt源的问题而下载失败,我是换了好几次源,换到中科大镜像源的时候才成功
输入以下命令,这几行一次性都复制过去一起运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19cat <<'EOF' > /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
# 一般来说,为了更及时地获得安全更新,不推荐使用镜像站安全更新软件源,因为镜像站往往有同步延迟
# deb https://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib non-free
# # deb-src https://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib non-free
deb https://security.debian.org/debian-security bullseye-security main contrib non-free
# deb-src https://security.debian.org/debian-security bullseye-security main contrib non-free
EOF然后更新
1
apt update
更新后再
apt install adb
至此,alas已经安装成功并可以直接通过
服务器IP:22267
访问并使用(果然还是docker方便,这样手动一个个配环境真麻烦😂)若只想玩碧蓝的,那么到这里就可以了,接下来就看我另一篇文章用内网穿透连接手机即可云服务器内网穿透连接云手机部署 ALAS | 火柴人儿的小站
对于想安装alas的小伙伴,看到这里就可以结束了,接下来的是我对alas调用maa的一些尝试,但是都失败了,可以帮我看看到底哪里出了问题😖,也算是给个反面进教材
错误方法回顾
最开始还是使用的docker,只是实在没办法了才放弃docker的,alas镜像中的系统太老了,没法用
alas是docker运行的情况
返回到alas主页面,就能看到左侧新增的配置
启动失败,寄!
看报错可以知道是没有GLIBC_2.34的问题,根据网上更新GLIBC的方式更新了下,但是不行,最后在docker更换基础镜像导致GLIBC_2.34缺失 · Issue #2809 · LmeSzinc/AzurLaneAutoScript中发现同样的问题,按照此方式更新
依旧出错,因为docker中的系统版本较老,目录结构不兼容:系统当前使用分离式/usr结构,但新版本
base-files
要求合并式/usr结构(/bin
应为指向/usr/bin
的符号链接)安装usrmerge包将系统转换为合并式目录结构
1
apt install usrmerge
依旧报错
删除容器,重新开始,手动安装glibc
命令要一行一行地执行,不要一下子都复制运行,放在一起是省得排版了
进入容器,安装所需编译器和工具
1
2
3
4
5
6
7
8docker exec -it alas /bin/bash #进入容器
apt-get update && apt-get install -y wget #安装 wget 工具
apt-get update && apt-get install -y gcc #安装 GCC
gcc --version #检查 GCC 是否安装,输出显示了 GCC 的版本号,说明安装成功
apt-get install -y build-essential make binutils #编译 glibc 需要的工具和库
apt-get update && apt-get install -y gawk bison #安装 gawk 和 bison
gawk --version
bison --version #检查是否安装开始手动安装glibc
1
2
3
4
5
6wget https://ftp.gnu.org/gnu/glibc/glibc-2.34.tar.gz #下载glibc 2.34源码
tar -xvf glibc-2.34.tar.gz #解压并编译安装
cd glibc-2.34
mkdir build
cd build
../configure --prefix=/usr #若编译器和工具没安装全的话,这里就会报错,若输出的有error,那就是有问题,看看所需的编译器和工具有没有装全,要是还有问题就百度一下,还不行就删掉容器重新来一遍如果正常的话会出现以下输出
接着进行下一步
1
2
3
4
5
6
7cp /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2.bak #备份现有的动态链接器
cp /app/glibc-2.34/build/elf/ld.so /lib64/ld-linux-x86-64.so.2 #替换动态链接器
ldconfig #更新动态链接器缓存
#上面三步是因为直接make会出现动态链接器问题,结果加了后还是不行,最后放弃docker
make -j$(nproc) #这一步时间会比较长,等服务器跑完就行,中途不要操作
make install寄,一直报动态链接器的问题,无法实现,放弃docker
alas非docker运行的情况
去github下载[maa源码](Releases · MaaAssistantArknights/MaaAssistantArknights)
在服务器的
/home
下新建目录/maa
,然后上传到此位置解压
1
2cd /home/maa/
tar -zxvf MAA-v5.13.0-beta.5-linux-x86_64.tar.gz进入alas,点击管理➡️添加,配置文件名随便取,配置选择template-maa,点击提交
返回到alas主页面,就能看到左侧新增的配置
设置maa路径,然后启动
接下来就是主要问题了,因为debian11并不自带GLIBC_2.34 ,这导致了MAA启动失败,如果你的镜像是Debian12的话那应该是可以直接启动的
这是glibc的版本不够高,查询一下,确实不够
1
strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_
按照以下方式升级glibc
更新apt源,我是尝试了很多源,最后试到腾讯源的时候才成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20cat <<'EOF' > /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tencent.com/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tencent.com/debian/ bullseye main contrib non-free
deb https://mirrors.tencent.com/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tencent.com/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tencent.com/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tencent.com/debian/ bullseye-backports main contrib non-free
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
# 一般来说,为了更及时地获得安全更新,不推荐使用镜像站安全更新软件源,因为镜像站往往有同步延迟
# deb https://mirrors.tencent.com/debian-security bullseye-security main contrib non-free
# # deb-src https://mirrors.tencent.com/debian-security bullseye-security main contrib non-free
deb https://security.debian.org/debian-security bullseye-security main contrib non-free
# deb-src https://security.debian.org/debian-security bullseye-security main contrib non-free
deb http://deb.debian.org/debian sid main
EOF这几行命令一起复制运行
然后更新,这一步可能会等的时间久一点,主要是
deb http://deb.debian.org/debian sid main
这个源比较慢,但我们需要的cglib6就在这个源里,所以不能省1
apt update
升级glibc
1
apt -t sid install libc6 libstdc++6
安装时会出现这个,选择
yes
回车即可安装完成后再次查看,就会发现有2.34了
杀掉alas进程,再次启动
1
ps -ef|grep python
找到
gui.py
,记住pid,然后kill掉它,我这里有多个,我也分辨不出来,只能都杀掉了再次启动后又给我报错,找不到GLIBCXX_3.4.30,崩溃
1
2/home/anaconda3/envs/alas_venv/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required
by /home/maa/libMaaCore.so)查看自己的版本,发现其实是有的
1
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
那就好办了,建立软链接即可
1
2
3cd /home/anaconda3/envs/alas_venv/bin/../lib/ #进入到自己建的anaconda环境
mv libstdc++.so.6 libstdc++.so.6.old #备份
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6 #建立软链接再次杀掉alas进程,然后再启动,见证奇迹的时刻!!!
可以看到maa已经成功启动了,只是没有连接到手机,连接到手机应该就可以正常操控手机了
连接手机还是用
Tailscal
进行内网穿透即可然而一切还没有结束,当我连接手机之后发现所有触控模式都无法使用,minitouch、maatouch、adbinput都不行,寄!😭
日后有时间再琢磨吧,现在安上了maa-cli,maa官方的给linux系统用的命令行,可以远程操控云手机的舟,但是延迟很大,而且没有图形界面,只能写好任务文件,然后用命令行让maa按照任务文件运行,用起来很别扭。
试了试maax,但是可能是服务器配置不行,每次make都卡死,升级又太贵,故放弃又发现了maabo,可是启动后什么都没有,页面也访问不到,也不报错,就很难受😣