WindowsでLinux / MacOSのようなイーサリアム開発者セットアップを作成できますか?:Linux用のWindowsサブシステムをセットアップするためのガイド

ブログ1NewsDevelopersEnterpriseBlockchain ExplainedEvents and ConferencesPressニュースレター

ニュースレターを購読する.

電子メールアドレス

私たちはあなたのプライバシーを尊重します

HomeBlogDevelopers

WindowsでLinux / MacOSのようなイーサリアム開発者セットアップを作成できますか?:Linux用のWindowsサブシステムをセットアップするためのガイド

WSL2を利用してEthereumスマートコントラクト開発環境とワークフローをセットアップする方法のステップバイステップの説明byThomas Hay 2020年11月18日投稿日:2020年11月18日

ブロックチェーン

ConsenSys Academyでは、開発者プログラムの全員に、最初にVirtualBoxとUbuntuをダウンロードするように依頼しました。私たちの目標は、すべての学生がローカル開発環境をセットアップするときに一貫したユーザーエクスペリエンスを提供できるようにすることです。ネイティブオペレーティングシステム(OS)に関係なく、誰もがUbuntuを持っていて、同じソフトウェアを実行できます。これは理論的には良い考えです。実際には、これを機能させるために、生徒と協力して、マシンで使用可能なメモリに関連する問題に対処してきました。 MacOSはUnixベースのシステムであるため、ほとんどの場合、MacユーザーはUbuntuをダウンロードせずに続行します。 Windowsユーザーは、ネイティブOSで推奨されている手順に従って開発ツールを使用できなかったため、不満を感じることがよくあります。Windowsですべてを実行したい場合は、Linuxの場合と同様の一連の手順に従う必要がありました。およびMacOSユーザー. 

私たちは、Windows Subsystem for Linux(WSL)の開発を監視してきました。 WSL 2のリリースは、仮想ボックスをダウンロードする代わりにWSL2を使用できるかどうかについてのBootcamp学生の現在のコホートからの質問と一致しました。私たちが推奨するEthereumツールを使用しながら、WSL2を使用してWindowsユーザーにLinuxのような開発者エクスペリエンスを提供する方法に焦点を当てるのは過去のことだと感じました。この記事では、WSL 2を使用してEthereum開発者環境をセットアップする際に遭遇したいくつかの特異性を共有します(利用するために何をしなければならないかなど) トリュフ コマンド). 

私たちのエコシステムには多くの役立つ記事やチュートリアルがありますが、ユーザーがLinuxまたはMacOSをインストールしていると想定して作成します。誰もがイーサリアムにアクセスできるようにしたいので、Windowsを使用する開発者がスマートコントラクトの開発について公開された記事の大部分をフォローできるように開発環境をセットアップするための現在最も簡単な方法であると私が信じていることを共有したいと思います.

以下のチュートリアルにジャンプするか、LinuxおよびMacOSユーザーが従来イーサリアムの開発者ツールへのより簡単な道を持っていた理由についての短い歴史にスキップすることができます.

WSL2を使用してEthereum開発者環境をセットアップする

ステップ1:WSL2をダウンロードする

TLDR; Windowsは、WSL2をマシンにインストールする方法の説明を順を追って説明します。 「「WindowsサブシステムforLinuxインストールガイドforWindows 10」は、タイトルどおりであり、トラブルシューティングのヒントを提供するため、包括的な記事です。また、 WSL2の8:24:Linux用のWindowsサブシステムでコードを高速化! |タブとスペース ビデオは、コマンドライン(またはPowerShell)ではなくグラフィカルユーザーインターフェイス(GUI)を介してWSLを有効にする方法に関する追加のコンテキストを提供します。コンピュータを複数回再起動する必要がある場合があります。また、マシンのハードウェアによっては、時間がかかる場合があります。最悪のシナリオとして半日を取っておき、これから行うすべてのインストールに対する期待を管理する準備ができています。.

