【问题标题】:Install golang library within subdirectory of Github repo在 Github repo 的子目录中安装 golang 库
【发布时间】:2018-12-05 23:05:26
【问题描述】:

当项目根目录下有src 文件夹时,Github 上的 Golang 项目通常由 go install 使用。现在我有一个结构如下的 Git 存储库:

project/
  lang/
    typescript/
    java/
    golang/
        src/
        pkg/

有没有办法对这个 git repo 使用go install?像这样的:

go install 'github.com/org/project' --dir 'lang/golang'

有人知道这是否可行以及如何实现?也许我可以先使用go get 来获取正确的目录,然后再使用go install

更新 - 或许一种解决方案是使用go bundle 打包库,然后安装带有文件url 的go 库?

【问题讨论】:

  • 你为什么不试试你建议的“去获取”、“去安装”方法?最坏的情况没有任何反应。
  • @Pizzalord 我们提出 SO 问题的一个原因是,他们最终可以帮助其他人解决同样的问题,我也非常讨厌猜测,但我想我可以花一个小时看文档
  • “我假设当项目的顶层有一个 src 文件夹时,Github 中的 Golang 项目通常被 go install 使用。”你的假设是错误的。基于错误假设的问题很难回答。
  • "当项目的根目录下有 src 文件夹时,Github 上的 Golang 项目通常会被 go install 使用。完全错了。
  • 通常,像您这样的问题的答案是有人只是在尝试您建议的可能有效的方法。但我刚刚为你搜索了它:)

标签: git go github


【解决方案1】:

GOPATH 环境变量设置为project/lang/golang 目录和您的项目(可能具有完全限定的路径,即在类unix 系统上以/ 开头的路径)。 go get 将安装到正确的位置。 go build/go install 等其他命令也可以正常工作。

关于 GOPATH 的信息: https://golang.org/doc/code.html#GOPATH

如何设置GOPATH: https://github.com/golang/go/wiki/SettingGOPATH

您还可以运行go help gopath 命令以获取更多文档。

【讨论】:

  • 我不认为你理解 OP。我的项目 X 是本地的,我正在尝试安装 project/lang/golang 作为 X 的依赖项。
  • 然后你只需像安装任何其他 go 包一样安装依赖项。做go get github.com/org/project/lang/golang/src/thepackage。您基本上会运行 go get 并使用与您在 import 语句中列出包的方式相匹配的参数。
【解决方案2】:

来自 go 文档 go command

使用后

$ 去获取 github.com/google/codesearch/index

$ 去获取 github.com/petar/GoLLRB/llrb

这两个项目现在都已下载并安装到 $HOME/go 中,其中包含两个目录 src/github.com/google/codesearch/index/ 和 src/github.com/petar/GoLLRB/llrb/,以及这些库及其依赖项的已编译包(在 pkg/ 中)。

【讨论】:

  • 这假设 pkg 文件夹位于项目/repo 的根目录中,不是吗?
  • 不,pkg 文件夹是您安装 go 时获得的文件夹,它位于 go/src 旁边,在我的机器上它是 C:/Go/pkg 和 C:/Go/src,而我的项目位于 C:/user/username/projects
  • 好吧,我投了赞成票,有人投了反对票,我不知道为什么。我假设一种解决方案是将你的 go 库打包成一个 zip 或 tar 文件,类似于这个 NPM 解决方案:stackoverflow.com/questions/53628830/…
  • go 不需要,使用 go get 应该获取包及其所有依赖项
猜你喜欢
  • 2018-02-15
  • 2012-02-19
  • 2015-06-01
  • 2017-01-04
  • 2017-09-10
  • 1970-01-01
  • 2013-01-09
  • 2016-06-24
相关资源
最近更新 更多