2015-06-15 2 views
0

На Fedora 22 я обнаружил, что все стандартные библиотеки go go не видны на пути для go.Перейти «непризнанный импорт»

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

Примечание Версия ходу я установил это 1.4.2

Я устанавливал GOROOT =/USR/Lib/golang и GOPATH = (ничего).

Какие внутренние каталоги в/usr/lib/golang следует искать в устранении недостающих библиотек?

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

[[email protected] 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"

и соответствующий идти окр:

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"

UPDATE

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

+3

Точно как вы устанавливаете Go? Если вы устанавливаете из источника, не устанавливайте 'GOROOT'. – JimB

+0

Я пробовал это с GOROOT и без него. Какие уловки я могу использовать, чтобы действительно проверить проблему? Почему GOROOT повредит ситуацию? – jayunit100

+1

Я не знаю, что искать, потому что я не знаю, как вы сюда попали. Если вы использовали официальную двоичную установку, все, что вы делаете, это распаковать tarball и установить соответствующие переменные. * Какие шаги вы использовали для установки Go? * – JimB

ответ

-2

TLDR

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

yum erase golang-src

rm -rf /usr/lib/golang/

yum install golang-src golang

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

детали КАК ИССЛЕДУЕТ GOLANG Установлены

Очевидны: 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.То есть, вы СЛЕДУЕТ видеть исходные каталоги там для ядра, например, из здоровой рабочей установки.

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/Библиотека/golang/src. Это в основном означает, что в моем пакете пакетов отсутствовали некоторые очень важные компоненты, и почти любая операция go get ..., таким образом, завершится неудачей, так как ни одна из стандартных библиотек не находится в пути GOROOT.

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

+0

Спасибо, что помогли мне ответить на это! Думаю, мне нужно будет проверить упаковку этого дистрибутива и посмотреть, почему он исключает стандартную библиотеку src/directory. – jayunit100

Смежные вопросы