如何列出其二进制文件安装在 $GOBIN 中的软件包?

How do I list packages whose binaries are installed in $GOBIN?

如果我理解正确,go install 将二进制文件放在 $GOBIN 目录中。

我往往会忘记 $GOBIN 中哪些包提供了哪些二进制文件,哪些包是我 go install 编辑的。

有没有办法列出当前 go install-ed 的软件包?

显然,我可以做 ls $GOBIN,这会给我二进制文件的名称。但是,我正在寻找一种方法来获取带有长名称的包列表,例如github.com/operator-framework/operator-sdk.

更新: go list ...(建议 here)似乎不适用于我的情况,因为此命令希望我位于包含 go.mod 文件。我知道 go list 指定用于列出 项目 的包。就我而言,我需要找出安装到我的 system/user.

$GOBIN 中的所有软件包

对于 $GOBIN 中的每个二进制文件,您可以使用 go version -m 来显示有关 Go 版本和用于构建该二进制文件的模块版本的信息。例如,这里是我的go version -m ~/go/bin/goimports

$ go version -m ~/go/bin/goimports
/Users/jayconrod/go/bin/goimports: go1.15.2
    path    golang.org/x/tools/cmd/goimports
    mod golang.org/x/tools  v0.0.0-20200910165216-53e29e9d1252  h1:qn28WK3EvdJOSlyZFNeWnaEX8X5GiQv+8mrw9mYrXko=
    dep golang.org/x/mod    v0.3.0  h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
    dep golang.org/x/xerrors    v0.0.0-20200804184101-5ec99f83aff1  h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=

path 行显示已安装的 main 包的名称。看来我需要更新了。

$ go install golang.org/x/tools/cmd/goimports@latest
$ go version -m ~/go/bin/goimports
/Users/jayconrod/go/bin/goimports: go1.17rc1
    path    golang.org/x/tools/cmd/goimports
    mod golang.org/x/tools  v0.1.5  h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA=
    dep golang.org/x/mod    v0.4.2  h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
    dep golang.org/x/sys    v0.0.0-20210510120138-977fb7262007  h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE=
    dep golang.org/x/xerrors    v0.0.0-20200804184101-5ec99f83aff1  h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=