最近入坑明日方舟,正好b站小伙伴@一只尛丛雨问了如何使用maa,那就直接开始整
N天后——经过多次尝试,最后也没有成功,所以将这个笔记改为了《Linux部署ALAS——非Docker方式》

本文基于雨云——新一代云服务提供商的Debian11服务器操作,NAT网络服务器实惠不限流量,有兴趣可以去看看。

linux部署alas

安装ALAS

建议直接用Anaconda创建虚拟环境,省得自己安装python或者更改系统自带的python

  1. 下载Anaconda的安装脚本

    1
    2
    cd /home
    wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
  2. 运行安装脚本

    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

    image-20250217100433513

  3. 重新加载环境

    1
    source ~/.bashrc
  4. 下载ALAS源码

    1
    2
    3
    4
    mkdir /home/alas
    cd /home/alas
    git init
    git pull https://github.com/LmeSzinc/AzurLaneAutoScript.git
  5. 创建一个虚拟环境

    1
    conda create -n alas_venv python==3.8.10 -y
  6. 激活刚才创建的虚拟环境

    1
    conda activate alas_venv
  7. 进入alas项目目录,安装依赖

    1
    2
    3
    pip 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

    这里可能会因为依赖问题而报错:

    image-20250217195857367

    没有关系,往上翻一翻,看看是哪个依赖出的问题:

    image-20250217200015757

    发现是没有找到合适的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
  8. 创建配置文件

    1
    cp config/deploy.template-linux-cn.yaml config/deploy.yaml
  9. 配置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
  10. 前台运行

    1
    python gui.py

    image-20250217105621935

    运行中没有报错即为正常,这里是前台运行,需要一直挂着,所以改为后台运行

    ctrl+c退出终止当前程序,然后执行

    1
    nohup python gui.py &

    这时会提示你没有指定文件,系统会默认将日志输出到nohup.out中,回车即可

  11. 接下来安装一下adb,用于连接手机

    1
    apt install adb

    这里可能因为apt源的问题而下载失败,我是换了好几次源,换到中科大镜像源的时候才成功

    输入以下命令,这几行一次性都复制过去一起运行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    cat <<'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

  12. 至此,alas已经安装成功并可以直接通过服务器IP:22267访问并使用(果然还是docker方便,这样手动一个个配环境真麻烦😂)

    若只想玩碧蓝的,那么到这里就可以了,接下来就看我另一篇文章用内网穿透连接手机即可云服务器内网穿透连接云手机部署 ALAS | 火柴人儿的小站

对于想安装alas的小伙伴,看到这里就可以结束了,接下来的是我对alas调用maa的一些尝试,但是都失败了,可以帮我看看到底哪里出了问题😖,也算是给个反面进教材

错误方法回顾

最开始还是使用的docker,只是实在没办法了才放弃docker的,alas镜像中的系统太老了,没法用

alas是docker运行的情况

  1. 返回到alas主页面,就能看到左侧新增的配置

    image-20250206094212297

  2. 启动失败,寄!

    image-20250206155552129

    image-20250206155605537

  3. 看报错可以知道是没有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
    • 依旧报错

      image-20250211141753518

删除容器,重新开始,手动安装glibc

命令要一行一行地执行,不要一下子都复制运行,放在一起是省得排版了

  1. 进入容器,安装所需编译器和工具

    1
    2
    3
    4
    5
    6
    7
    8
    docker 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 #检查是否安装
  2. 开始手动安装glibc

    1
    2
    3
    4
    5
    6
    wget 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,那就是有问题,看看所需的编译器和工具有没有装全,要是还有问题就百度一下,还不行就删掉容器重新来一遍

    如果正常的话会出现以下输出

    image-20250219114630174

    接着进行下一步

    1
    2
    3
    4
    5
    6
    7
    cp /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
  3. 寄,一直报动态链接器的问题,无法实现,放弃docker

alas非docker运行的情况

  1. 去github下载[maa源码](Releases · MaaAssistantArknights/MaaAssistantArknights)

    image-20250206093424099

  2. 在服务器的/home下新建目录/maa,然后上传到此位置

    image-20250206093524948

  3. 解压

    1
    2
    cd /home/maa/
    tar -zxvf MAA-v5.13.0-beta.5-linux-x86_64.tar.gz

    image-20250217105907863

  4. 进入alas,点击管理➡️添加,配置文件名随便取,配置选择template-maa,点击提交

    image-20250206094130768

  5. 返回到alas主页面,就能看到左侧新增的配置

    image-20250206094212297

  6. 设置maa路径,然后启动

    image-20250217133438616

    接下来就是主要问题了,因为debian11并不自带GLIBC_2.34 ,这导致了MAA启动失败,如果你的镜像是Debian12的话那应该是可以直接启动的

    image-20250217132933705这是glibc的版本不够高,查询一下,确实不够

    1
    strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_

    image-20250217133802246

    按照以下方式升级glibc

    1. 更新apt源,我是尝试了很多源,最后试到腾讯源的时候才成功

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      cat <<'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
    2. 升级glibc

      1
      apt -t sid install libc6 libstdc++6

      安装时会出现这个,选择yes回车即可

      image-20250217132439581

    3. 安装完成后再次查看,就会发现有2.34了

      image-20250217132737689

  7. 杀掉alas进程,再次启动

    1
    ps -ef|grep python

    找到gui.py,记住pid,然后kill掉它,我这里有多个,我也分辨不出来,只能都杀掉了

    image-20250217135730431

  8. 再次启动后又给我报错,找不到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)
  9. 查看自己的版本,发现其实是有的

    1
    strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

    image-20250217140026410

  10. 那就好办了,建立软链接即可

    1
    2
    3
    cd /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 #建立软链接
  11. 再次杀掉alas进程,然后再启动,见证奇迹的时刻!!!

    image-20250217141453551

    可以看到maa已经成功启动了,只是没有连接到手机,连接到手机应该就可以正常操控手机了

    连接手机还是用Tailscal进行内网穿透即可

  12. 然而一切还没有结束,当我连接手机之后发现所有触控模式都无法使用,minitouch、maatouch、adbinput都不行,寄!😭

    image-20250221101705496

日后有时间再琢磨吧,现在安上了maa-cli,maa官方的给linux系统用的命令行,可以远程操控云手机的舟,但是延迟很大,而且没有图形界面,只能写好任务文件,然后用命令行让maa按照任务文件运行,用起来很别扭。
试了试maax,但是可能是服务器配置不行,每次make都卡死,升级又太贵,故放弃

又发现了maabo,可是启动后什么都没有,页面也访问不到,也不报错,就很难受😣