首頁 > 軟體

在Ubuntu中安裝EOS

2020-06-16 16:44:26

一、EOS公鏈

2018年6月3日,Block.one宣布EOSIO 1.0正式發布。
EOS主網(eosforce.io)已於6月15日正式上線。

EOS是Block.One公司開發的一款超高效能的類作業系統區塊鏈,其設計目標是:

  • 支援大量使用者,可能是上億級別的使用者
  • 消除手續費(可以免費使用)
  • 超高效能(支援百萬級TPS)
  • 具備橫向和縱向效能擴充套件能力

專案的程式碼庫:https://github.com/EOSIO/
專案的wiki地址:https://github.com/EOSIO/eos/wiki

二、EOS團隊

EOS的創始團隊是Block.One公司
CEO:Brendan Blumer 一個持續的成功創業者2001年至今建立過多家成功的企業,2017年成立了BlockOne。
CTO:Dan Larimer 由於其在github上的名字是ByteMaster,所以江湖人稱BM,開發過BTS、Steemit這兩個經過長時間驗證的成功區塊鏈專案。
EOS官網:https://eos.io/
 BlockOne公司官網:http://www.block.one/
投資方:Inblockchain、Blockchain Capital、FenbushiVC等(來源於官網)

三、EOS代幣

市面上流通的EOS代幣最初是基於以太坊發行的ERC20代幣,代號為EOS,目前通過將以太坊token對映到EOS主網,可以兌換成主網的真正EOS Token。

四、EOS代幣如何增值?

跟其他Token不同,EOS代幣代表的是是EOS主網資源的擁有權,也就是說只要你持有部分EOS,那麼EOS主網的部分資源理論上就永遠屬於你,這也是為什麼EOS區塊鏈能做到免費給使用者提供服務的原因。EOS是一個為DApp而生的超高效能公鏈,越往後發展上面的應用也就會越多,當EOS網路上的應用越多時,EOS的主網資源就會越寶貴,這時候EOS代幣就會越值錢。
 目前EOS代幣的價格約55元人民幣左右,流通市值約365億人民幣。

五、常用資源

https://eosflare.io/ EOS區塊鏈瀏覽器(對應以太坊的https://etherscan.io/
https://block.cc/coin/eos 檢視區塊鏈資訊

前言

本文以eosio_build.sh官方指令碼的方式在Ubuntu 18.04 LTS Desktop版+VMWare10環境下安裝EOS最新版本(2018/07/01),根目錄為使用者家目錄~/,克隆完EOS對應的目錄為~/eos,下一篇將介紹以Docker的方式來安裝EOS(推薦學習下一篇)。

一、需要的軟硬體環境

1、軟體

以下為官方推薦的系統環境:

  • CentOS 7
  • Ubuntu 16.04 LTS (Ubuntu 16.10 推薦)
  • Ubuntu 18.04 LTS
  • Amazon 2017.09 或以上
  • Fedora 25或以上 (Fedora 27 推薦)
  • Mint 18
  • MacOS Darwin 10.12 或以上 (MacOS 10.13.x 推薦)

2、硬體

  • 8G記憶體(官方建議而已,實際上用不了這麼多,可以在編譯指令碼中修改繞過,4G驗證可行)
  • 20G硬碟空間

更多詳情參見EOS官方wiki:https://github.com/EOSIO/eos/wiki

二、下載EOS安裝包

1、克隆程式碼庫
$ cd ~
$ git clone https://github.com/EOSIO/eos --recursive #VPN新加坡線路,可以直接下載,不用設定CDN對映


【神坑1】如果出現以下提示:
ssh: Could not resolve hostname github.com: Temporary failure in name resolution
可能原因是沒有找到最近的github cdn伺服器。
 解決辦法:
sudo vim /etc/hosts
在檔案末尾加入一行:
192.30.253.113 github.com #香港線路

如果克隆程式碼時未帶--recursive引數或者子模組克隆時報錯,那麼可切換到專案路徑下面執行如下命令,更新子模組。
$ cd ~/eos
$ git submodule update --init --recursive

 