のステップ6で 前述の記事, インストールすることを選択しました Ubuntu 20.04 LTS, リストされている他のディストリビューションと比べて、このディストリビューションに最も満足していたからです。提供されているWindowsストアへのリンクからUbuntuをインストールしようとしましたが、Webブラウザーからアクセスしましたが、Windowsマシンから、組み込みのMicrosoftストアアプリケーションを使用してインストールするように求められました。.

私もインストールしました Windowsターミナル, これはオプションでした。私は、ステップ3で見られるような多くの間違いを犯した後、これを行いました。「自分の道を進む」ことを続ける代わりに、Microsoftが私に言ったことに従うことにしました。 Windowsターミナルの利点は、ターミナルウィンドウで、さまざまなオペレーティングシステムの複数のターミナルタブを開くことができることです。.

ステップ2:VSCodeと一緒にWSL2を実行する

最も使いやすいIDEを使用することをお勧めします。個人的にはVSCodeを使用しているので、WSL 2と一緒にVSCodeを使用する方法を知りたいと思いました。すでにVSCodeがインストールされているので、インストールしていない場合は、先に進んでインストールしてください。それから、Ubuntuと一緒に実行するために、私はで答えを見つけました マイクロソフトによって作成されたWSLのビデオの5:31.

コマンドの使用:

コード. 

VSCodeが自動的にダウンロード、インストール、起動されましたが、スマートコントラクトの作成に使用する拡張機能が自動的にインストールされないことがわかりました.

WSL:Ubuntuにインストールされている緑色のテキストをクリックするだけです。 VSCodeはまた、VSCode内のターミナルを介していくつかの追加ライブラリをインストールするように促し、Linuxディストリビューション(Ubuntu 20.04 LTS)のパスワードを入力するように求めました。

と呼ばれるより長いチュートリアルがあります Visual Studio Code for Windows Subsystem forLinuxの使用を開始します VSCodeをまだインストールしていない場合は、より長いウォークスルーが提供されます。この時点から、VSCodeのターミナル内で次のすべての手順を実行しました。VSCodeはbashシェルとして設定されています。.

ステップ3.nvm、Node、npmをインストールします

Truffleなどの開発者ツールをインストールする前に、nvm、Node、およびnpmをインストールする必要があります。記事を直接参照してください WSL2を使用してNodeJS開発をセットアップします.  

私が最初に遭遇した特異性は、ドキュメントにnvmの最新バージョンがリストされていないことでした。したがって、にアクセスすることをお勧めします。 nvmGitHubリポジトリ 現在のリリースを確認します。 nvmをインストールした後、コマンドコマンド-v nvmを実行してターミナルにインストールされていることを確認しても、何も起こりませんでした(nvmが返されるはずです)。ターミナルを閉じて再度開いてから、コマンドを再実行することをお勧めします。私がこれをしたとき、私はnvmを得ました.

次に、「nvm install node –lts」と入力して、LTS(長期安定版)リリースを選択しました。 nodeとnpmの両方がインストールされていることを確認した後(node –version、npm –version)。次のステップに移りました. 

次のことはしないでください

これは、ドキュメントを読んでいないことの明確な例です(常にドキュメントを読んでください)。上記で詳しく説明した手順は、最初にドキュメントを最後まで読んでいないという道をたどった後に行いました。時系列的に、私は最初にVSCodeでターミナルを開き、入力しました

ノード-v

インストールしたかどうかを確認します。ノードをインストールしていなかったため、次のようになりました。

提案されたものを入力しました

sudo apt install nodejs

Linuxディストリビューション(Ubuntu 20.04 LTS)のパスワードの入力を求められました。次に入力しました

ノード-v

返されたバージョンは10.19.0でした。 Node.jsのWebサイトを調べたところ、推奨される安定版リリースは14.15.0LTSでした。私がしたかったことではありません。さらに、私が入力したとき

npm -v

NPMがインストールされているかどうかを確認するために、不正なインタプリタが返されました。そのようなファイルやディレクトリはありません。何が悪かったのか?記事を読んで始めたばかりなら、次のように見えたでしょう。

「Ubuntuのapt-getコマンドでインストールできるノードのバージョンは現在古くなっています」

