Golang中解决glide安装或go mod vendor报错问题

Golang中解决glide安装或go mod vendor报错问题 你好,

我正在尝试编译: github.com_dennisstritzke_ipsec_exporter

执行 glide install 时出现:

我已将 / 替换为 _

[ERROR] 扫描 github.com_cespare_xxhash_v2 时出错:无法在以下位置找到包 “.”:

使用 go mod vendor 时:

没有匹配 “latest” 查询的版本

我已安装最新版本:

go version go1.14.6 linux/amd64

我的环境变量是:

GO111MODULE=“on” GOARCH=“amd64” GOBIN="" GOCACHE="/root/.cache/go-build" GOENV="/root/.config/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH=“amd64” GOHOSTOS=“linux” GOINSECURE="" GONOPROXY="" GONOSUMDB="" GOOS=“linux” GOPATH="/root/go" GOPRIVATE="" GOPROXY=“https://proxy.golang.org,direct” GOROOT="/usr/local/go" GOSUMDB=“sum.golang.org” GOTMPDIR="" GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" GCCGO=“gccgo” AR=“ar” CC=“gcc” CXX=“g++” CGO_ENABLED=“1” GOMOD="/root/go/src/go.mod" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG=“pkg-config” GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build799110821=/tmp/go-build -gno-record-gcc-switches"

我对 Golang 非常非常陌生,有人能给我指明正确的方向吗?

到目前为止我找到的信息都没有帮助。

提前感谢。


更多关于Golang中解决glide安装或go mod vendor报错问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

我因为只能放两个链接的错误提示而无法发布,所以省略了一些信息。

更多关于Golang中解决glide安装或go mod vendor报错问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你好,

最后一个 _ 实际上是一个下划线,抱歉之前没有说清楚。

所以它应该是

go get GitHub - dennisstritzke/ipsec_exporter: Prometheus exporter for IPsec metrics.

但我通过从 apt 安装所有东西,然后只设置 GOPATH 绕过了这个问题。

我不明白为什么当我尝试使用 tar 包中的最新版本时会失败。

apt 版本虽然旧,但它是可用的。

go version go1.10.4 linux/amd64

感谢您的回复。

alvesjc:

github.com_dennisstritzke_ipsec_exporter

我尝试了:

go get github.com/dennisstritzke/ipsec/exporter

但遇到了错误:

fatal: could not read Username for 'https://github.com': terminal prompts disabled

然后我尝试直接访问那个 GitHub 页面,得到了一个 404 错误。

我似乎没有访问那个仓库的权限,因此无法测试以找出这个包的问题所在。你有访问权限吗?当你尝试不使用“glide”来 go get 它时,你收到了什么信息?

从错误信息看,这是典型的模块路径问题。项目使用下划线替代斜杠导致Go模块系统无法正确解析导入路径。

首先检查你的项目结构是否正确:

# 正确的项目路径应该是
/root/go/src/github.com/dennisstritzke/ipsec_exporter

# 而不是
/root/go/src/github.com_dennisstritzke_ipsec_exporter

如果路径确实错误,需要重命名目录:

mv /root/go/src/github.com_dennisstritzke_ipsec_exporter \
   /root/go/src/github.com/dennisstritzke/ipsec_exporter

然后进入正确目录初始化模块:

cd /root/go/src/github.com/dennisstritzke/ipsec_exporter

# 清理旧的glide文件
rm -rf glide.lock glide.yaml vendor/

# 初始化Go模块
go mod init github.com/dennisstritzke/ipsec_exporter

# 下载依赖
go mod download

# 验证构建
go build ./...

如果项目本身有go.mod文件,直接执行:

cd /root/go/src/github.com/dennisstritzke/ipsec_exporter
go mod tidy
go build ./...

对于"latest"版本错误,检查go.mod中是否有无效的版本声明。如果有类似这样的行:

github.com/some/pkg latest

需要改为具体的版本号或删除让Go自动选择:

# 让Go模块自动解决依赖版本
go mod tidy

如果遇到网络问题,可以设置国内代理:

export GOPROXY=https://goproxy.cn,direct
go mod tidy

最后编译项目:

go build -o ipsec_exporter main.go

关键点是确保项目路径符合Go模块的约定,使用正斜杠而不是下划线作为路径分隔符。

回到顶部