The program, which makes an Ethereum node in your computer, is called
geth
. “geth” is written using the GO language and the latest version depends on GO version 1.7+. Ubuntu 16 LTS has GO language package version 1.6 so to build it from source we need first to install a proper version of GO Language.
STEP 1) Install a proper version of GO Language 1.7+
In our tutorial you will install 1.9 using this howto: “Install GO language in Ubuntu 16 LTS from the official site package”
STEP 2) Update your system and install dependencies
sudo apt-get update -y sudo apt-get install -y build-essential libgmp3-dev git
STEP 3) Get the “geth” code and compile it
git clone https://github.com/ethereum/go-ethereum cd go-ethereum make geth
STEP 4) Check is everything is OK, installed geth version 1.8.2-unstable
srv@local:~/go-ethereum$ cd ./build/bin srv@local:~/go-ethereum/build/bin$ ./geth version Geth Version: 1.8.2-unstable Git Commit: b574b5776695eb30e034fd8c7a468b3f03d4c6b9 Architecture: amd64 Protocol Versions: [63 62] Network Id: 1 Go Version: go1.9.4 Operating System: linux GOPATH= GOROOT=/usr/local/go
* Next tutorial is getting the node up and running here!
* Troubleshooting
- if you get
~/go-ethereum$ make geth build/env.sh go run build/ci.go install ./cmd/geth build/env.sh: 30: exec: go: not found Makefile:15: recipe for target 'geth' failed make: *** [geth] Error 127
You did not install properly go, check our manual here: “Install GO language in Ubuntu 16 LTS from the official site package”. Check whether you source /etc/profile in your current ssh/console/login session, check if you exported the PATH, your PATH must include “your_goinstallation_path/bin”, it’s like “/usr/local/go”.
- if you get
~/go-ethereum$ make geth build/env.sh go run build/ci.go install ./cmd/geth ci.go:190: You have Go version go1.6.2 ci.go:191: go-ethereum requires at least Go version 1.7 and cannot ci.go:192: be compiled with an earlier version. Please upgrade your Go installation. exit status 1 Makefile:15: recipe for target 'geth' failed make: *** [geth] Error 1
The installation just uses the default installed GO language of your system, which is 1.6 and is not supported by the “geth” Ethereum program. There are two options:
- Uninstall the old version with your packet manager apt-get
sudo apt-get purge -y golang*
And install GO version 1.9 from our how to “Install GO language in Ubuntu 16 LTS from the official site package” if you have not installed it yet.
- If you like to have the 1.6 as default and use 1.9 (from our “Install GO language in Ubuntu 16 LTS from the official site package” whenever you need it you have to set the proper path every time you would like to use it (the GO version 1.9 is ):
ubuntu@srv.local:~$ export PATH="/usr/local/go/bin:$PATH" ubuntu@srv.local:~$ go version go version go1.9.4 linux/amd64
- Uninstall the old version with your packet manager apt-get
When we talk for crypto currency the best source is always the GIT version (probably the best one is the stable tag, but it is safe to use the unstable, too), it is most secure source you could get. Do not download from 3rd party sites or unofficial repositories, you could lose your money.
* Here is the building output
srv@local:~/go-ethereum$ make geth build/env.sh go run build/ci.go install ./cmd/geth >>> /usr/local/go/bin/go install -ldflags -X main.gitCommit=b574b5776695eb30e034fd8c7a468b3f03d4c6b9 -v ./cmd/geth github.com/ethereum/go-ethereum/crypto/sha3 github.com/ethereum/go-ethereum/common/math github.com/ethereum/go-ethereum/rlp github.com/ethereum/go-ethereum/vendor/github.com/go-stack/stack github.com/ethereum/go-ethereum/common/hexutil github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/util github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/comparer github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/storage github.com/ethereum/go-ethereum/crypto/secp256k1 github.com/ethereum/go-ethereum/vendor/github.com/golang/snappy github.com/ethereum/go-ethereum/log github.com/ethereum/go-ethereum/vendor/gopkg.in/karalabe/cookiejar.v2/collections/prque github.com/ethereum/go-ethereum/common github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/cache github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/filter github.com/ethereum/go-ethereum/vendor/github.com/aristanetworks/goarista/monotime github.com/ethereum/go-ethereum/common/mclock github.com/ethereum/go-ethereum/event github.com/ethereum/go-ethereum/crypto/randentropy github.com/ethereum/go-ethereum/vendor/github.com/pborman/uuid github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/opt github.com/ethereum/go-ethereum/vendor/golang.org/x/sys/unix github.com/ethereum/go-ethereum/vendor/golang.org/x/crypto/pbkdf2 github.com/ethereum/go-ethereum/params github.com/ethereum/go-ethereum/vendor/golang.org/x/crypto/scrypt github.com/ethereum/go-ethereum/vendor/gopkg.in/fatih/set.v0 github.com/ethereum/go-ethereum/cmd/internal/browser github.com/ethereum/go-ethereum/metrics github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/errors github.com/ethereum/go-ethereum/common/fdlimit github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/iterator github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/journal github.com/ethereum/go-ethereum/vendor/github.com/hashicorp/golang-lru/simplelru github.com/ethereum/go-ethereum/vendor/golang.org/x/net/context github.com/ethereum/go-ethereum/vendor/github.com/hashicorp/golang-lru github.com/ethereum/go-ethereum/vendor/golang.org/x/net/websocket github.com/ethereum/go-ethereum/vendor/github.com/edsrzf/mmap-go github.com/ethereum/go-ethereum/common/bitutil github.com/ethereum/go-ethereum/vendor/github.com/rs/xhandler github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/memdb github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb/table github.com/ethereum/go-ethereum/crypto/bn256 github.com/ethereum/go-ethereum/vendor/github.com/rs/cors github.com/ethereum/go-ethereum/vendor/golang.org/x/crypto/ripemd160 github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/httpu github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/scpd github.com/ethereum/go-ethereum/vendor/github.com/syndtr/goleveldb/leveldb github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/soap github.com/ethereum/go-ethereum/rpc github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/ssdp github.com/ethereum/go-ethereum/vendor/github.com/rjeczalik/notify github.com/ethereum/go-ethereum/vendor/github.com/elastic/gosigar github.com/ethereum/go-ethereum/vendor/golang.org/x/net/html/atom github.com/ethereum/go-ethereum/vendor/golang.org/x/net/html github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/internal/identifier github.com/ethereum/go-ethereum/vendor/golang.org/x/text/transform github.com/ethereum/go-ethereum/vendor/golang.org/x/text/internal/utf8internal github.com/ethereum/go-ethereum/vendor/golang.org/x/text/internal/tag github.com/ethereum/go-ethereum/vendor/golang.org/x/text/language github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding github.com/ethereum/go-ethereum/vendor/golang.org/x/text/runes github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/internal github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/charmap github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/japanese github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/korean github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/simplifiedchinese github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/traditionalchinese github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/unicode github.com/ethereum/go-ethereum/ethdb github.com/ethereum/go-ethereum/vendor/github.com/jackpal/go-nat-pmp github.com/ethereum/go-ethereum/p2p/netutil github.com/ethereum/go-ethereum/eth/tracers/internal/tracers github.com/ethereum/go-ethereum/vendor/gopkg.in/olebedev/go-duktape.v3 github.com/ethereum/go-ethereum/vendor/github.com/golang/protobuf/proto github.com/ethereum/go-ethereum/vendor/github.com/karalabe/hid github.com/ethereum/go-ethereum/log/term github.com/ethereum/go-ethereum/metrics/exp github.com/ethereum/go-ethereum/vendor/github.com/mattn/go-colorable github.com/ethereum/go-ethereum/vendor/gopkg.in/urfave/cli.v1 github.com/ethereum/go-ethereum/vendor/github.com/prometheus/prometheus/util/flock github.com/ethereum/go-ethereum/vendor/golang.org/x/text/encoding/htmlindex github.com/ethereum/go-ethereum/les/flowcontrol github.com/ethereum/go-ethereum/vendor/golang.org/x/sync/syncmap github.com/ethereum/go-ethereum/internal/jsre/deps github.com/ethereum/go-ethereum/vendor/golang.org/x/net/html/charset github.com/ethereum/go-ethereum/vendor/github.com/mattn/go-isatty github.com/ethereum/go-ethereum/vendor/github.com/fatih/color github.com/ethereum/go-ethereum/vendor/gopkg.in/sourcemap.v1/base64vlq github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp github.com/ethereum/go-ethereum/vendor/gopkg.in/sourcemap.v1 github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/token github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/dbg github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/file github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/dcps/internetgateway1 github.com/ethereum/go-ethereum/vendor/github.com/huin/goupnp/dcps/internetgateway2 github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/ast github.com/ethereum/go-ethereum/internal/debug github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/parser github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto/registry github.com/ethereum/go-ethereum/internal/web3ext github.com/ethereum/go-ethereum/vendor/github.com/peterh/liner github.com/ethereum/go-ethereum/vendor/github.com/maruel/panicparse/stack github.com/ethereum/go-ethereum/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor github.com/ethereum/go-ethereum/p2p/nat github.com/ethereum/go-ethereum/vendor/github.com/mattn/go-runewidth github.com/ethereum/go-ethereum/vendor/github.com/mitchellh/go-wordwrap github.com/ethereum/go-ethereum/vendor/github.com/naoina/go-stringutil github.com/ethereum/go-ethereum/vendor/github.com/naoina/toml/ast github.com/ethereum/go-ethereum/vendor/github.com/robertkrimen/otto github.com/ethereum/go-ethereum/accounts/usbwallet/internal/trezor github.com/ethereum/go-ethereum/vendor/github.com/nsf/termbox-go github.com/ethereum/go-ethereum/vendor/github.com/naoina/toml github.com/ethereum/go-ethereum/vendor/github.com/gizak/termui # github.com/ethereum/go-ethereum/vendor/gopkg.in/olebedev/go-duktape.v3 In file included from vendor/gopkg.in/olebedev/go-duktape.v3/api.go:7:0: vendor/gopkg.in/olebedev/go-duktape.v3/api.go: In function ‘_duk_error’: vendor/gopkg.in/olebedev/go-duktape.v3/duktape.h:510:127: warning: right-hand operand of comma expression has no effect [-Wunused-value] (duk_error_raw((ctx), (duk_errcode_t) (err_code), (const char *) (DUK_FILE_MACRO), (duk_int_t) (DUK_LINE_MACRO), __VA_ARGS__), (duk_ret_t) 0) ^ vendor/gopkg.in/olebedev/go-duktape.v3/api.go:153:2: note: in expansion of macro ‘duk_error’ duk_error(ctx, err_code, "%s", str); ^ github.com/ethereum/go-ethereum/internal/jsre github.com/ethereum/go-ethereum/crypto github.com/ethereum/go-ethereum/trie github.com/ethereum/go-ethereum/crypto/ecies github.com/ethereum/go-ethereum/p2p/discover github.com/ethereum/go-ethereum/p2p/discv5 github.com/ethereum/go-ethereum/core/types github.com/ethereum/go-ethereum/p2p github.com/ethereum/go-ethereum github.com/ethereum/go-ethereum/core/state github.com/ethereum/go-ethereum/core/bloombits github.com/ethereum/go-ethereum/core/vm github.com/ethereum/go-ethereum/accounts github.com/ethereum/go-ethereum/ethclient github.com/ethereum/go-ethereum/accounts/keystore github.com/ethereum/go-ethereum/accounts/usbwallet github.com/ethereum/go-ethereum/consensus github.com/ethereum/go-ethereum/consensus/misc github.com/ethereum/go-ethereum/dashboard github.com/ethereum/go-ethereum/whisper/whisperv5 github.com/ethereum/go-ethereum/consensus/clique github.com/ethereum/go-ethereum/consensus/ethash github.com/ethereum/go-ethereum/eth/fetcher github.com/ethereum/go-ethereum/node github.com/ethereum/go-ethereum/console github.com/ethereum/go-ethereum/core github.com/ethereum/go-ethereum/eth/downloader github.com/ethereum/go-ethereum/eth/filters github.com/ethereum/go-ethereum/light github.com/ethereum/go-ethereum/internal/ethapi github.com/ethereum/go-ethereum/miner github.com/ethereum/go-ethereum/eth/gasprice github.com/ethereum/go-ethereum/eth/tracers github.com/ethereum/go-ethereum/eth github.com/ethereum/go-ethereum/les github.com/ethereum/go-ethereum/ethstats github.com/ethereum/go-ethereum/cmd/utils github.com/ethereum/go-ethereum/cmd/geth Done building. Run "/home/ubuntu/go-ethereum/build/bin/geth" to launch geth. srv@local:~/go-ethereum$
2 thoughts on “Building from source an Ethereum node under Ubuntu 16 LTS”