小提示:下載完成後,可以將~/eos資料夾打包備份,以便下次可以直接解壓編譯,節約時間。

三、開始編譯EOS

為了避免許可權不夠,導致中途執行出錯,我們在指令碼前面加上sudo。
$ cd ~/eos
$ sudo ./eosio_build.sh


【神坑2】如果出現如下提示:記憶體不足7G,
[sudo] simon 的密碼:

    Beginning build version: 1.2
    2018年 07月 01日 星期日 10:49:30 UTC
    User: root
    git head id: 90fefdd12a4797e47890910f11dd7b60f1435ed4
    Current branch: master

    ARCHITECTURE: Linux

    OS name: Ubuntu
    OS Version: 18.04
    CPU speed: 3292.429Mhz
    CPU cores:
    Physical Memory: 3933 Mgb
    Disk install: /dev/sda1
    Disk space total: 39G
    Disk space available: 29G
    Your system must have 7 or more Gigabytes of physical memory installed.
    Exiting now.


解決辦法:
修改記憶體限制方法:
 找到~/eos/scripts/eosio_build_ubuntu.sh(系統環境不同,指令碼檔名不同)
 開啟檔案,定位到27行if [ "${MEM_MEG}" -lt 7000 ]; then 數位修改成4000,即4G記憶體,安裝前在VMWare10中可以將記憶體設定成4G多一點,因為剛好4G仍然有可能報記憶體不足。

修改硬碟空間限制方法:
 開啟~/eos/eosio_build.sh,定位到52行:
DISK_MIN=20
單位:GB,一般不差硬碟空間,所以不建議修改。

【神坑3】MongoDB安裝失敗,可能原因是git沒有克隆成功
Checking MongoDB installation.

    Installing MongoDB 3.6.3.
  % Total    % Received % Xferd  Average Speed  Time    Time    Time  Current
                                Dload  Upload  Total  Spent    Left  Speed
  0    0    0    0    0    0      0      0 --:--:--  0:00:30 --:--:--    0
curl: (28) Operation timed out after 30002 milliseconds with 0 out of 0 bytes received
    Unable to download MongoDB at this time.

    Exiting now.


解決辦法:
 開啟~/eos/scripts/eosio_build_ubuntu.sh檔案,搜尋Unable to download MongoDB at this time,定位到錯誤提示行,依次將下列兩個安裝包手工下載至~/家目錄:
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.3.tgz
https://github.com/mongodb/mongo-c-driver/releases/download/1.9.3/mongo-c-driver-1.9.3.tar.gz


注釋掉208-213行,在213行後加入cp "${HOME}/mongodb-linux-x86_64-3.6.3.tgz" "${HOME}/opt/"
注釋掉282-291行,在291行後加入cp "${HOME}/mongo-c-driver-1.9.3.tar.gz" "${TEMP_DIR}/"
#注釋掉208-213行
#STATUS=$(curl -LO -w '%{http_code}' --connect-timeout 30 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.3.tgz)
        #if [ "${STATUS}" -ne 200 ]; then
        #  printf "tUnable to download MongoDB at this time.n"
        #  printf "ntExiting now.nn"
        #  exit 1;
        #fi
#增加一行
cp "${HOME}/mongodb-linux-x86_64-3.6.3.tgz" "${HOME}/opt/" #手工將檔案包下載下來拷貝到家目錄~/

#注釋掉282-291行
# STATUS=$(curl -LO -w '%{http_code}' --connect-timeout 30 https://github.com/mongodb/mongo-c-driver/releases/download/1.9.3/mongo-c-driver-1.9.3.tar.gz)
        # if [ "${STATUS}" -ne 200 ]; then
            # if ! rm -f "${TEMP_DIR}/mongo-c-driver-1.9.3.tar.gz"
            # then
                # printf "ntUnable to remove file %s/mongo-c-driver-1.9.3.tar.gz.n" "${TEMP_DIR}"
            # fi
            # printf "tUnable to download MongoDB C driver at this time.n"
            # printf "tExiting now.nn"
            # exit 1;
        # fi
