去安装 golang.org/x/crypto/pbkdf2@latest 返回'not a main package'



我是新手,正在尝试运行一个包含以下内容的go脚本:

import (
"bytes"
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"crypto/sha256"
"encoding/base64"
"errors"
"fmt"
"io"
"golang.org/x/crypto/pbkdf2"
)

如果我尝试运行该脚本,它显示我缺少pbkdf2包:

$ go run DecryptGrafanaPassword.go
DecryptGrafanaPassword.go:12:2: no required module provides package golang.org/x/crypto/pbkdf2: go.mod file not found in current directory or any parent directory; see 'go help modules'

但当我尝试安装它时,它也抱怨它不是主包:

$ go install golang.org/x/crypto/pbkdf2@latest                                                          
package golang.org/x/crypto/pbkdf2 is not a main package

最简单的方法是什么?

go install下载一个包并构建一个可执行文件。每个可执行文件都必须有一个子模块main。由于golang.org/x/crypto/pbkdf2没有main,因此go install失败。

实际上,你只需要go mod tidy。它读取源代码,将所需的模块写入go.mod并下载它们。我用你的导入创建了一个小例子,这就是go mod tidy所做的:

code$ go mod tidy
go: finding module for package golang.org/x/crypto/pbkdf2
go: downloading golang.org/x/crypto v0.0.0-20220817201139-bc19a97f63c8
go: found golang.org/x/crypto/pbkdf2 in golang.org/x/crypto v0.0.0-20220817201139-bc19a97f63c8

这是go.mod,由以下命令更新:

module example.org
go 1.16
require golang.org/x/crypto v0.0.0-20220817201139-bc19a97f63c8

golang.org/x/crypto的源代码已自动下载到$GOPATH/pkg/mod/golang.org/x/crypto@v0.0.0-20220817201139-bc19a97f63c8/

最新更新