安装Geth
安装Geth主要有三种方式:直接官网或国内镜像下载编译好的可执行文件,系统包管理器(apt-get)安装和源码安装。这里主要就Linux环境给出后面两种。(更推荐用源码安装,在整个过程中可以看到Geth各组件的构建步骤。)
apt-get方式在线安装
Ubuntu用户可以选择在线安装的方式,在终端中依次执行以下命令即可:
$ apt-get install software-properties-common
$ add-apt-repository -y ppa:ethereum/ethereum
$ apt-get update
$ apt-get install ethereum
如果没有root权限,需要在每个命令前加上sudo,或者直接切换到root用户。
安装完成后执行geth help查看geth用法,能正常显示就说明安装好了。
安装go语言
Geth主要是由Go语言实现的,从源码安装geth需要对源码进行编译,因此需要go语言和C语言编译器。
我们可以从go语言官网下载安装包,(如果不能上外网,可以去go语言中文官网下载安装包)我的系统是Ubuntu 18.04.5 LTS,下载最新版本的go语言安装包。
1.解压缩
然后解压缩到/usr/local,会在这个目录下生成一个go文件夹
$ tar -C /usr/local -xzf go1.15.linux-amd64.tar.gz
2.设置环境变量
官网上给出的配置环境变量方法是在/etc/profile文件中添加一行代码,从而将/usr/local/go/bin添加到PATH环境变量中。其他教程是将这行代码添加到~/.bashrc文件中,应该添加到其中一个文件就可以,我为了保险,两个文件都添加了。
export GOROOT=/usr/local/go
export PATH=$PATH:/usr/local/go/bin
如果想要指定go语言项目存放的目录,可以再添加一行配置GOPATH的代码,比如想存放到我的home/gowork目录下
export GOPATH=$home/gowork
对这两个文件进行修改后需要重启使修改生效,也可以用通过命令行执行下面的命令来使修改立即生效。(改的哪个文件就用对应的命令)
$ source /etc/profile
或者
$ source ~/.bashrc
3.测试go是否安装成功
通过一个简单的程序来检查:新建一个名为hello.go的文件,内容为
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
然后在命令行窗口进入到hello.go 所在的目录下,执行下面的命令
$ go build hello.go
$ ./hello
输出hello,world就证明go语言安装成功了!
4.Installing extra Go versions
在一台机器上安装多个版本的Go语言很有用,比如,可以确保一个package可以通过多种版本的Go语言测试。当我们的电脑已经安装了一个版本的Go语言时,我们可以通过下面的方式安装其他版本。(以1.10.7为例)
$ go get golang.org/dl/go1.10.7
$ go1.10.7 download
要使用新下载的版本可以在命令行输入以下指令
$ go1.10.7 version
go version go1.10.7 linux/amd64
所有支持这种方法的Go版本都在这个页面列出来了。查看GOROOT可以看到这些版本都安装在哪里,比如 go1.10.7 env GOROOT。
源码安装Geth
1.克隆github仓库
首先克隆git仓库,以获取源代码的副本。
切换到你想要存放源码的目录下,打开终端,输入命令。
$ git clone https://github.com/ethereum/go-ethereum.git
克隆完成后会出现一个go-ethereum的文件夹。
2.从源码构建Geth
cd到go-ethereum目录
$ cd go-ethereum/
这个时候可以到以太坊查看最新的branch
git命令切换到目标branch
$ git checkout release/1.9
打包命令
$ make geth
打包成功后配置环境变量(我的go-ethereum文件在/home/project目录下)
$ export PATH=$PATH:/home/project/go-ethereum/build/bin
查看geth version,确保在真正运行之前安装正常:
$./build/bin/geth version
或者geth help查看帮助,能正常显示就ok。
$ geth help
基于Debin的Linux系统比如Ubuntu,make geth 的时候出现了找不到包的问题,这是因为系统原因安装go的时候少创建了一些包,解决办法:
https://github.com/golang/go/wiki/Ubuntu
https://blog.csdn.net/mercyT/article/details/86610101
https://github.com/ethereum/go-ethereum