网盘聚合挂载神器Alist及FreeBSD版编译

很多人应该都听说过Alist,一个在GitHub上有27k stars的文件列表程序,支持多种网盘挂载。

最近想在一台FreeBSD的服务器上运行Alist,但服务器并没有开启Linux兼容层,会出现以下错误:

ELF binary type "0" not known.
./alist: Exec format error. Binary file not executable.

上网搜寻一番,Alist官方并没有提供FreeBSD支持,而网上似乎也没有人有编译过FreeBSD版本,无奈之下,只能自己编译了。

环境要求

  • FreeBSD
  • wget
  • git
  • golang>=1.20
  • nodejs
  • gcc
  • bash(FreeBSD不自带,需自行安装!)

编译过程

本文编译版本为3.19.0。

首先要安装FreeBSD并配置好编译环境。我使用的配置是FreeBSD最小安装,硬盘空间7G,其中3G用于系统文件,剩余4G用于环境配置和编译所需空间(虚拟机硬盘扩容了好几次才成功编译😓)。

先进入bash,然后克隆Alist:

git clone https://github.com/alist-org/alist.git

然后下载前端的Release(偷个懒):

wget https://github.com/alist-org/alist-web/releases/download/3.19.0/dist.tar.gz

tar -xzvf dist.tar.gz

将解压出来的dist文件夹复制到alist/public/下,并进入alist文件夹。

为了加快编译速度并避免一些奇奇怪怪的错误,先把go的源换到国内:

export GOPROXY=https://goproxy.cn,direct

#可以用以下命令查看是否修改成功
go env

然后,新建一个sh文件并粘贴以下内容:

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" .

保存并执行,不出意外的话,就可以在当前目录(alist/)下找到名为alist的二进制文件了。

网盘链接

这里分享下我编译的版本。

https://www.123pan.com/s/9H4UVv-IBUqh.html

提取码:Nccc

已发布

分类

来自

评论

3 条对“网盘聚合挂载神器Alist及FreeBSD版编译”的回复

  1. csuleiw 的头像
    csuleiw

    你好,编译文件可以copy直接运行吗.还是要自己编译一遍

    1. ysy 的头像

      只要编译时使用的架构与目标平台一致就可以直接copy运行

  2. 国服最强白嫖党 的头像
    国服最强白嫖党

    我准备学习一下,想搞一个uptime-kuma,结果第一步就被劝退了…完全不会

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注