问题标签 [go-modules]
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.
go - go模块没有正确下载动态库的cgo软链接
环境为ubuntu 16.04 64bit,go版本go1.12 linux/amd64
我正在尝试将我的 golang 项目从 gopath 切换到 gomodule。我的项目导入的其中一个包是使用cgo调用ffmpeg,包中有几个动态ffmpeg库,例如libavcodec.so、libavcodec.so.57、libavcodec.so.57.107.100,前两个文件是软链接文件问题是当我去构建我的golang项目时,go模块只下载libavcodec.so.57.107.100,它没有下载两个软链接文件
我尝试去获取包,并成功获取了包括软链接文件在内的所有库
我希望 go module 下载所有 c 动态库文件,包括软链接文件,但我没有得到软链接文件
更新:我在 github 上提交了一个问题,似乎这是故意的,请参阅问题 #32050
go - 为什么代码中有些包以v2为前缀,而我克隆的文件路径却没有v2?
GitHub:https ://github.com/filebrowser/filebrowser
看了这个项目的源码,发现main.go依赖于cmd包。发现import语句中的路径包含v2,但是我从github克隆项目后文件路径中没有v2?为什么会这样?
google-app-engine - `go build -mod vendor` 无法使用 vendored 包
将我的 Go 服务部署到 Google AppEngine(标准)时,我收到一个错误,描述未找到模块版本,而一切编译正常。
这些模块位于私有 Github 实例上,并签出到vendor/
.
Ago build -mod vendor -o /dev/null ./...
适用于 cloud-build-local、本地和 Google Cloud Build。github.com/company/gosystem 上有一个名为“v1.1.0”的标签:
Agrep -RI 'gosystem@' *
什么也没报告。
go - go 如何知道从哪里获取包裹
当我在 go 应用程序中导入包时(使用带有 golang 插件的模块和 vscode):
go 自动检索包。go 怎么知道从哪里得到它?我认为它只是从 github.com 中提取源代码,但该项目的存储库名称中https://github.com/goadesign/goa
没有.
。如果我将导入更改为:
它检索v3
包。我很乐意使用 RTFM,但不确定我需要阅读哪个 FM。
顺便说一句:这是我的第二天,go
所以这对我来说很神奇。
go - 使用 Go 模块时如何获取依赖项的主分支
我正在为一个项目使用 Go-modules。当我检索包的依赖项时,它会检索旧版本。如何在 master 分支中获取代码?
go - 更新时锁定特定分支的 go 模块
Dep 有一个非常有用的选项 - 通过约束锁定给定的分支包。您只需为包指定一个分支并dep ensure -update
仅在选定的分支内更新此包。
在 go 模块中,我必须手动输入 go get -u package@branch ,如果我想通过它更新我的所有模块,go get -u
它将更改branch
为package
带有最近提交的分支(如果有的话)。
是否有可能具有类似 dep 的行为或自动化此工作流程?
go - 使用模块时如何让 Travis 更快地构建
我们在一个项目中使用 go modules 和 travis。每次 Travis 构建项目时,go modules 都会获取所有依赖项,这会增加构建时间。有什么方法可以减少时间或避免每次都获取 deps 吗?
go - 使用 /cmd 结构构建 Go 项目时出错(多个入口点)
这是我的项目的目录结构(~/go/src/bitbucket.org/a/b
):
我需要编译 2 个二进制文件(cmd/ 中的每个模块一个)。
我尝试GO111MODULE=on go build ./cmd/c
从项目根目录(~/go/src/bitbucket.org/a/b
)运行。它默默地结束,什么也不做。
我也试过跑步GO111MODULE=on go build -o test ./cmd/c
。它创建了 29kb 的test
文件。当我为其添加执行权限并运行时,它以错误结束:
我尝试过使用 go 1.12.5 和 go 1.11.10。此外,当我将main.go
任何 cmd 目录中的文件放入项目根目录并构建时,编译器会很好地构建它(二进制文件大小约为 33mb)。
是否可以在单个项目中使用 2 个编译器入口点?
go - 使用 go 模块将 retool 替换为 tools.go 用于多开发人员和 CI 环境
我想用 go modules tools.go “工具作为依赖项”替换retool 。但是,当我的开发人员和 CI env 都使用不同的操作系统时,我很难理解这是如何工作的。
我想确保每个环境都使用完全相同版本的工具。
举个具体的例子,我的应用需要 protoc 编译器通过 github.com/golang/protobuf/protoc-gen-go 生成 go 代码。我有 3 个操作系统,都需要使用 protoc-gen-go 插件/生成器执行 protoc:
- 瑞恩:使用 MacOS
- 乔:Linux(Ubuntu)
- CI:Linux(CentOS)
我目前使用 retool 来确保所有环境都锁定在相同版本的工具上(本例中的 protoc-gen-go):
我的新 go 模块/“作为依赖项的工具”设置
工具.go:
设置将使用的路径go install
:
安装:
如果 Ryan 运行go install ..
MacOSbin/protoc-gen-go
可执行文件,则会创建。
问题:
- 此时,为什么
protoc-gen-go
go.mod 中没有列出工具版本(或 git hash)? - 当 Joe 克隆应用程序存储库时,他如何获取和编译 Ryan 使用的相同版本的 protoc-gen-go?
- 如何
protoc
知道protoc-gen-go
在我的目录中使用可执行生成器./bin
?
git - 如何使用语义版本构建 Go Module?
以下是使用 git repo 设置新的最小 Go 模块项目、提交并使用带注释的语义版本标记对其进行标记的 bash 步骤:
快速验证它的标记是否正确:
构建并运行:
这会产生:
我希望看到我标记存储库的语义版本。相反,我得到了虚拟占位符版本。怎么了?