Solucionando problemas com “go get” para import packages de terceiros

Você está contente e feliz com golang e sabe que há outros “imports” de outros desenvolvedores/terceiros que podem ser interessantes para seu projeto.

Então quando você tentar importar esse côdigo para seu projeto, por exemplo:

# go get github.com/astaxie/beego

Dá um erro, falando que está faltando o comando para obter o repositório de source code, no caso, para este projeto Beego, que usaram o Git:

[root@localhost github.com]# go get github.com/astaxie/beego
go: missing Git command. See http://golang.org/s/gogetcmd
package github.com/astaxie/beego: exec: “git”: executable file not found in $PATH

Então para resolvermos este problemas e outros similares, devemos instalar o git, mas já vamos instalar outras comandos de outros projetos de repositórios de source codes, pois a experiência que já tive anteriormente é que estes são os mais usados (no caso do fedora, será como o comando abaixo, mas em outras distros, deve-se verificar antes como fazer):

yum install git mercurial subversion bzr -y

Geralmente ao clonar o código de uma área remota (ex: github) para um área local (seu filesystem), todo código clonado irá para este path:

/usr/lib64/golang/src/
/usr/lib64/golang/pkg/linux_amd64/

Sendo criado os paths acima + github.com/astaxie/beego baseado em go get github.com/astaxie/beego

Por exemplo:

/usr/lib64/golang/src/github.com/astaxie/beego
/usr/lib64/golang/pkg/linux_amd64/github.com/astaxie/beego

Agora funciona!

@firebitsbr

Setar variável persistente do $GOPATH no Fedora 20

É sempre chato ter que setar a variável de ambiente ($GOPATH) para trabalhar com Golang, no Fedora 20 a cada vez que se abre um shell.

Então para tornar essa variável persistente (export GOPATH=/usr/lib64/golang), é só setar nos arquivos:

.bashrc
.bash_profile

Exemplo abaixo:

[root@localhost test]# cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# Uncomment the following line if you don’t like systemctl’s auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions

export GOPATH=/usr/lib64/golang

[root@localhost test]# cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

export GOPATH=/usr/lib64/golang

Fechar todos os terminais (no caso de estar usando X11) ou efetuar logoff em caso de um server sem X11.

Depois, para testar é só digitar no shell:

[root@localhost test]# $GOPATH
bash: /usr/lib64/golang: Is a directory

se retornar “Is a directory” está setado corretamente.

@firebitsbr