我正在尝试构建一个静态可执行文件,该可执行文件使用该os/user模块来查找特定用户所属的组 on linux/amd64。
根据文档,设置osusergo构建标签将允许我使用该模块的非 cgo 版本,但该标志似乎没有做任何事情。
这是我构建可执行文件的方式:
export CGO_ENABLED=0
export GOOS=linux
export GOARCH=amd64
go build -tags osusergo -o bin/agent
这是我的 Go 版本:
$ go version
go version go1.14.4 linux/amd64
这是我如何使用该os/user模块的示例:
import (
"os/user"
)
func GetUserGroupIds(uid string) ([]string, error) {
u, err := user.LookupId(uid)
if err != nil {
return nil, err
}
gids, err := u.GroupIds()
if err != nil {
return nil, err
}
return gids, nil
}
在查找特定用户所属的组时,我收到以下错误:user: GroupIds requires cgo.
我没有-tags osusergo正确使用吗?