EOS Story #1 — 개발 환경 구축

EOSIO — https://github.com/EOSIO/eos

글을 작성 중인 현 시점을 기준으로, EOS 버전은 v1.2.4에 해당합니다. 메인넷 출시 이후의 꾸준한 업데이트를 통해 많은 발전을 해왔으리라-.

늦은 감이 없잖아 있지만, 지금이면 충분히 개발을 통해 다양한 부분들을 살펴보기에 부족하지 않을 것 같다는 생각이 들어 이렇게 EOS 이야기 시리즈를 연재하게 되었습니다.

물론, 이 글을 통해 EOS 개발을 시작하고자 하는 모든 독자 분들께 조금이나마 첫 발을 내딛는데 있어 작은 보탬이 되고자 하며, 이 글이 정말 도움이 된다면(혹은 되었다면) 더할 나위 없을 것입니다.

#1 — 시스템 요구 사항

EOS 공식 페이지에 소개된 시스템 요구 사항은 다음과 같습니다.

  • Amazon 2017.09 and higher
  • Centos 7
  • Fedora 25 and higher (Fedora 27 recommended)
  • Mint 18
  • Ubuntu 16.04 (Ubuntu 16.10 recommended)
  • Ubuntu 18.04 LTS
  • MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended)

** 모든 시스템은 8GB 이상의 RAM 및 20 GB 이상의 저장 공간이 필요합니다.

아쉽게도 윈도우 환경에서의 개발은 Hyper-V 혹은 Windows for Linux Container 혹은 Docker를 사용해 앞서 언급한 개발 환경을 갖춰주어야만 합니다. 참고로 이 글에서는 MacOS 및 Ubuntu 18.04 LTS 버전에서의 개발 환경 구축 방법을 다룰 것입니다.

#2 — 필수 프로그램 설치

개발에 앞서, 필수 프로그램들을 아래의 설명에 따라 설치합니다.

Ubuntu 16.04 LTS and higher

# Install Git (없는 경우 설치)
#
$ apt-get install git

# Install Linuxbrew
#
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
# Settings
#
$ test -d ~/.linuxbrew && PATH="$HOME/.linuxbrew/bin:$HOME/.linuxbrew/sbin:$PATH"
$ test -d /home/linuxbrew/.linuxbrew && PATH="/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:$PATH"
$ test -r ~/.bash_profile && echo "export PATH='$(brew --prefix)/bin:$(brew --prefix)/sbin'":'"$PATH"' >>~/.bash_profile
$ echo "export PATH='$(brew --prefix)/bin:$(brew --prefix)/sbin'":'"$PATH"' >>~/.profile
# Test brew
#
$ brew install hello

MacOS 10.12 and higher

# Install Homebrew
#
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# Test brew
#
$ brew install hello

MacOS의 경우, XCode 개발 도구가 설치되어 있지 않다면 설치할 것인지 물어볼텐데 관련 도구를 모두 설치해주도록 합니다.

#3 — EOSIO 빌드

이하는 Ubuntu 16.04 LTS and higher, MacOS 10.12 and higher 공통이다.

# 1. Git Clone EOSIO
#
EOSIO 빌드를 위해 git clone 명령어를 통해 sub module을 통째로 가져온다.
$ cd ~
$ git clone https://github.com/EOSIO/eos --recursive
# 2. Project Settings
# git checkout v1.2.4의 v1.2.4는 가장 최근에 release된 버전으로 입력한다.
$ cd ./eos
$ git checkout v1.2.4
$ git submodule update --init --recursive
# 3. EOSIO Build
# EOSIO를 빌드한다. 컴퓨터 사양에 따라 15분 ~ 2시간 정도 소요된다.
$ ./eosio_build.sh

빌드 시, 다음과 같은 오류가 나는 경우 해결해주도록 합니다.

# Ubuntu Error
# llvm@4 관련 오류가 나는 경우 다음 커맨드를 통해 해결한 후 3번을 다시 시도한다.
$ brew install llvm@4
$ export LLVM_DIR=/usr/local/Cellar/llvm\@4/4.0.1/lib/cmake
# MacOS Error
# gettext 관련 오류가 나는 경우 다음 커맨드를 통해 해결한 후 3번을 다시 시도한다.
$ brew unlink gettext && brew link gettext --force
$ export PATH="/usr/local/opt/gettext/bin:$PATH"

빌드가 완료되면 다음과 같은 문구가 나옵니다.

