建立Golang环境的步骤备忘录

最近我开始接触Go语言。
每次搭建开发环境时,我都会忘记,所以想把它作为备忘录记下来。
操作系统是以Linux(CentOS7)和Windows10为目标。(因为没有Mac所以没试过)。

顺便说一下,我会使用Vim作为编辑器。

Linux(CentOS7)

我們將按照以下順序進行操作:首先進行Go的安裝,然後更新Vim,最後安裝vim-go插件。

关于Linux,我们使用Virtualbox和Vagrant通过以下的Vagrantfile进行创建。
(※IP地址保持原样应该没问题,但是只是随便填写的。)
如果要使用,请按以下文件夹结构,在与Vagrantfile相同的位置创建share文件夹并启动。

gotest (フォルダ)
  |-share (フォルダ)
  |-Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.hostname = "gotest"
  config.vm.network "private_network", ip: "192.168.50.10"
  config.vm.synced_folder "./share", "/home/vagrant/ws", mount_options: ['dmode=755','fmode=644']
  config.vm.provider "virtualbox" do |v|
    v.name = "gotest"
    v.memory = 4096
    v.cpus = 2
  end
  config.vm.provision "shell", inline: <<-SHELL
    yum update -y
    yum install epel-release -y
    yum install man-pages.noarch man-pages-ja.noarch vim-enhanced git -y
  SHELL
end

安装 Go

可以通过yum进行安装,但由于版本稍旧,建议从官方网站下载并安装。
※ 使用curl指定的URL是从“Downloads”页面复制并获取。

Goのインストール
$ mkdir ~/DL        # ダウンロードしたファイルをホームに置くのが好きじゃないのでDLフォルダを作っています。(任意)
$ cd ~/DL
$ curl -L -O https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz
$ sudo tar -C /usr/local -xzf go1.12.9.linux-amd64.tar.gz

環境変数の設定
$ echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bash_profile
$ echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.bash_profile
$ source ~/.bash_profile

確認
$ go version
go version go1.12.9 linux/amd64

Go用のディレクトリ作成
$ mkdir -p `go env GOPATH`/{src,bin,pkg}

※ 只是把命令直接放在/usr/local下,所以在更新时是否可以直接覆盖呢?(我没有进行过调查。)

Go的安装就到这里结束了,但是我会补充一些额外的步骤,以便更好地进行。

ライブラリやコマンドの追加時に使用するパッケージのインストール
$ sudo yum install -y git mercurial subversion
GOのREPLをインストール
$ GO111MODULE=off go get -u github.com/motemen/gore/cmd/gore

確認
$ gore
gore version 0.4.1  :help for help
gore>

終了は:q
gore> :q

Vim 的更新

为了安装vim-go并进行后续步骤,需要更新到Vim 7.4.2009或Neovim 0.3.1以上的版本。

vim-go要求至少使用Vim 7.4.2009版或Neovim 0.3.1版。

環境のアップデート
$ sudo yum update -y
$ sudo yum install -y git gcc ncurses-devel

GitHubからダウンロード
$ cd 
$ git clone https://github.com/vim/vim.git ~/DL/vim    # DLはGoインストール時に作成したディレクトリ

Vimのビルド
$ cd ~/DL/vim
$ make && sudo make install
$ cd        # ホームに戻る

バージョン確認
$ vim --version | head -n 1
VIM - Vi IMproved 8.1 (2018 May 18, compiled May  7 2019 13:12:36)

(バージョンが変わっていない場合は、再ログインを試してください。)

安装vim-go(Vim插件)。

安装插件后,它可以在保存时自动调整格式等,非常方便!

$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
$ git clone https://github.com/fatih/vim-go.git ~/.vim/plugged/vim-go

以下の内容を ~/.vimrc に追加。 (echoから>> ~/.vimrcまでで1つのコマンドです。)
echo "call plug#begin()
  Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' }
call plug#end()" >> ~/.vimrc

打开终端模式的Vim并执行命令:GoInstallBinaries。

$ vi        # または $ vim

コマンドラインモード(:を入力)で実行する
:GoInstallBinaries

如果没有执行上述操作,则打开现有的go文件(例如:sample.go)时会显示以下错误。

vim-go: could not find 'gopls'. Run :GoInstallBinaries to fix it
Error detected while processing function <SNR>10_register[9]..go#lsp#DidOpen:
line   19:
E117: Unknown function: sendMessage

您可以使用以下命令来更新插件。

:PlugUpdate

Windows10是一款操作系统。

这是在Windows上安装时的备注。
由于在Windows上使用GitBash,所以内容是基于GitBash的。
由于有一些地方没有仔细确认,所以请参考作为补充说明。

安装Chocolatey。

如果您尚未安装Chocolatey,请参考以下内容进行安装。
(只需复制并以管理员权限运行该命令即可)
https://chocolatey.org/install

安装Go

请使用管理员权限启动命令提示符或PowerShell,并执行以下操作进行安装。

