はじめに
Docker上にTruffle環境を構築します。
Ganacheと連携させるとコントラクトの履歴やStorageの中身を見ることが出来るようになるので、同じ環境に作成していきたいと思います。
Docker上にGanache環境を構築する方法はこちら
バージョン
※執筆時点の筆者の環境です
・Docker: 20.10.8
・Ubuntu: 20.04
・Ganache: 2.5.4
・Truffle: 5.4.9
・Node.js: 14.17.4
・npm: 6.14.14
手順
1.Truffleのインストール
※Ganacheとの連携まで載せたかったですが、ボリュームが微妙なので、続きは次回の記事にて。
1.Truffleのインストール
前回Ganacheの環境を構築した際はリモートデスクトップでGUIにて操作していましたが、今回はターミナルからアクセスします。
Gancahe環境のコンテナを起動
※起動済みの場合は飛ばしてください。
※-i
オプション付与で、起動と同時にターミナルに入ります。
docker start -i コンテナ名
Node.jsをインストール
※ここは割愛させていただきますが、私はnvmをインストールして上記バージョンのNode.jsを入れました。
Truffleのインストール
公式の手順に従い、インストールしていきます。
といってもnpm install
するくらいですが。
npm install -g truffle
公式にも下記記載がありますが、NodeJSのバージョンが古いとインストールできないので、気を付けてください。
NodeJS v8.9.4 or later
インストールが終わるまでには少し時間がかかります。
しばらくすると、、、
> node-gyp-build
sh: 1: node-gyp-build: Permission denied
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.3.2 (node_modules/truffle/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/truffle/node_modules/watchpack-chokidar2/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules/truffle/node_modules/mocha/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: iso-constants@0.1.2 (node_modules/truffle/node_modules/iso-constants):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: iso-constants@0.1.2 install: `node build.js > index.browser.js`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: spawn ENOENT
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! bufferutil@4.0.3 install: `node-gyp-build`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the bufferutil@4.0.3 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2021-09-03T14_06_42_625Z-debug.log
見事にエラーがでました。。。
本エラーに関しては下記記事にまとめさせていただきました。
※ちょっと理解が怪しいところもありますが、詳細はこちらを参照してください。
Truffleのインストールに失敗する
簡単に言うと、rootユーザーでnode-gyp-buildやっちゃだめよ。
rootでやるなら許可してあげてね。って感じです。
ということで、下記コマンドでrootユーザーを許可してあげます。
npm config set unsafe-perm true
再度npm install -g truffle
を叩くと、無事Truffleがインストールされると思います。
バージョンを確認してみて、ひとまず終了です。
# truffle --version
Truffle v5.4.9 - a development framework for Ethereum
おわりに
筆者はLinuxを普段触らないため、rootの権限周りで結構詰まりましたが、
解決すればすんなりインストールできるかと思います!
次回はコントラクトの作成やGanacheとの連携部分を書けたらなと思います。
以上ですー。