cmd/go: 下载的模块缺少源文件,

falq053o  于 6个月前  发布在  Go
关注(0)|答案(5)|浏览(51)

你使用的Go版本是什么( go version )?

go version go1.12 darwin/amd64

这个问题在最新版本中是否重现?

是的

你正在使用什么操作系统和处理器架构( go env )?

go env 输出

GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/jamesclarke/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/jamesclarke/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/jamesclarke/Source/Temp/gotest/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/6m/dh9gmlhd00g9qkdsv86pj2dw0000gn/T/go-build486175678=/tmp/go-build -gno-record-gcc-switches -fno-common"

你做了什么?

  1. 创建一个新项目
  2. go mod init gitHub.com/foo/bar
  3. 创建一个包含以下内容的hello.go文件:
package main

import (
        "golang.org/x/crypto/ssh/terminal"
)

func main() {
        _, err := terminal.MakeRaw(0)
        if err != nil {
                log.Fatal(err)
        }
}
  1. go build

你期望看到什么?

程序编译成功

你看到了什么?

go build
# golang.org/x/sys/unix
../../../go/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12/unix/fcntl_darwin.go:15:42: undefined: Flock_t              
../../../go/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12/unix/ioctl.go:14:47: undefined: Winsize                     
../../../go/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12/unix/ioctl.go:25:47: undefined: Termios                     
../../../go/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12/unix/sockcmsg_unix.go:50:18: undefined: Cmsghdr             
../../../go/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12/unix/sockcmsg_unix.go:56:9: undefined: Cmsghdr

尝试使用go get golang.org/x/sys并构建仍然失败

unftdfkk

unftdfkk1#

(CC @jayconrod)

从错误信息中的所有缺失声明都来自 ztypes_darwin_amd64.go,所以这听起来像是从提取的模块中某种程度上丢失了该文件。

你是否偶然使用了这个版本的 golang.org/x/sys 与之前的 Go 工具链版本一起使用,特别是与同时调用 go 命令一起使用?

如果没有,请保存您主模块的 go.modgo.sum 文件,并将 $GOPATH/pkg/mod/cache/download/golang.org/x/sys/@v$GOPATH/pkg/mod/golang.org/x/sys@v0.0.0-20190225065934-cc5685c2db12 目录树的内容(供后续调查)保存到一个 (最好是一个 tarzip 归档文件)中,然后运行 go clean -modcache 以查看模块是否有相同的方式被损坏。

e1xvtsh3

e1xvtsh32#

我特别想知道:
a. 缺失的文件是否存在于该模块版本的 .zip 文件中?
b. 是否有其他文件存在于 .zip 文件中,但缺失于模块的解压缩副本中?

qaxu7uf2

qaxu7uf23#

我已经安装了之前的Go版本,但没有同时调用go cmd。go clean -modcache确实解决了问题,如果你感兴趣,我有存档。

qq24tv8q

qq24tv8q4#

请务必附上档案。(可能不会有新的线索,但你永远不知道...)

相关问题