не удается найти пакет «bufio» ни в одном из

#go #installation

#Вперед #установка

Вопрос:

Я установил 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, установленный и успешный, что означает создание все еще зависящего старого пакета, такого как bufio.

Итак, почему произошел сбой при настройке GOROOT_BOOTSTRAP=~/goroot_bootstrap?
Зависит ли сборка от старого пакета при установке GOROOT_BOOTSTRAP=/usr/local/go?
Какой из них является правильным методом для установки из исходного кода?

Буду признателен за любую помощь.

Комментарии:

1. The scripts that do the initial build of the tools look for an existing Go tool chain in $GOROOT_BOOTSTRAP — вам нужен весь набор инструментов, а не только go двоичный файл

2. @JimB Может потребоваться весь goroot