web-dev-qa-db-fra.com

Installer go (golang) sur Raspbian

J'ai vérifié divers forums mais je ne l'ai toujours pas fait fonctionner. J'aime installer go (golang) sur mon Raspberry Pi - Raspbian:

Avec

Sudo apt-get install golang

J'ai installé go and with

export GOPATH=$home/pi/gocode

j'ai mis le GOPATH donc j'ai essayé d'installer à partir d'une page d'accueil un nouveau programme avec (Sudo go get -u github.com/....) mais je ne reçois que "cannot download, $GOPATH not set. For more details see: go help gopath ".

Je deviens vraiment fou de mon studip simple erreur que je ne vois pas.

Je serais heureux si j'obtiens une description très détaillée du "comment faire" puisque je suis nouveau sur Linux et Raspbian, donc tout ce qui est fait pour de vrais mannequins devrait être assez bon pour moi. Merci de votre aide.

10
heiko

Ce sont des instructions détaillées sur la façon d'installer Go on Raspbian Stretch à partir des référentiels.

À compter d'aujourd'hui, 30/01/2018, cela installera Go 1.7. La version la plus récente pour l'installation manuelle à partir des téléchargements est Go 1.9.3.

I. Connectez-vous à votre utilisateur sur le Raspberry Pi (j'utilise le pi d'utilisateur par défaut).

II. Installer Go (golang)

pi@pi3-2:~ $ Sudo apt update 
pi@pi3-2:~ $ Sudo apt install golang

III. Créez un répertoire de travail pour tous vos projets go dans votre répertoire $ HOME. Il est préférable de le nommer go, car il s'agit par défaut du GOPATH dans les futures versions de Go (à partir de Go 1.8).

pi@pi3-2:~ $ mkdir go

IV. Ajoutez la variable d'environnement $ GOPATH et les paramètres PATH modifiés à votre .profile

pi@pi3-2:~ $ echo 'export GOPATH=$HOME/go' >> ~/.profile
pi@pi3-2:~ $ echo 'PATH="$HOME/go/bin:$PATH"' >> ~/.profile

Déconnectez-vous et reconnectez-vous avec les nouveaux paramètres, puis vérifiez vos paramètres

pi@pi3-2:~ $ go env

GOARCH="arm"
GOBIN=""
GOEXE=""
GOHOSTARCH="arm"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/pi/go"
GORACE=""
GOROOT="/usr/lib/go-1.7"
GOTOOLDIR="/usr/lib/go-1.7/pkg/tool/linux_arm"
CC="gcc"
GOGCCFLAGS="-fPIC -marm -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build187598155=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"

Assurez-vous en particulier que GOPATH pointe vers votre répertoire de travail Go créé précédemment. Ne vous souciez pas de configurer GOBIN comme mentionné dans la documentation. Ce n'est généralement pas nécessaire et Go utilisera automatiquement $ GOPATH/bin/pour vos installations Go.

Cependant, vous pouvez également vouloir vérifier les paramètres de chemin (/ home/pi/go/bin devrait être inclus) pour vous assurer que vous pouvez exécuter le code que vous avez installé avec go install.

pi@pi3-2:~ $ echo $PATH
/home/pi/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

VI. Quelques mots sur la structure du répertoire de travail Go

Au fil du temps, le répertoire de travail Go contiendra trois sous-répertoires: bin, src et pkg. Sauf src, ils seront automatiquement créés, au besoin la première fois. La structure de l'utilisateur pi ressemblera à ceci:

/home
  /pi
    /go
      /src
      /pkg
      /bin

bin contiendra tous les exécutables Go que vous avez installés à l'aide de la commande go install.

pkg contiendra tous les packages compilés qui peuvent être importés dans vos projets.

src contiendra tous vos fichiers source, les vôtres ou ceux téléchargés à partir de référentiels externes.

