解决境内yay无法编译的问题

Yay 是 “Yet Another Yogurt” 的缩写(LCTT 校注:Yogurt 是另外一个已经停止维护的 AUR 助手)。从技术上讲,它是用 Go 编程语言 编写的 pacman 封装器和 AUR 助手。它是当今最流行的 Arch 用户仓库(AUR) 助手。使用 Yay,你可以利用庞大的 Arch 用户软件包库并轻松编译和安装任何软件。 ——https://linux.cn/article-14846-1.html

但!是!如果你在国内直接安装(编译)yay的话,大概率会因为网络问题无法继续,比如:

1
clean.go:8:2: github.com/Jguer/[email protected]: Get "https://proxy.golang.org/github.com/%21jguer/aur/@v/v1.2.3.mod": read tcp [2409:8a30:133:7f14:2cc5:46c6:ced9:1c]:50696->[2404:6800:4012:5::2011]:443: read: connection timed out

如果你直接设置GoProxy再编译,会发现还是不行。

正确的姿势是:

1
2
3
git clone https://aur.archlinux.org/yay.git
cd yay
nano PKGBUILD

打开PKGBUILD,编辑一下编译脚本:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
build() {
  export GOPATH="$srcdir"/gopath
  export CGO_CPPFLAGS="${CPPFLAGS}"
  export CGO_CFLAGS="${CFLAGS}"
  export CGO_CXXFLAGS="${CXXFLAGS}"
  export CGO_LDFLAGS="${LDFLAGS}"
  export CGO_ENABLED=1

# 加上下面这两行
  export GO111MODULE=on
  export GOPROXY=https://goproxy.cn
# 加上上面这两行

  cd "$srcdir/$pkgname-$pkgver"
  make VERSION=$pkgver DESTDIR="$pkgdir" PREFIX="/usr" build
}

然后再makepkg -si,祝你好运~

附常规换源法,有的人说有用:

1
2
3
4
5
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

export GO111MODULE=on
export GOPROXY=https://goproxy.cn
Licensed under CC BY-NC-SA 4.0
Have a try!
使用 Hugo 构建
主题 StackJimmy 设计
本博客已稳定运行