この道を進んだことに気付いた場合は、Nodejsをアンインストールする必要があります– ここにいくつかの役立つ手順があります, ただし、コマンドを使用します

sudoapt-getパージnodejs

そうするためにターミナル内で.

Node.js Webサイトに直接移動してダウンロードしてインストールすると、Ubuntuでは使用できないWindowsディストリビューションがインストールされます。したがって、最初に上記のドキュメントを読み、単に「ジャンプイン」しようとしないでください。.

私の過ちから学び、時間を節約してください。ドキュメントを読む.

ステップ4.TruffleSuiteをインストールします

この時点で、ConsenSys開発者ポータルで説明されている手順に従うことができます。.

truffle-config.jsファイルで開発ネットワークのコメントを解除してください(以下を参照)。

そうしないと、次のエラーが発生します。

待ってください…すべてを設定しましたが、エラーが発生しました。立ち去りました。実行しているので、Linuxディストリビューションのパスワードを忘れてしまいました。!!!

ああ、そうです。私もこれをしました。記事を見つけました新しいLinuxディストリビューションのユーザーアカウントとパスワードを作成します” 非常に役立ちます. 

Ubuntuを実行すると、Windowsにインストールしたものが表示されません。何が!!

UbuntuはWindowsとは異なるオペレーティングシステムであることを忘れないでください。 Windowsにインストールされたプログラムは、そのように構成された特定のプログラムでない限り、Ubuntuディストリビューションを即座に実行することは期待されていません。その逆も同様です。たとえば、Windowsターミナルがその例です。安全のために、一方にインストールしたものはもう一方では機能しないと想定します.

次は何?

次に、ステップ2:スマートコントラクトを作成し、ステップ3:これらのチュートリアルが提供するのと同じコマンドを使用して分散型アプリケーションを起動します。.

オペレーティングシステムの簡単な歴史とイーサリアム開発者のためのコンテキスト

WindowsユーザーがEthereum開発者ツールの使用経験がLinuxまたはMacOSを使用するユーザーと異なるのはなぜですか? LinuxとMacOSは同じオペレーティングシステムではなく、Linuxディストリビューションは無数にあります。さまざまなオペレーティングシステムを処理するには、複数のツールセットが必要になるようです。この質問に答えるには、簡単な歴史のレッスンが必要です。クラッシュコースのビデオを見ることをお勧めします オペレーティングシステム:クラッシュコースコンピュータサイエンス#18 いくつかの簡潔な背景情報について. 

私たちの話はUnixで取り上げられます。後に 1969年のUnixのリリース, このオペレーティングシステムは、コンピューティングコミュニティ内ですぐに確立されました. コンピューティングは、1970年代には研究、大企業、または愛好家/ハッカーのコミュニティによって非常に支配されており、今日私たちが慣れているグラフィカルユーザーインターフェイスはありませんでした。. 現時点では、Unixはターミナルベースであったため、すべてはコマンドラインと呼ばれるものを介して行われました。.

1980年代は、マイクロソフトとアップルがパーソナルコンピューティングの対象者に人気のあるオペレーティングシステムをリリースしたのと同時期でした。これらのオペレーティングシステムがもたらした進歩は、ハードウェアとメモリのコストの削減とともに、個人用のコンピュータを購入できる学界やビジネス界以外の人々の数を増やすのに役立ちました。. マイクロソフトは1981年にマイクロソフトディスクオペレーティングシステム(MS-DOS)をリリースしました. いつ Microsoft Windowsは1985年にリリースされ、このグラフィカルユーザーインターフェイスベースのオペレーティングシステムは、MS-DOSコードベースの上に構築されました。, エンドユーザーがコンピューターにアクセスしやすくする.