検索
> choco search golang

インストール
> choco install -y golang

更新は以下
> choco upgrade -y golang

使用Git Bash

请注意,截至2019年8月24日,最新的GitBash版本(2.23)中,Vim的版本已经符合vim-go的要求。
如果您的Vim版本过旧,请从官方网站下载安装程序并进行最新版本的安装。

听说※GitBash(Windows上的Git)也可以通过Chocolatey进行安装,
但由于已经使用安装程序安装了,所以这里使用的是安装程序。

在安装完成后,打开GitBash并执行以下操作来添加用于Go语言的环境变量。

環境変数の設定
$ echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bash_profile
$ echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.bash_profile
$ echo 'export GOBIN=$HOME/go/bin' >> ~/.bash_profile

設定の反映
$ source ~/.bash_profile

在Windows中,也可以使用gore。与Linux类似,需要进行安装。

GOのREPLをインストール
$ GO111MODULE=off go get -u github.com/motemen/gore/cmd/gore

GitBashでは挙動がおかしい場合があるので、コマンドプロンプトを使用します。
> gore
gore version 0.4.1  :help for help
gore>
gore> :q

vim-go的安装(适用于Windows的补充说明)

请参考Linux上的安装步骤,因为vim-go在Windows上的安装步骤几乎相同。
以下是有关在Windows上进行配置时出现的错误的补充说明。

错误执行curl

当执行curl命令时,可能会显示以下类似的消息。

$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
You don't have permission to create C:.

在中文中,GitBash的启动通常是通过“打开文件夹 – 右键点击 – 在此处打开Git Bash”来实现的,但是只要在启动时指定保存位置(本例中为~/.vim),就可以顺利执行。

根据我个人的情况,我将C盘和D盘分割开来,
尽管保存位置是在C盘,但是我在D盘上启动了GitBash,
因此出现了类似上述的消息提示。

解决方法2:在执行GoInstallBinaries时出现错误

在Windows上设置了在Linux上未设置的环境变量GOBIN。
如果未设置:在执行GoInstallBinaries时,将输出以下类似消息。

vim-go已经安装完成了!尽管最后输出了这一句话,看起来好像成功了,但是当我们打开go文件时,仍然会显示与首次安装相同的错误信息:又要求重新执行GoInstallBinaries。

