问题标签 [gopath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3197 浏览

go - golang项目下找不到供应商目录

我的 golang 版本是 go1.10.2 linux/amd64。我可以毫无问题地构建和运行我的 go 项目(在 gopath/src 下),但我看不到项目文件夹下的供应商目录。我想知道供应商文件夹是否是隐藏目录?未生成供应商文件夹的可能原因是什么?

0 投票
1 回答
480 浏览

go - golang 运行时包从构建它的系统设置文件路径

我有一个简单的 go 代码,它使用运行时包如下:

我已经在 Ubuntu 机器(比如机器 A)上的自定义位置(/home/ userA /bin/go)安装了 Go 二进制文件

我已经在机器A上编译它并在同一台机器上运行可执行文件以获得输出:

现在我将编译后的可执行文件复制到另一台 Ubuntu 机器(比如机器 B),其中 Go 二进制文件安装在另一个不同的自定义位置(/home/ userB /bin/go)。我从/home/userB运行可执行文件。但这一次,我得到了和以前一样的输出:

似乎运行时包在编译期间设置了堆栈帧。

我需要根据GOPATH环境变量对文件路径进行一些处理,我在机器 A 上设置为/ home /userA ,在机器B上设置为/home/ userB

我需要从每个文件路径中删除 GOPATH 部分。我用这个简单的函数调用来做到这一点:strings.Replace(frame.File, GOPATH, "", 1)

但是,由于运行时包的这种行为,该strings.Replace函数无法替换机器B上文件路径的初始部分。

关于如何在机器B上完成此操作的任何想法?

更新

按照@JimB 的建议,我用

CGO_ENABLED=0 go build -a -ldflags="-w -s" -gcflags=-trimpath=/home/userA -asmflags=-trimpath=/home/userA

现在,在同一台机器上运行可执行文件会给出如下输出:

路径前缀仅针对主文件进行修剪。对于任何供应商导入的包或任何本地导入的包,它仍然存在。

0 投票
1 回答
909 浏览

installation - Hyperledger Fabric 中的 GOPATH

我正在浏览 Hyperledger Fabric 文档

https://hyperledger-fabric.readthedocs.io/en/release-1.2/prereqs.html

我注意到在“入门”部分中,您从先决条件开始。所以基本上,安装所有使用结构的依赖项。

但是,Fabric 没有安装在先决条件部分,但是,在同一部分的 Go 编程语言部分中,提到了

首先,您必须将环境变量 GOPATH 设置为指向包含下载的 Fabric 代码库的 Go 工作区,例如:

但此时没有下载的 Fabric 代码库。

我应该做些什么?GOPATH 的价值应该是多少?

0 投票
0 回答
440 浏览

ubuntu - 尝试获取时没有可构建的 Go 源文件

我正在将我的 go 文件服务器部署到 ubuntu 服务器上,但是当我从我的 $GOPATH 目录运行 go get cms-web-server 时,我收到以下错误:

这很奇怪,因为我的 GOPATH 似乎设置正确。我使用的软件包可能有问题吗?

0 投票
1 回答
9191 浏览

go - golang供应商路径找不到包

我正在构建示例程序github.com/tarm/serial

案例 1:如果上面的 repo 签出到$GOPATH/src/github.com/tarm/serial.

案例 2:如果 repo$GOPATH/src/vendor/github.com/tarm/serialgo build命令下移动会抱怨cannot find package "github.com/tarm/serial

案例 3:其他 SO 答案建议将其放在下面./vendor,以便包位于./vendor/github.com/tarm/serial. 那也不行。

Go 版本是 1.10.4。我相信看到建议案例 2 或案例 3 的页面应该在过去的不同时间工作。有什么改变吗?您是否需要以某种方式启用供应商功能?

细节:

失败的命令

源代码位于./

./vendor目录:

如果现在运行此命令:mv ./vendor/github.com ./libs/src,构建将成功。

0 投票
0 回答
271 浏览

go - 如何在 Go 1.11+ for Golang 中使用 GOPATH 之外的整体 repo 架构共享本地模块

上下文:我们使用的是单体存储库架构。这意味着我们有一个包含许多项目的大型 github 存储库,每个项目都使用自己的 ui、node、go 等技术堆栈。

在 go_common 中,我们有用于所有 go 项目的通用代码,例如日志记录、数据库连接、我们的模式/模型作为结构等。我们使用 Go 1.11 并在 go.mod 中声明模块。我们在 GOPATH 之外也有整个工作区和项目。我们不希望任何供应商/第 3 方在我们的 repo 中下载模块,类似于我们在 node.js 项目中的 .gitignore node_modules。所以 go-get 正在按预期将供应商模块下载到 GOPATH src/pkg ,并且可以将它们导入到任何 go 项目中。

但是,我们无法让导入引用 go_common 的模块工作。我们尝试在 go_common 中执行 go build 和 go install,它在 GOPATH/bin 中创建了一个二进制文件,但这并没有帮助它实际上可以引用。有没有一种标准的方法来做到这一点,特别是现在 Go 1.11 和 vgo 集成假设不依赖 GOPATH 并使模块管理更容易...... ??

0 投票
1 回答
89 浏览

linux - 这是一个有效的 Go 路径配置吗?

我将路径变量放置如下:

我已将这些行放在 ~/.profile 和 ~/.bashrc 中,并同时获取它们(不确定它们中的哪一个生效)。

我的环境输出:

我已将以下代码放在 $HOME/Professional/Sch/Fabric/go/hellp.go 中:

但每次我这样做go install hellp.go,我都会得到:

这很奇怪,因为go version返回 a go version go1.10.4 linux/amd64,我不确定它为什么要引用/usr/local/go/bin/hellp,因为那里没有“hellp”文件,它是我在$HOME/Professional/Sch/Fabric/go/.

我不确定缺少哪个目录权限,但我尝试过:

我的 uname -a 输出:

我正在尝试安装以 Go 为先决条件的 HyperLedger Fabric,并且清楚地go version输出显示其已成功安装,但是,我不确定需要在何处或如何配置它来测试和使用它。

0 投票
1 回答
1267 浏览

macos - Golang 下载和'$GOPATH 未设置'

我下载了 Golang 1.11.1,但是当我在终端中输入“go version”时,我得到:“go version go1.6.2 darwin/amd64”。

当我在终端中输入“which go”时,我得到:/usr/local/bin/go

我可以在 /usr/local 中看到有一个go目录,当我打开文件 VERSION 时,它显示 1.11.1

当我在终端中尝试“ go get https://github.com/blablabla ”时,它会显示“package github.com/google/uuid: cannot download, $GOPATH not set”。有关更多详细信息,请参阅: go help gopath'

这里有什么问题?难道我是我的mac上的用户之一(而不是原始用户)?要访问我的文件,我必须先转到 Users/myusername... 如何更改我的 GOPATH 以使其正常工作?

谢谢-S

更新:我通过编辑我的 bash_profile 将我的 $GOPATH 设置为“/Users/myusername/go”,但版本仍然没有改变,尽管我重新下载了 Go。

0 投票
1 回答
2132 浏览

git - Setting up proper Golang directory structure with git to use go build on custom packages

So I've been scratching my head at this for a couple weeks now, and after reading several source on how $ go build works and its three magic directories, /bin, /pkg, /src, it's still not very clear to me how to build Golang projects using custom packages and how a git repo should be managed.

Let me explain my situation in more detail:

I'm working on a Go project in a project directory that is not the same as the default .../user/go/.... For all my projects, I have a different directory tree that is structured like this:

My projects directory could contain any kind of project: java, Unity3D, VisualC#, etc... then in each project under that it contains a repo with the source code.

I've been able to build successfully recently by adding projects/project-b/project-b to my GOPATH so it sees the src directory.

Is this how the file structure for a typical Go project should look, even though this builds correctly?

In my GOPATH, I removed the original path to user/go and just used the project directory only. When installing other packages from github, they get included in the repo because the GOPATH isn't set anywhere else, so my repo has these different submodules. Is installing external packages into a repo a wise thing to do, or should those go into a different go directory? I'm worried it might muddy the repo.

I can include

I need to know if I'm using custom packages correctly. My intent is to take an object oriented approach with my code base and I'm treating each packages as a class. Is making custom packages to treat them as classes a smart thing to do? I found it necessary to avoid same-name conflicts between functions and variables. Example: package-a.GetThing(), package-b.GetThing(). Both functions yield a similar (not exact) output, but are working with different sets of data and require different implementation.

My console is in projects/project-b/project-b/ when I use go build and it works correctly. Same if I move main.go inside src.

One problem is that the Go builder is strangely placing the compiled binary file in the same directory I invoke go build from. Shouldn't go build be placing it in the bin directory, or do I need to enforce the output path when using the command? I'm aware of GOBIN, but it doesn't seem to be working.

0 投票
1 回答
128 浏览

google-app-engine - goapp 测试不工作,得到错误“GOPATH must be absolute”,而它是绝对的

我正在为我的谷歌云应用程序编写测试。我阅读了文档,似乎在本地运行测试的唯一方法是goapp test在测试包目录中运行命令。但是当我运行命令时,我得到了错误go: GOPATH entry is relative; must be absolute path: "".

我很确定我的 GOPATH 是绝对设置好的。这是我运行命令时的结果go env | grep GOPATH

GOPATH=":/home/mohammad/go:/home/mohammad/go/src/gitlab.com/gc-auth"

当我运行时也得到相同的输出echo $GOPATH

任何帮助表示赞赏。

PS:我有 ubuntu 18.04,我的 go 版本是 1.10.4

结果gcloud version

Google Cloud SDK 228.0.0 app-engine-go app-engine-python 1.9.80 bq 2.0.39 cloud-datastore-emulator 2.0.2 core 2018.12.07 gsutil 4.34