Я установил go1.11.5, скачав предварительно скомпилированный двоичный пакет прямо на мою ubuntu18.04.Теперь я хочу установить go1.12 путем сборки из источника, поэтому я следую с Установка Go из источника .
Я установил GOROOT_BOOTSTRAP = ~ / goroot_bootstrap
$ mkdir -p ~/goroot_bootstrap/bin
$ cp /usr/local/go/bin/go ~/goroot_bootstrap/bin/
$ echo "export GOROOT_BOOTSTRAP=~/goroot_bootstrap" >> ~/.bashrc
$ source ~/.bashrc
Затем получите источник
$ git clone -b release-branch.go1.12 https://github.com/golang/go.git ~/github.com/golang/go
Сборка
$ cd ~/github.com/golang/go/src
$ ./all.bash
Не удалось, и советы:
Building Go cmd/dist using /home/pi/goroot_bootstrap.
cmd/dist/imports.go:12.2: cannot find package "bufio" in any of:
/home/pi/goroot_bootstrap/src/bufio (from $GOROOT)
/home/pi/go/src/bufio (from $GOPATH)
...
Но если я установлю GOROOT_BOOTSTRAP = / usr / local / go , это будет успешно.
Затем я читаю исходный код в src / make.bash.
166 rm -f cmd/dist/dist
167 GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
Загрузочные инструменты собирают cmd / dist с помощьюGOROOT = "$ GOROOT_BOOTSTRAP" в строке 167.
Если у меня есть GOROOT_BOOTSTRAP = / usr / local / go set и success, что означает создание еще зависящего от старого пакета, такого как bufio.
Итак, почему это не удалось при установке GOROOT_BOOTSTRAP = ~ / goroot_bootstrap ?
Зависит ли сборка от старого пакета, если задано значение GOROOT_BOOTSTRAP = / usr / local / go ?
Какой из нихправильный метод установки из источника?
Любая помощь будет благодарна.