如何列出二进制文件安装在$GOBIN路径下的Go软件包
列出所有通过
go install 安装的完整软件包路径 适用版本:Go 1.11及以上
Go编译生成的二进制文件默认内嵌了构建时的模块信息,通过go version -m命令即可读取到对应软件包的完整导入路径,具体操作如下:
通用查询命令(Linux/macOS)
直接执行以下命令即可输出所有已安装二进制对应的完整包路径:
for bin in $(go env GOBIN)/* $(go env GOPATH)/bin/*; do if [ -f "$bin" ] && [ -x "$bin" ]; then pkg_path=$(go version -m "$bin" | awk '/^\tpath/ {print $2}') if [ -n "$pkg_path" ]; then echo "$(basename $bin): $pkg_path" fi fi done | sort -u
输出示例:
operator-sdk: github.com/operator-framework/operator-sdk/cmd/operator-sdk golangci-lint: github.com/golangci/golangci-lint/cmd/golangci-lint
命令说明
- 自动读取
GOBIN和默认GOPATH/bin两个路径下的可执行文件,避免环境变量未配置导致的查询遗漏 - 会自动过滤非可执行文件和无模块信息的二进制文件
- 输出内容同时包含二进制文件名和对应完整包路径,方便对照
原理说明
go install生成的二进制会内嵌构建元数据,go version -m可以解析出该元数据中的path字段,该字段就是执行go install时所使用的完整软件包地址,完全符合查询需求。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