Pour eksample, la commande go get github.com/petergloor/hello-go récupérera et placera automatiquement les fichiers source du référentiel Github externe correspondant dans le répertoire local $ HOME/go/src/github.com/petergloor/hello-go .

Comme il est assez courant de récupérer des référentiels externes pour référence ou contribution, il devient important de garder votre structure de répertoires toujours bien organisée et propre.

En dehors de cela, vous êtes libre d'organiser vos projets tant qu'ils sont structurés hiérarchiquement sous le répertoire $ HOME/go/src/et suivez les règles mentionnées dans la documentation.

Cependant, pour organiser clairement mes projets, personnellement, je place toujours mes projets dans $ HOME/go/src/github.com/my-github-account même si je n'ai pas de référentiel externe pour cela.

Si vous n'avez pas de compte github, vous pouvez également utiliser n'importe quel autre compte de référentiel externe.

Comme je l'ai mentionné, même si ce n'est pas du tout nécessaire, je préfère utiliser mon compte Github pour identifier clairement mes projets. Et même si ce n'est pas nécessaire, j'utiliserai le nom d'utilisateur pi pour distinguer l'utilisateur des autres responsables de projet dans l'exemple suivant.

VII. Ajoutons donc un projet "hello world" pour tester notre installation.

a) Créons d'abord le dossier du projet et le cd dans son répertoire.

pi@pi3-2:~ $ mkdir -p $HOME/go/src/pi/helloworld
pi@pi3-2:~ $ cd $HOME/go/src/pi/helloworld
pi@pi3-2:~/go/src/pi/helloworld $

b) Avec un éditeur de votre choix créez un fichier main.go avec le contenu suivant

// helloworld project main.go.
package main

import ("fmt")

// main is the entrypoint of the application.
func main() {
  fmt.Println("Hello world! Greetings from Raspberry Pi")
}

L'espacement n'a pas d'importance à ce stade. Go fournit un bel outil pour le faire pour vous.

c) Maintenant, essayez d'exécuter le programme.

pi@pi3-2:~/go/src/pi/helloworld $ go run main.go
Hello world! Greetings from Raspberry Pi
pi@pi3-2:~/go/src/pi/helloworld $

Si vous obtenez une erreur, corrigez-la! Vérifiez soigneusement l'orthographe et les cas (Go est sensible à la casse).

d) Permet ensuite de formater le code:

pi@pi3-2:~/go/src/pi/helloworld $ go fmt

Sans nom de fichier, cela (re) formatera correctement tous les fichiers source dans ce répertoire et ci-dessous.

e) Ensuite, construisons helloworld en tant que procramme exécutable, dans ce répertoire.

pi@pi3-2:~/go/src/pi/helloworld $ go build
pi@pi3-2:~/go/src/pi/helloworld $ ls
helloworld  main.go
pi@pi3-2:~/go/src/pi/helloworld $

f) Vous pouvez maintenant l'exécuter.

pi@pi3-2:~/go/src/pi/helloworld $ ./helloworld
Hello world! Greetings from Raspberry Pi
pi@pi3-2:~/go/src/pi/helloworld $

g) Enfin, installons le programme dans le répertoire $ HOME/go/bin /.

pi@pi3-2:~/go/src/pi/helloworld $ go install
pi@pi3-2:~/go/src/pi/helloworld $ ls $HOME/go/bin
hello-go  helloworld
pi@pi3-2:~/go/src/pi/helloworld $

h) Si tout est fait correctement, il peut être exécuté par notre utilisateur pi de n'importe où en entrant simplement le nom de la commande.

pi@pi3-2:~/go/src/pi/helloworld $ helloworld
Hello world! Greetings from Raspberry Pi
pi@pi3-2:~/go/src/pi/helloworld $ cd ~
pi@pi3-2:~ $ helloworld
Hello world! Greetings from Raspberry Pi
pi@pi3-2:~ $

Toutes nos félicitations!

23
Peter Gloor