gpt4 book ai didi

go - Golang 的 Homebrew 公式

转载 作者:数据小太阳 更新时间:2023-10-29 03:03:01 28 4
gpt4 key购买 nike

我想编写一个 Homebrew 公式来安装 Go 包及其依赖项。到目前为止,这是我得到的:

class LsGo < Formula
desc "A more colorful, user-friendly implementation of `ls` written in Go"
homepage "https://github.com/acarl005/ls-go"
url "https://github.com/acarl005/ls-go/archive/v0.0.0.tar.gz"
sha256 "db9ba7300fbbaf92926b2c95fd63e3e936739e359f123b5a45e6ca04b490af51"

depends_on "go" => :build

def install
ENV["GOPATH"] = buildpath
(buildpath/"src/github.com/acarl005").mkpath
ln_s buildpath, buildpath/"src/github.com/acarl005/ls-go"
system "cd", buildpath/"src/github.com/acarl005/ls-go"
system "go", "get", "./"
system "cd", "-"
system "go", "build", "-o", bin/"ls-go"
end

test do
system bin/"ls-go", "--help"
end
end

但是我在 $GOPATH 之外运行 go get ./ 时遇到错误。

==> cd /private/tmp/ls-go-20180612-22435-oidqms/ls-go-0.0.0/src/github.com/acarl005/ls-go
==> go get ./
Last 15 lines from /Users/andy/Library/Logs/Homebrew/ls-go/02.go:
2018-06-12 16:31:14 -0700

go
get
./

go get: no install location for directory /private/tmp/ls-go-20180612-22435-oidqms/ls-go-0.0.0 outside GOPATH

这对我来说没有意义。我将 ENV["GOPATH"] 设置为 /private/tmp/ls-go-20180612-22435-oidqms/ls-go-0.0.0/,然后我 cd进入该路径的子目录。为什么它说我在 $GOPATH 之外?

我应该如何获取我的包的依赖项?

编辑:我宁愿避免销售包。

最佳答案

我很确定您的 Homebrew 公式只是一个 Ruby 类,具有一些 DSL 魔法以使其更友好。这意味着 system 在单独的进程中运行命令,因此:

system "cd", "some_directory"

将在一个单独的进程中更改当前目录,然后该进程退出而不影响父进程。

你应该使用 Dir.chdir相反:

Dir.chdir buildpath/"src/github.com/acarl005/ls-go" do
system "go", "get", "./"
end
system "go", "build", "-o", bin/"ls-go"

使用 block 形式(即 Dir.chdir dir do ... end)将更改指令,运行 system 命令,然后更改回原始目录在继续之前,您不必担心 cd - 部分。

关于go - Golang 的 Homebrew 公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50827348/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com