Appleは実際にAppleIIで複数のOSの起動を許可しました。AppleIIは1970年代後半に最初に販売を開始しました。. しかし、Microsoftより前のAppleは、パーソナルコンピュータの採用を促進するためにGUIがいかに重要であるかを認識していました。. Appleの最初のGUIベースのOSであるMacintoshオペレーティングシステム(現在はClassic MacOSと呼ばれています)は、 アップルリサ(LisaOS), 1983年にリリースされたコンピューター. リサのオペレーティングシステムは、ゼロックスのパロアルト研究所(PARC)で行われた作業に大きく影響を受けました。, XeroxPARCチームの多くはAppleで働いていました. 1984年にはるかに人気のあるAppleMacintoshがリリースされたとき、ClassicMacOSがその上で実行されていました。. Macintoshの古い写真やビデオを見ると、ClassicMacOSが今日のAppleコンピュータで実行されているMacOSにどれほど馴染みがあるかに驚いていました。.

Unixは、コンピューティングの世界で支配的なオペレーティングシステムであり、1980年代にはパーソナルコンピューティングの分野以外でも人気がありました。 1980年代には、3つの異なるコードベース上に構築された3つの異なるオペレーティングシステムがあったことを意味しました。これらのオペレーティングシステム間でプログラムを使用することは、ネイティブでは発生しません。 OSで動作するようにプログラムを変更する必要がありました。 AppleとMicrosoftのGUIベースのオペレーティングシステムは、大衆がコンピューティングにアクセスできるようにしました。開発者にとって、コンピューター上で動作するアプリケーションを構築するには、オペレーティングシステムを知っている必要があります(それでも動作します)。しかし、Appleは、Unixコマンドに精通している開発者がMacOSまたはUnixベースのオペレーティングシステムを参入障壁の少ないものとして簡単に使用できるようにする選択を行います。.

Appleはに向けて動き始めました UnixベースのA / UXがリリースされた1988年以降のUnixベースのオペレーティングシステム. パラレルトラック上, NeXTは、1985年にAppleを離れたときにSteve Jobsによって共同設立され、NeXTSTEPと呼ばれるUnixベースのOSを作成していました。. Appleは1996年にNeXTを購入し、MacOSXとなる知的財産を取得しました。. 要約すると、Appleの共同創設者は会社を辞め、コンピューターとオペレーティングシステムを構築するために別のコンピューター会社を共同設立しました。その後、彼は最初に共同設立した会社に買収され、その後CEOになり、彼の新しい会社であり、そのソフトウェアプロジェクトは、私が現在Appleコンピューターで実行しているMacOSの基盤となるように構築されました。 WalterIssacsonによるSteveJobsには、Oracleの共同創設者であるLarry Ellisonが、ハワイで休暇中にSteveJobsと会話したことについての引用があります。.

「あなたはラリーを知っています、私はあなたがそれを買わなくてもアップルに戻ってそれをコントロールする方法を見つけたと思います」とジョブズは海岸を歩きながら言った。エリソン氏は、「彼は、アップル社にNeXTを買収させるという彼の戦略を説明しました。そうすれば、彼は取締役会に参加し、CEOになることから一歩離れることになります。」

アイザクソン、ウォルター. スティーブ・ジョブズ. ニューヨーク ;トロント:サイモン & シュスター、2011年。p.300

これがMacOSがUnixベースのオペレーティングシステムになり、MacOSの端末でUnixコマンドを実行できるようになった理由です。.

WindowsはUnixライクにはなりませんでした。 Windows95 / 98の大成功の後, Windowsは、NTからOSを構築することに移行しました(頭字語NTはもはや何の意味もありませんが、NTの選択には多くの理論と歴史があります。Microsoftの歴史に興味があるなら、うさぎの穴を掘り下げるのは楽しいことです。)。 Windows 2000以降、MicrosoftはDOSへの依存を非推奨にしました(WindowsXPがリリースされたときにビルゲイツがDOSをオフにするこの信じられないほどのビデオにつながる)。 Windowsは、Windows 10を含む後続のすべてのリリースで、引き続きNTをベースにしています。.

