Перейти "непризнанный импорт"

На fedora 22 я обнаружил, что все стандартные библиотеки go не видны на пути к go.

ПРИМЕЧАНИЕ. Я действительно очистил свою систему от golang - так что я уверен, что это не проблема смешанного управления версиями пакетов, которая часто может возникнуть при обновлении go.

ПРИМЕЧАНИЕ. Версия go, которую я установил, - 1.4.2.

Я установил GOROOT=/usr/lib/golang и GOPATH=(что угодно).

Какие внутренние каталоги в / usr / lib / golang я должен изучить для устранения проблем с отсутствующими библиотеками?

Простой пример неудач, которые я получаю, ниже...

[jay@rhbd gopath]$ go get github.com/golang/example/hello package github.com/golang/example/hello imports fmt: unrecognized import path "fmt" package github.com/golang/example/hello imports runtime: unrecognized import path "runtime"

и соответствующий go env:

GOHOSTOS="linux" GOOS="linux" GOPATH="/home/jay/gopath/" GORACE="" GOROOT="/usr/lib/golang" GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64" CC="gcc" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0" CXX="g++" CGO_ENABLED="1"

ОБНОВИТЬ

Что касается комментариев в этой теме... Похоже, у меня нет ничего в / usr / lib / golang / src. Означает ли это, что мой дистрибутив Go не работает? Если так, может быть, двоичный файл Go должен быстро потерпеть неудачу, когда это так...?

1 ответ

TLDR

Окончательное решение моей проблемы было следующим (это может быть излишним).

yum erase golang-src

rm -rf /usr/lib/golang/

yum install golang-src golang

После установки golang-src вы должны подтвердить, что действительно в GOROOT/src/ есть несколько пакетов для всех стандартных go libs, то есть перечисленных ниже.

ДЕТАЛИ КАК РАССМОТРЕТЬ ГОЛАНГОВЫЕ УСТАНОВКИ

Очевидно: go get получает и устанавливает указанный вами исходный код. Большинство библиотек go используют стандартные библиотеки, такие как io или же bytes и так далее. Следовательно, хороший тест, что ваш дистрибутив go установлен правильно, и что ваш GOPATH также установлен - это запустить go get, Например go get github.com/golang/example/hello достаточно, чтобы выявить недостаток стандартных библиотек GOROOT.

Первое, что нужно сделать, это проверить, что GOROOT из коробки в вашем isntallation. Это доступно, запустив go env, который даст вам все переменные среды.

В общем GOROOT должен иметь src/ каталог под ним. Однако, если у вас сломан пакет go, то некоторые из этих библиотек могут (по некоторым причинам) не находиться в GOROOT/src. То есть, вы ДОЛЖНЫ видеть каталоги с исходными текстами для основных компонентов go, например, из работоспособной установки go.

ls /usr/lib/golang/src/ all.bash builtin/ compress/ errors/ html/ libbio/ Make.dist os/ run.bash strings/ time/ all.bat bytes/ ...... net/ regexp/ strconv/ text/

Теперь, оглядываясь назад на мою неработающую установку, она выглядела совсем иначе, чем выше... Похоже, у меня НИЧЕГО нет в / usr / lib / golang / src. Это в основном означает, что в моем пакете go отсутствовали некоторые очень важные компоненты, и почти все go get ... операция завершится ошибкой, поскольку ни одна из стандартных библиотек go не находится в пути GOROOT.

Как упоминалось выше - конечное решение здесь было просто yum erase golang-src, rm -rf /usr/lib/golang/ а затем и yum install golang-src golang,

Другие вопросы по тегам