目录

安装nodejs和go环境并编译alist

这篇文章介绍了编译alist

注意

注1、我使用的系统为debian12

注2、以下全程在root用户下进行sudo -i

1 使用nodejs编译前端

1.1 安装nodejs

安装gcc

sudo apt install gcc

安装git

sudo apt install git

安装nodejs

sudo apt install nodejs

安装npm

sudo apt install npm

[选作]添加镜像源

npm config set registry https://registry.npmmirror.com/

使用npm安装pnpm

npm install -g pnpm

1.2 编译前端

从GitHub克隆前端源码

git clone --recurse-submodules https://github.com/AlistGo/alist-web.git

从以下网站下载汉化包zh-CN并解压,放入克隆到本地的源码的src/lang/路径,下载需要注册账号登陆

https://crowdin.com/project/alist/zh-CN

在alist-web目录下执行

node ./scripts/i18n.mjs

在alist-web目录下执行

pnpm install && pnpm build

2 安装go环境编译alist

2.1 安装go

从以下网站下载go包,编译alist需要golang>=1.20的环境。

https://go.dev/dl/

把go文件解压到/usr/local目录

sudo tar -C /usr/local -xzf go1.23.5.linux-amd64.tar.gz

将Go添加到环境变量中

sudo nano /etc/profile

最后添加一行如下内容

export PATH=$PATH:/usr/local/go/bin

重新加载profile 文件

source /etc/profile

开启构建方式

go env -w GO111MODULE=on

设定一下go的源

go env -w GOPROXY=https://goproxy.io,direct

给github拉取添加代理如不理解不要做

export http_proxy=http://127.0.0.1:10808
export https_proxy=http://127.0.0.1:10808

2.2 编译alist

从GitHub克隆alist仓库

git clone https://github.com/AlistGo/alist.git

将上述1.1处alist-web目录编译出的dist粘贴到alist/public文件夹内,然后在alist目录下一次性输入如下内容回车进行编译

appName="alist"
builtAt="$(date +'%F %T %z')"
goVersion=$(go version | sed 's/go version //')
gitAuthor=$(git show -s --format='format:%aN <%ae>' HEAD)
gitCommit=$(git log --pretty=format:"%h" -1)
version=$(git describe --long --tags --dirty --always)
webVersion=$(wget -qO- -t1 -T2 "https://api.github.com/repos/alist-org/alist-web/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
ldflags="\
-w -s \
-X 'github.com/alist-org/alist/v3/internal/conf.BuiltAt=$builtAt' \
-X 'github.com/alist-org/alist/v3/internal/conf.GoVersion=$goVersion' \
-X 'github.com/alist-org/alist/v3/internal/conf.GitAuthor=$gitAuthor' \
-X 'github.com/alist-org/alist/v3/internal/conf.GitCommit=$gitCommit' \
-X 'github.com/alist-org/alist/v3/internal/conf.Version=$version' \
-X 'github.com/alist-org/alist/v3/internal/conf.WebVersion=$webVersion' \
"
go build -ldflags="$ldflags" .

如果出现报错无法下载,手动下载go模块放到~路径,再次编译。

3 结语

这就是我在debian12上编译alist的过程。

附:Alist V3 编译以及踩坑解决方案