安装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的过程。