#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