2021년 12월 3일 금요일

Go Ethereum 구축

 # Go 컴파일러 설치

https://go.dev/doc/install 에 가서 설치 파일이 아닌 바로 시스템에 맞은 바이너리를 다운로드한다.

처음에 시스템의 파티션을 너무 작게 설정하는 바람에 사용자 계정의 루트에 설치해야 한다.

어짜피 나혼자 쓰는 시스템이니 이렇게 해 놓아도 무방하다.

$ rm -rf $HOME/daysleep/go && tar -C $HOME/daysleep -xzf go1.17.3.linux-amd64.tar.gz

 자 설치는 다 되었으니 시스템 경로에 go를 추가한다.

$HOME/.profile에 다음의 라인들을 추가한다.

if [ -d "$HOME/go/bin" ] ; then
    PATH="$HOME/go/bin:$PATH"
fi

이제 터미널을 열어서 설치와 설정이 제대로 되어 있는지 확인해 보자. 다음과 같이

$ go version

go version go1.17.3 linux/amd64
 

# 간단한 Go 언어 문법 살펴보기

 

# Go Ethereum 설치

 go 는 자체 빌드 절차를 가지고 있는 듯하다 그냥 보기엔 git이 통합되어져 있는 것 같다.

아무튼 이질적이라 거부감이 든다. 그래서 전통적인 git으로 땡겨와서 make로 설치하는 방법이 정신건강에 좋을 것 같다.

$ git clone https://github.com/ethereum/go-ethereum.git
$ cd go-ethereum
$ make geth

위와 같이 문제없이 수행되면 geth라는 실행파일이 go-ethereum/build/bin에 생성되고 시스템에서 사용할 수 있게 시스템 PATH에 추가해 주면 된다.

아직은 geth라는 것이 뭔지 모르겠지만, 시작은 geth로 시작해 보아야 겠다. 나머지 많은 프로그램 꾸러미들이 있는데 그걸 다 생성하려면 make all 하면 되지만 잠시 미루어 두기로 하자. 머리 아프다.

오 이런 $GOPATH를 요구한다. 이건 뭐하는 놈인지?

$ go env 하니깐 GOPATH="/home/daysleep/go" 이라고 나오네 아마도 go로  build 안해서 생기는 추가 요구사항인것 같다.

그럼 다시 $HOME/.profile의 go 설정에 추가해 주자 다음과 같이.

if [ -d "$HOME/go/bin" ] ; then
    PATH="$HOME/go/bin:$PATH"
    GOPATH="$HOME/go"
fi

멀쩡한 터미널 닫고 다시 열어서 반복해야 겠다. 오 아니다. 이걸로 해결이 안된다. 

역시 수작업은 문제가 있다. 설치한 go의 환경을 지우고 debain 패키지로 제공되는 gccgo-go를 설치해야 결과를 볼 수 있다.

$ apt install gccgo-go

그리고 다시 위의 설치를 다시 수행해 본다. 뭔지 모르지만 엄청 많은 패키지들을 git으로 땡겨오고 난리다. 그래도 안된다.

이제 잘란다.