Go Ошибки сборки в оболочке GCP - доступ запрещен локальным Go Пакеты сборки? - PullRequest
0 голосов
/ 08 февраля 2020

ВОПРОС: Являются ли мои постоянные параметры конфигурации пользователя Google Cloud Platform Shell причиной root проблемы? Или Google необходимо переустановить двоичную установку Go на компьютере, который используется для предоставления экземпляров виртуальных машин пользователей?

ОБЩАЯ ИНФОРМАЦИЯ

При использовании редактора оболочки GCP (Theia IDE ) для работы с Go исходным кодом обнаружена следующая проблема:

go build runtime/internal/atomic: open /usr/local/go/pkg/linux_amd64/runtime/internal/atomic.a: permission denied
go build runtime/internal/sys: open /usr/local/go/pkg/linux_amd64/runtime/internal/sys.a: permission denied
go build internal/cpu: open /usr/local/go/pkg/linux_amd64/internal/cpu.a: permission denied
go build math/bits: open /usr/local/go/pkg/linux_amd64/math/bits.a: permission denied
go build internal/race: open /usr/local/go/pkg/linux_amd64/internal/race.a: permission denied
go build sync/atomic: open /usr/local/go/pkg/linux_amd64/sync/atomic.a: permission denied
go build unicode/utf8: open /usr/local/go/pkg/linux_amd64/unicode/utf8.a: permission denied
go build unicode: open /usr/local/go/pkg/linux_amd64/unicode.a: permission denied
go build crypto/internal/subtle: open /usr/local/go/pkg/linux_amd64/crypto/internal/subtle.a: permission denied
go build crypto/subtle: open /usr/local/go/pkg/linux_amd64/crypto/subtle.a: permission denied
go build internal/nettrace: open /usr/local/go/pkg/linux_amd64/internal/nettrace.a: permission denied
go build vendor/golang.org/x/crypto/cryptobyte/asn1: open /usr/local/go/pkg/linux_amd64/vendor/golang.org/x/crypto/cryptobyte/asn1.a: permission denied
go build runtime/cgo: open /usr/local/go/pkg/linux_amd64/runtime/cgo.a: permission denied

Если я разверну в GCP App Engine Standard, все компилируется и работает нормально. Следовательно, похоже, что проблема ограничена локальной средой разработки на предоставляемой виртуальной машине / терминале?

Похоже, это была довольно распространенная проблема , возможно, с более ранней компиляцией или установка установки бинарного релиза Go в целом (т. е. за пределами GCP Shell)?

Мне удалось временно решить проблему, удалив существующую бинарную установку Go, а затем переустановив ее с помощью приведенных ниже команд оболочки. , Тем не менее, поскольку оболочка GCP является экземпляром виртуальной машины, установка двоичного выпуска Go обновляется всякий раз, когда экземпляр оболочки закрывается и запускается другой; бинарный выпуск Go находится вне моего постоянного дискового хранилища, подключенного к каталогу $ HOME в экземпляре.

cd ~
wget "https://dl.google.com/go/go1.13.7.linux-amd64.tar.gz"  # get fresh Go binary installation release version
sudo rm --recursive /usr/local/go # uninstall the Sept 3 Go binary installation release version
sudo tar -C /usr/local -xzf go1.13.7.linux-amd64.tar.gz  # install fresh Go binary installation release version
rm go1.13.7.linux-amd64.tar.gz  # remove downloaded Go binary install package

Другая потенциально полезная информация отображается ниже:

PATH:

/home/lance_hegland/bin
/home/lance_hegland/gopath/bin
/google/gopath/bin
/usr/local/go/bin
/opt/gradle/bin
/opt/maven/bin
/google/google-cloud-sdk/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/local/nvm/versions/node/v10.14.2/bin
/google/go_appengine
/google/google_appengine

Go Версия

* go1.13 linux/amd64 (original)
* go1.13.7 linux/amd64 (post-reinstall)

Go Переменные среды

GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/lance_hegland/.cache/go-build"
GOENV="/home/lance_hegland/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/lance_hegland/gopath:/google/gopath"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
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 -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build248154127=/tmp/go-build -gno-record-gcc-switches"
...