[100%] Linking CXX executable unit_test
[100%] Built target unit_test
 _______  _______  _______ _________ _______
( ____ \( ___ )( ____ \\__ __/( ___ )
| ( \/| ( ) || ( \/ ) ( | ( ) |
| (__ | | | || (_____ | | | | | |
| __) | | | |(_____ ) | | | | | |
| ( | | | | ) | | | | | | |
| (____/\| (___) |/\____) |___) (___| (___) |
(_______/(_______)\_______)\_______/(_______)
EOSIO has been successfully built. XX:XX:XX
To verify your installation run the following commands:
/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &
cd ~/eos/build; make test
For more information:
EOSIO website: https://eos.io
EOSIO Telegram channel @ https://t.me/EOSProject
EOSIO resources: https://eos.io/resources/
EOSIO Stack Exchange: https://eosio.stackexchange.com
EOSIO wiki: https://github.com/EOSIO/eos/wiki

#4 — EOSIO 빌드 테스트

위 단계까지 작업을 완료한 경우, 다음의 문구를 통해 빌드 테스트를 진행할 수 있습니다. v1.2.4를 기준으로 46단계의 테스트가 이루어지며 ALL PASS가 나와야 합니다.

# EOSIO Build Test
#
$ /usr/local/bin/mongod -f /usr/local/etc/mongod.conf &
cd ~/eos/build; make test
Running tests...
Test project ~/eos/build
Start  1: test_cypher_suites
1/46
Test #1: test_cypher_suites ................... Passed 0.04 sec
Start  2: validate_simple.token_abi
2/46
Test #2: validate_simple.token_abi ............ Passed 0.08 sec
...
Start 35: validate_dirty_db_test
35/46
Test #35: validate_dirty_db_test ............... Passed 4.42 sec
...
100% tests passed, 0 tests failed out of 46

만일, 100%가 나오지 않은 경우, 첫 단계로 돌아가 다시 시도해보시는 것을 권장합니다. 그래도 지속적인 오류가 나온다면, 기분은 찝찝하지만 큰 문제는 되지 않으므로 다음 단계로 넘어가도록 합니다.

#5 — EOSIO 설치

# EOSIO Install
# 빌드 완료한 EOSIO 프로젝트를 설치한다.
$ cd ./build
$ sudo make install

설치가 완료된 후에 nodeos, cleos, keosd를 실행하려 하면 오류를 내뱉을텐데, 그 이유는 EOS v1.1.0 이상 부터는 위 파일들이 /usr/local/eosio/bin 경로에 설치되는 탓에 터미널 프로그램이 해당 파일들을 찾지 못하기 때문입니다.

따라서 다음과 같은 작업을 통해 eosio 관련 프로그램을 터미널에서 손쉽게 호출할 수 있도록 환경변수를 등록해주도록 합니다.

# PATH Settings
# 환경변수를 설정한다.
$ cd ~
# ~/.bash_profile이 없는 경우에만 아래 명령어를 실행한다.
$ touch ./.bash_profile
# vi를 통해 ./.bash_profile을 수정한다.
$ vi ./.bash_profile
# 해당 라인을 ./.bash_profile에 추가한 후, esc -> :wq 를 통해 작업을 빠져나온다.
export PATH="/usr/local/eos/bin:$PATH"
# 수정 내용을 반영한다.
$ source ./.bash_profile

모든 설정을 완료했습니다. 이제 cleos를 커맨드 아무 곳에서나 입력한 후 다음과 같은 내용이 나오는지 확인해줍니다.

$ cleos
ERROR: RequiredError: Subcommand required
Command Line Interface to EOSIO Client
Usage: cleos [OPTIONS] SUBCOMMAND
Options:
...
Subcommands:
...

#end — 마무리하며

Ubuntu, MacOS 에서 모두 빌드를 해봤었습니다만, Ubuntu 쪽에서 사용했던 명령어가 온전히 기억나지 않는 탓에 우선은 기억 나는대로 글을 작성하게 되었습니다. 때문에 오류가 발생할 수 있으므로, 잘못된 부분을 덧글로 남겨주시면 내용에 반영하도록 하겠습니다.

다음 글에서는 nodeos, cleos, keosd 사이의 관계를 살펴보고 Key, Wallet, Account 생성을 해보는 시간을 갖도록 하겠습니다.

감사합니다.

# 다음 글: EOS Story #2 — Key, Wallet, Account 생성

# 출처 및 참고 문서

Like what you read? Give C.R.S. a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.