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

Mik*_*ike 5 go go-modules

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

我倾向于忘记哪些包提供了哪些二进制文件$GOBIN以及我编辑了哪些包go install

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

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

更新:( 此处go list ...建议)似乎不适用于我的情况,因为此命令希望我位于包含文件的目录中。我知道这是指定用于列出项目的包。就我而言,我需要找出安装到我的系统/user 中的所有软件包。go.modgo list$GOBIN

Jay*_*rod 6

对于 中的每个二进制文件$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=
Run Code Online (Sandbox Code Playgroud)

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=
Run Code Online (Sandbox Code Playgroud)