#增加一行
cp "${HOME}/mongo-c-driver-1.9.3.tar.gz" "${TEMP_DIR}/" #手工將檔案包下載下來拷貝到家目錄~/


【神坑4】MongoDB C driver無法完成編譯
該程式為 x86_64-pc-linux-gnu 編譯
報告錯誤到 <bug-make@gnu.org>
    Error compiling MongoDB C driver.

    Exiting now.


解決辦法:
 開啟指令碼,定位到319行,或搜尋Error compiling MongoDB C driver.
經查發現if ! make -j"${JOBS}"中的JOBS值為空,原因是第7行CPU_CORE=$( lscpu | grep "^CPU(s)" | tr -s ' ' | cut -d -f2 || cut -d' ' -f2 )沒有獲取到CPU的個數(奇葩了),在第8行增加CPU_CORE=2即可。

【神坑5】llvm編譯器安裝包克隆失敗
Checking for LLVM with WASM support.
    Installing LLVM with WASM
正克隆到 'llvm'...
remote: Counting objects: 24803, done.
remote: Compressing objects: 100% (23960/23960), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: 過早的檔案結束符(EOF)
fatal: index-pack 失敗
    Unable to clone llvm repo @ https://github.com/llvm-mirror/llvm.git.

    Exiting now.

解決辦法:
 開啟~/eos/scripts/eosio_build_ubuntu.sh檔案,注釋掉455-472行,即從if ! mkdir "${TEMP_DIR}/llvm-compiler" 2>/dev/null到fi行。再執行如下命令:
mkdir -p /tmp/llvm-compiler
cd /tmp/llvm-compiler
git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/llvm.git


擴充套件閱讀:Ubuntu編譯安裝llvm+clang

在經過190分鐘左右(去除中間處理坑的時間,網路穩定的情況下),終於編譯完成,此次沒有踩到LLVM相關的坑。
 編譯成功後顯示:
    _______  _______  _______ _________ _______
    (  ____ (  ___  )(  ____ __  __/(  ___  )
    | (    /| (  ) || (    /  ) (  | (  ) |
    | (__    | |  | || (_____    | |  | |  | |
    |  __)  | |  | |(_____  )  | |  | |  | |
    | (      | |  | |      ) |  | |  | |  | |
    | (____/| (___) |/____) |___) (___| (___) |
    (_______/(_______)_______)_______/(_______)

    哈哈,恭喜Simon,終於通關了~~~
    EOSIO has been successfully built. 01:10:31

    To verify your installation run the following commands:

    export PATH=${HOME}/opt/mongodb/bin:$PATH
    /home/simon/opt/mongodb/bin/mongod -f /home/simon/opt/mongodb/mongod.conf & cd /home/simon/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


四、安裝EOS

編譯完成後,在EOSIO圖形下可以看到這幾個命令,執行完後,EOS即可安裝成功!
cd ~/eos/build
sudo make install

export PATH=${HOME}/opt/mongodb/bin:$PATH
/home/simon/opt/mongodb/bin/mongod -f /home/simon/opt/mongodb/mongod.conf & cd /home/simon/eos/build; make test

五、啟動單節點測試網路
nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin

六、測試

在瀏覽器位址列存取 http://localhost:8888/v1/chain/get_info

七、附編譯EOS依賴列表
1. clang-4.0
2. lldb-4.0
3. libclang-4.0-dev
4. cmake
5. make
6. automake
7. libbz2-dev
8. libssl-dev
9. libgmp3-dev
10. autotools-dev
11. build-essential
12. libicu-dev
13. python2.7-dev
14. python3-dev
15. autoconf
16. libtool
17. curl
18. zlib1g-dev
19. doxygen
20. graphviz

安裝前也可以先裝依賴,執行如下命令:
sudo apt-get install clang-4.0 lldb-4.0 libclang-4.0-dev cmake make automake libbz2-dev libssl-dev libgmp3-dev autotools-dev build-essential libicu-dev python2.7-dev python3-dev autoconf libtool zlib1g-dev doxygen graphviz


IT145.com E-mail:sddin#qq.com