AppleとMicrosoftの間で、3番目の競合他社が出現する. Linuxは、1991年にLinusTorvaldsによって開発およびリリースされました。. これはUnixライクなオペレーティングシステムであり、無料で簡単にカスタマイズできるため、AppleやMicrosoftに縛られたくない開発者コミュニティにすぐに採用されました。 Linuxは引き続き人気を博し、さまざまなコンピューティング環境で使用されていることがわかりました。たとえば、モバイルオペレーティングシステムであるAndroidはLinux上に構築されており、最も人気のあるスマートフォンオペレーティングシステムです。 LinuxはUnixシェルコマンドも維持していました。 Linuxの詳細については, Linux、第3版の実行 包括的なリソースです.

Unixをベースにしているということは、MacOSターミナルとLinuxターミナルで記述されたコマンドは、どちらもbashシェル(またはzshなどの派生物)を使用しているため、構文的に同じであることを意味します。 Windowsユーザーは、bashシェル用に作成されたチュートリアルに表示されるコマンドをWindowsPowerShellまたはCmdで機能するように翻訳する必要があることがよくあります。 LinuxまたはMacOSユーザーは、コマンドを実行するだけです。開発者はターミナルで多くの時間を費やします。これは、nvm、Node、npm、TruffleなどのEthereum(および他の多くの言語)用の特定の開発者ツールをインストールして使用するために、Windowsユーザー向けに異なる一連の手順が必要であることを意味します. 

その結果、LinuxとMacOSの間の互換性が向上します。したがって、LinuxディストリビューションであるUbuntuターミナルで使用されるコマンドの多くは、MacOSターミナルでも(大部分)交換可能に使用できます。 Windowsは過去にUnixベースのOSに進出しましたが、2016年にWindows 10向けにWSLがリリースされたのは、Windowsユーザーが仮想マシンなしでWindowsを同時に使用しながらLinuxカーネルを使用できるのは初めてでした。 WSL 2は、Windows内で実行される軽量の仮想マシンを作成しました。つまり、開発者は、仮想ボックスのダウンロードやVMWareを使用したUbuntuのインストールに関連するメモリとストレージの問題に対処する必要がなくなりました。.

なぜこれがイーサリアム開発者に影響を与えるのですか?イーサリアムのジェネシスブロックは2015年7月30日に発生し、イーサリアムの共同創設者でありConsenSys Joe Lubinの創設者によると、開発のほとんどはUbuntuとMacOS Xで行われていました。したがって、元のツールの多くがうまく機能したことは驚くべきことではありません。 Unixライクなオペレーティングシステムで。 Windows専用に開発されたツールがありますが、多くの場合、開発者はUnixライクな端末を使用してソフトウェアをインストールし、コマンドを実行できる方が優れています。. 

マイクロソフトはWSL2をリリースするための作業を開始し、コミュニティ内の多くの人が2018年後半からLinuxディストリビューションをインストールするためにWSL2を使用しているところまで改善しました。 Windowsを使用している場合は、dAppを構築するときに、わずかに変更された一連の手順に従う必要がなくなります。 Windowsユーザーは、LinuxまたはMac用のイーサリアムチュートリアルに従うことができるようになりました.

エイブリー・アーウィンが私に勧めた非常に面白い読み物は、ニール・スティーブンソンの 「最初はコマンドラインでした」, この短い歴史で説明されている期間中のオペレーティングシステムに関する彼の個人的な経験に関するエッセイ/本.

結論

このチュートリアルと簡単な履歴により、Windowsユーザーは、WSL 2、Ubuntu、VSCode、npx、Node、npm、およびTruffleを使用して開発環境をセットアップする方法についての洞察を得ることができます。また、これを実行する方法と理由についても少し説明します。あなたの経験に基づいたコメントや役立つヒントがあれば、に送ってください [メールで保護] だから私はこの記事を更新し、あなたの貢献を信用することができます.

Onyebuchi Valentine Ahiwe、Clemens Wan、Anthony Albertorio、Eli Geschwind、Nick Nelson、そしてこのチュートリアルと歴史についてのレビューとコメントを寄せてくれたより親切な友人に特に感謝します。コメントありがとうございます.

DevelopersSmart ContractsWindowsNewsletter最新のイーサリアムニュース、エンタープライズソリューション、開発者リソースなどについては、ニュースレターを購読してください。電子メールアドレス