Go-1.26.1

Introduksjon til Go

Go pakken inneholder en kompilator for Go språket, et objektorientert programmeringsspråk som støttes av Google.

Modern Go er skrevet i Go språket, og krever derfor en Go kompilator for å kompilere den moderne Go kompilatoren. Hvis Go ikke allerede er installert, vil instruksjonene be deg om å kompilere flere eldre versjoner av Go, startende med en som ble skrevet i C, og deretter kompilere nyere versjoner derfra.

Notat

Dette kan ta litt tid å bygge. Gjør gjerne noe annet mens dette bygges.

Bootstrapping Go

Hvis du ikke har installert Go ennå, må du bootstrappe den. GCC-Go er uegnet da det har flere problemer som hindrer det i å bygge Go ordentlig. Denne prosessen vil bygge en eldre C-versjon, etterfulgt av nyere versjoner som er skrevet fullstendig i Go.

Notat

Ikke utfør prosessen i den utpakkede hovedmappen.

Først opprett en liste over tidligere Go versjoner som må lastes ned og bygges:

cat > go-bootstrap-1.26.1 << "EOF"
ceb95ea6aef52c1fb472d3539c6ef68670778b5b/go-ceb95ea6aef52c1fb472d3539c6ef68670778b5b.tar.gz
15da892a4950a4caac987ee72c632436329f62d5/go-15da892a4950a4caac987ee72c632436329f62d5.tar.gz
90a870f1dc49bfcc6ffe95f80fbaf21875198e7a/go-90a870f1dc49bfcc6ffe95f80fbaf21875198e7a.tar.gz
5817e650946aaa0ac28956de96b3f9aa1de4b299/go-5817e650946aaa0ac28956de96b3f9aa1de4b299.tar.gz
96e4e2b1616c3c59577d48abcf2823bf1fdcd2e2/go-96e4e2b1616c3c59577d48abcf2823bf1fdcd2e2.tar.gz
EOF

Bruk Wget, for å laste ned alle Go versjonene som skal brukes til å starte opp den moderne Go:

grep -v '^#' go-bootstrap-1.26.1 | wget -i- -c \
  -B https://github.com/golang/go/archive/

Start et underskall som avsluttes ved feil:

bash -e

Nå bootstrap alle Go versjonene:

for go in $(grep -v '^#' go-bootstrap-1.26.1)
do
  go=$(basename "$go")
  godir=${go%.tar.?z*}
  echo "Bootstrapping $godir"

  rm -rf $godir
  tar -xf $go
  pushd $godir

  if [ -e src/cmd/dist/a.h ]; then
    sed -i '/typedef int bool/d' src/cmd/dist/a.h
  fi

  cd src
  CFLAGS+=" -std=gnu17" sh make.bash -v
  popd
  export GOROOT_BOOTSTRAP=$PWD/$godir
done; exit

Installasjon av Go

Som root bruker, opprett mappen der alle Go komponentene skal installeres:

mkdir -pv /opt/go-1.26.1

For å bygge moderne Go, sørg for at du allerede har Go installert eller boostrappet Go.

Hvis du bootstrappet Go, pakker du ut hovednedlastingen fra Go og endrer den til den utpakkede mappen, og angir deretter en variabel som forteller byggesystemet hvor det skal finne den bootstrappede byggingen:

export GOROOT_BOOTSTRAP=$PWD/../go-96e4e2b1616c3c59577d48abcf2823bf1fdcd2e2

Installer Go ved å kjøre følgende kommandoer:

cd src &&
CGO_ENABLED=1 GOROOT_FINAL=/opt/go-1.26.1 sh make.bash -v

Nå, som root bruker:

ln -sfvn go-1.26.1 /opt/go &&
for i in ../{bin,pkg,src,lib,misc,api,test}; do
  cp -va $i /opt/go-1.26.1
done &&
ln -svf  /opt/go/bin/go    /usr/bin &&
ln -svf  /opt/go/bin/gofmt /usr/bin &&
install  -vDm644 ../go.env \
         -t /opt/go-1.26.1/ &&

rm -rf /opt/go-1.26.1/pkg/bootstrap    &&
rm -rf /opt/go-1.26.1/pkg/obj/go-build &&
cp -va ../doc /usr/share/doc/go-1.26.1

Fjern tidligere angitte variabler:

unset GOROOT_BOOTSTRAP

Innhold

Installerte Programmer: go og gofmt
Installerte Biblioteker: Ingen
Installerte Mapper: /opt/go{,-1.26.1}

Korte Beskrivelser

go

er den moderne Go kompilatoren

gofmt

formaterer Go kode