vim-go: gogetdoc not found. Installing github.com/zmb3/gogetdoc to folder C/bin/
vim-go: guru not found. Installing golang.org/x/tools/cmd/guru to folder C/bin/
vim-go: gopls not found. Installing golang.org/x/tools/gopls@latest to folder C/bin/
Error installing golang.org/x/tools/gopls@latest: Fetching https://golang.org/x/tools/gopls?go-get=1^@Parsing meta tags from https://golang.org/x/tools/gopls?go-get=1 (status code 200)^@get "golang.org/x/tools/gopls": f
ound meta tag get.metaImport{Prefix:"golang.org/x/tools", VCS:"git", RepoRoot:"https://go.googlesource.com/tools"} at https://golang.org/x/tools/gopls?go-get=1^@get "golang.org/x/tools/gopls": verifying non-authoritativ
e meta tag^@Fetching https://golang.org/x/tools?go-get=1^@Parsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)^@go: finding golang.org/x/tools/gopls v0.1.3^@Fetching https://golang.org/x/tools?go
-get=1^@Parsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)^@get "golang.org/x/tools": found meta tag get.metaImport{Prefix:"golang.org/x/tools", VCS:"git", RepoRoot:"https://go.googlesource.com
/tools"} at https://golang.org/x/tools?go-get=1^@go: finding golang.org/x/tools v0.0.0-20190710153321-831012c29e42^@Fetching https://golang.org/x/net?go-get=1^@Fetching https://golang.org/x/sync?go-get=1^@Parsing meta t
ags from https://golang.org/x/net?go-get=1 (status code 200)^@get "golang.org/x/net": found meta tag get.metaImport{Prefix:"golang.org/x/net", VCS:"git", RepoRoot:"https://go.googlesource.com/net"} at https://golang.org
/x/net?go-get=1^@Parsing meta tags from https://golang.org/x/sync?go-get=1 (status code 200)^@get "golang.org/x/sync": found meta tag get.metaImport{Prefix:"golang.org/x/sync", VCS:"git", RepoRoot:"https://go.googlesour
ce.com/sync"} at https://golang.org/x/sync?go-get=1^@go: finding golang.org/x/net v0.0.0-20190620200207-3b0461eec859^@go: finding golang.org/x/sync v0.0.0-20190423024810-112230192c58^@Fetching https://golang.org/x/crypt
o?go-get=1^@Fetching https://golang.org/x/text?go-get=1^@Fetching https://golang.org/x/sys?go-get=1^@Parsing meta tags from https://golang.org/x/text?go-get=1 (status code 200)^@get "golang.org/x/text": found meta tag g
et.metaImport{Prefix:"golang.org/x/text", VCS:"git", RepoRoot:"https://go.googlesource.com/text"} at https://golang.org/x/text?go-get=1^@Parsing meta tags from https://golang.org/x/crypto?go-get=1 (status code 200)^@get
 "golang.org/x/crypto": found meta tag get.metaImport{Prefix:"golang.org/x/crypto", VCS:"git", RepoRoot:"https://go.googlesource.com/crypto"} at https://golang.org/x/crypto?go-get=1^@Parsing meta tags from https://golan
g.org/x/sys?go-get=1 (status code 200)^@get "golang.org/x/sys": found meta tag get.metaImport{Prefix:"golang.org/x/sys", VCS:"git", RepoRoot:"https://go.googlesource.com/sys"} at https://golang.org/x/sys?go-get=1^@go: f
inding golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2^@go: finding golang.org/x/text v0.3.0^@go: finding golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a^@go: downloading golang.org/x/tools v0.0.0-20190710153
321-831012c29e42^@go: extracting golang.org/x/tools v0.0.0-20190710153321-831012c29e42^@go: downloading golang.org/x/tools/gopls v0.1.3^@go: extracting golang.org/x/tools/gopls v0.1.3^@go: downloading golang.org/x/sync
v0.0.0-20190423024810-112230192c58^@go: extracting golang.org/x/sync v0.0.0-20190423024810-112230192c58^@cannot install, GOBIN must be an absolute path^@
vim-go: could not find 'gopls'. Run :GoInstallBinaries to fix it
function <SNR>13_GoInstallBinaries[133]..go#lsp#Restart の処理中にエラーが検出されました:
行    7:
E18: 予期せぬ文字が :let にありました
vim-go: fillstruct not found. Installing github.com/davidrjenni/reftools/cmd/fillstruct to folder C/bin/
vim-go: godef not found. Installing github.com/rogpeppe/godef to folder C/bin/
vim-go: motion not found. Installing github.com/fatih/motion to folder C/bin/
vim-go: errcheck not found. Installing github.com/kisielk/errcheck to folder C/bin/
vim-go: dlv not found. Installing github.com/go-delve/delve/cmd/dlv to folder C/bin/
vim-go: gocode not found. Installing github.com/mdempsky/gocode to folder C/bin/
vim-go: impl not found. Installing github.com/josharian/impl to folder C/bin/
vim-go: golangci-lint not found. Installing github.com/golangci/golangci-lint/cmd/golangci-lint to folder C/bin/
vim-go: gotags not found. Installing github.com/jstemmer/gotags to folder C/bin/
vim-go: gorename not found. Installing golang.org/x/tools/cmd/gorename to folder C/bin/
vim-go: goimports not found. Installing golang.org/x/tools/cmd/goimports to folder C/bin/
vim-go: gocode-gomod not found. Installing github.com/stamblerre/gocode to folder C/bin/
vim-go: gomodifytags not found. Installing github.com/fatih/gomodifytags to folder C/bin/
vim-go: keyify not found. Installing honnef.co/go/tools/cmd/keyify to folder C/bin/
vim-go: golint not found. Installing golang.org/x/lint/golint to folder C/bin/
vim-go: iferr not found. Installing github.com/koron/iferr to folder C/bin/
vim-go: asmfmt not found. Installing github.com/klauspost/asmfmt/cmd/asmfmt to folder C/bin/
vim-go: gometalinter not found. Installing github.com/alecthomas/gometalinter to folder C/bin/
vim-go: installing finished!

阅读消息内容后,可以得出以下信息:“GOBIN必须是绝对路径。”

安装<中略>出错,无法安装,GOBIN必须是绝对路径
vim-go: 找不到’gopls’。运行:GoInstallBinaries来修复它

结束

现在,Go的环境已经准备好了。
这就是本次的全部内容。

请参考

https://golang.org/doc/install
https://golang.org/dl/

CentOS7.6に最新のGolangをインストールする

CentOS7.6にソースファイルからVim version 8をインストールする


https://github.com/hnakamur/vim-go-tutorial-ja

https://github.com/motemen/gore

https://budougumi0617.github.io/2018/05/30/debug-go-by-vim-go-and-delve/
https://qiita.com/shiro01/items/a300b6d5b572a314ce5e
https://chocolatey.org/docs/commands-reference

https://golang.org/doc/install
https://golang.org/dl/

CentOS7.6に最新のGolangをインストールする

CentOS7.6にソースファイルからVim version 8をインストールする


https://github.com/hnakamur/vim-go-tutorial-ja

https://github.com/motemen/gore

https://budougumi0617.github.io/2018/05/30/debug-go-by-vim-go-and-delve/
https://qiita.com/shiro01/items/a300b6d5b572a314ce5e
https://chocolatey.org/docs/commands-reference

广告
将在 10 秒后关闭
bannerAds