新闻开发人员企业区块链解释事件和会议新闻时事通讯
订阅我们的新闻.
电子邮件地址
我们尊重您的隐私
主页博客开发人员
我可以在Windows上创建类似Linux / MacOS的以太坊开发人员安装程序吗::为Linux设置Windows子系统的指南
关于如何利用WSL 2设置以太坊智能合约开发环境和工作流程的分步说明,作者Thomas Hay,2020年11月18日,发布于2020年11月18日
在ConsenSys学院,我们要求开发人员计划中的每个人从一开始就下载Virtual Box和Ubuntu。我们的目标是在设置本地开发环境时,每个学生都可以拥有一致的用户体验。无论使用本机操作系统(OS),每个人都将拥有Ubuntu,并能够运行相同的软件。从理论上讲,这是一个好主意。在实践中,我们与学生合作来处理与他们的计算机上的可用内存有关的问题,以使其正常工作。由于MacOS是基于Unix的系统,因此Mac用户几乎总是可以继续下载而不下载Ubuntu。 Windows用户通常会感到沮丧,因为他们无法按照我们在本机OS上建议的说明使用开发工具,并且如果他们想在Windows上运行所有内容,则必须遵循一套与Linux并行的说明。和MacOS用户.
我们一直在监视Windows Linux子系统(WSL)的开发。 WSL 2的发布与我们现有的Bootcamp学生群体提出的问题有关,他们是否可以使用WSL 2而不是下载Virtual Box。我觉得现在是时候集中精力使用WSL 2为Windows用户提供使用Linux的开发人员体验,同时使用我们推荐的以太坊工具。本文将与您分享我们在使用WSL 2设置以太坊开发人员环境时遇到的一些特质(例如为了利用而必须做的事情) 松露 命令).
我们的生态系统中有许多有用的文章和教程,但是人们在假定用户已安装Linux或MacOS的情况下创建它们。我希望所有人都能使用以太坊,并希望分享我认为当前是使用Windows设置开发环境的开发人员最简单的方法,以便他们可以跟上有关开发智能合约的大多数文章.
您可以跳到下面的教程,或者跳过简短的历史,了解为什么Linux和MacOS用户传统上可以更轻松地在以太坊中使用开发人员工具.
使用WSL 2设置以太坊开发人员环境
步骤1:下载WSL 2
TLDR; Windows可以很好地指导您完成如何在计算机上安装WSL 2的说明。 ”适用于Windows的Windows子系统Windows 10安装指南”是一篇综合性的文章,因为它既符合标题,又提供了故障排除提示。我们还发现观看始于 WSL2 8:24:在Linux的Windows子系统上编码更快! |制表符与空格 视频提供了有关如何通过图形用户界面(GUI)而非命令行(或PowerShell)启用WSL的其他信息。您可能必须多次重启计算机,在某些情况下,取决于计算机所具有的硬件,这可能需要一些时间。在最坏的情况下,我愿意花半天时间,以管理您对即将进行的所有安装的期望.
在步骤6 前述文章, 我选择安装 Ubuntu 20.04 LTS, 因为与列出的其他版本相比,我对这种分布最满意。我尝试通过提供的指向Windows应用商店的链接安装Ubuntu,可通过Web浏览器访问该应用,但Windows计算机随后提示我使用内置的Microsoft应用商店安装.
我也安装了 Windows终端, 这是可选的。在犯了很多错误后,我做到了这一点,您会在第3步中看到。我没有继续“走自己的路”,而是决定按照Microsoft告诉我的那样去做。 Windows Terminal的优点是,在一个终端窗口中,您可以打开不同操作系统的多个终端选项卡.
步骤2:与VSCode一起运行WSL 2
我们建议您使用最适合的IDE。就我个人而言,我使用VSCode,所以我想弄清楚如何与WSCode 2一起使用VSCode。我已经安装了VSCode,因此,如果您没有安装VSCode,请继续进行安装。然后,为了使其与Ubuntu一起运行,我在以下位置找到了答案 Microsoft创建的有关WSL的视频的5:31.
使用命令:
代码.
自动下载,安装和启动VSCode,但我确实发现我用来编写智能合约的扩展没有自动安装.
只需单击WSL:Ubuntu中安装的绿色文本。 VSCode还提示我通过VSCode内的终端安装一些其他库,并要求我输入Linux发行版的密码(Ubuntu 20.04 LTS)。
有一个更长的教程叫做 开始使用适用于Linux的Windows子系统的Visual Studio Code 如果您尚未安装VSCode,则可以提供更长的演练。从现在开始,我在VSCode终端中执行了以下所有步骤,该终端现已设置为bash shell.
步骤3.安装nvm,Node和npm
在安装Truffle之类的开发人员工具之前,我们需要安装nvm,Node和npm。直接参考文章 使用WSL 2设置NodeJS开发.
我遇到的第一个特质是文档没有列出最新的nvm版本,因此,我建议转到 nvm GitHub存储库 找出当前版本。安装nvm之后,当我运行命令-v nvm确认它已安装在我的终端中时,什么也没发生(应该返回nvm)。建议我关闭终端,然后重新打开,然后再次运行命令。当我这样做时,我得到了nvm.
然后,我输入了nvm install node –lts,我选择了LTS(长期稳定)版本。检查完我是否同时安装了node和npm(node –version,npm –version)之后。我进入了下一步.
不要做以下
这是不阅读文档的清晰示例(始终阅读文档)。我在首先完全不阅读文档的路径之后,完成了上面详细介绍的步骤。按照时间顺序,我首先使用VSCode打开终端并输入
节点-v
看看我是否安装了它。由于我没有安装节点,因此返回以下信息:
我输入了建议
sudo apt安装nodejs
并被提示输入我的密码。用于我的linux发行版(Ubuntu 20.04 LTS)。然后我输入
节点-v
返回的版本是10.19.0。我查看了Node.js网站,推荐的稳定版本是14.15.0 LTS。不是我想发生的事。另外,当我输入
npm -v
看看我是否安装了NPM,我得到了错误的解释器:没有这样的文件或目录。什么地方出了错?如果我只是从阅读本文开始,我将看到以下内容
“可以通过Ubuntu的apt-get命令安装的Node版本目前已过时”
如果您发现自己走了这条路,则需要卸载Nodejs – 这是一些有用的说明, 但是您将使用命令
sudo apt-get清除nodejs
在终端内这样做.
如果直接导航到Node.js网站并下载并安装,则将安装Windows发行版,您将无法在Ubuntu中使用该发行版。因此,请先阅读上述文档,不要试图仅仅“跳入:.
从我的错误中学习并节省时间。阅读文档.
第4步。安装松露套件
此时,我现在可以按照ConsenSys开发人员门户上描述的步骤进行操作.
确保在truffle-config.js文件中取消注释开发网络(如下所示)
如果您不这样做,则会出现以下错误:
等一下…我全部设置好了,出现了一个错误,我走开了,现在我可以运行它了,我忘记了我的linux发行版密码!!!
嗯是的我也这样做了。我发现文章“为新的Linux发行版创建用户帐户和密码“ 很有帮助.
当我运行Ubuntu时,我在Windows中安装的东西没有显示出来!是什么赋予了!!
请记住,Ubuntu是与Windows不同的操作系统。 Windows上安装的程序不应立即运行Ubuntu发行版,反之亦然,除非它们是配置为这样做的特定程序-Windows终端就是一个例子。假设为了安全起见,您在一个安装的任何东西都不能在另一个安装上工作.
接下来是什么?
现在,按照步骤2:创建智能合约和步骤3:使用本教程提供的相同命令启动去中心化应用程序.
以太坊开发人员的操作系统和环境简史
为什么Windows用户在使用以太坊开发人员工具方面与使用Linux或MacOS的用户体验不同? Linux和MacOS是不同的操作系统,并且有不计其数的Linux发行版。似乎必须有多套工具来处理各种操作系统。要回答这个问题,需要简短的历史课。我建议您观看速成班的视频 操作系统:速成课程计算机科学#18 有关一些简洁的背景信息.
我们的故事从Unix开始。之后 1969年发布Unix, 该操作系统在计算社区中迅速建立了自己的地位. 1970年代,计算机在很大程度上是由研究,大型企业或业余爱好者/黑客社区主导的,并且没有我们今天习惯的图形用户界面. Unix目前是基于终端的,因此所有操作都是通过我们称为命令行的方式完成的.
1980年代恰逢Microsoft和Apple为个人计算用户发布流行的操作系统。这些操作系统带来的进步,以及硬件和内存成本的下降,帮助增加了学术界或企业界能够负担个人使用计算机的人数. Microsoft在1981年发布了Microsoft磁盘操作系统(MS-DOS). 什么时候 Microsoft Windows于1985年发布,该基于图形用户界面的操作系统是建立在MS-DOS代码库之上的, 使最终用户更容易使用计算机.
苹果实际上允许在Apple II上启动多种操作系统,Apple II于1970年代末开始销售. 但是,在微软之前,苹果公司意识到图形用户界面对于推动个人计算机的普及具有多么重要的意义。. Apple的第一个基于GUI的操作系统Macintosh操作系统(现称为Classic MacOS)起源于 苹果丽莎(LisaOS), 1983年发布的计算机. 丽莎的操作系统受到施乐帕洛阿尔托研究中心(PARC)所做工作的极大启发。, Xerox PARC团队的许多人都在Apple工作. 当1984年发行更受欢迎的Apple Macintosh时,就在其上运行Classic MacOS. 在查看Macintosh的旧图片和视频时,我惊讶于经典MacOS与今天在我的Apple计算机上运行的MacOS的界面如此熟悉.
Unix在计算世界中一直是主导的操作系统,在1980年代,它在个人计算领域之外仍然很流行。在1980年代,这意味着在三种不同的代码库上构建了三种不同的操作系统。在这些操作系统上使用程序本身不可能发生。必须修改程序才能与OS一起使用。 Apple和Microsoft的基于GUI的操作系统使大众可以访问计算。对于开发人员而言,构建可在计算机上运行的应用程序需要了解操作系统(并且现在仍然如此)。但是苹果会做出选择,使熟悉Unix命令的开发人员更容易使用MacOS或基于Unix的操作系统,而不会遇到进入障碍.
苹果开始朝着 基于Unix的操作系统,始于1988年,当时发布了基于Unix的A / UX. 在平行轨道上, 由乔布斯(Steve Jobs)于1985年离开苹果后与他人共同创立的NeXT,正在创建一个名为NeXTSTEP的基于Unix的操作系统。. 苹果于1996年购买了NeXT,并获得了将成为MacOS X的知识产权. 回顾一下,Apple的联合创始人离开了公司,与他人共同创立了另一家计算机公司来制造计算机和操作系统,然后由他最初共同创立的公司收购了该公司,随后他成为了该公司的首席执行官,然后从他的新公司,并且该软件项目的构建成为了我现在在我的Apple计算机上运行的MacOS的基础。沃尔特·伊萨克森(Walter Issacson)撰写的史蒂夫·乔布斯(Steve Jobs)中,引述了甲骨文联合创始人拉里·埃里森(Larry Ellison)的话,他与史蒂夫·乔布斯在夏威夷度假时的谈话.
“你知道拉里,我想我已经找到了一种方法,可以让我重返苹果并控制它,而不必购买它,”乔布斯沿着海岸行走时说道。埃里森回忆说:“他解释了他的战略,那就是让苹果收购NeXT,然后他将加入董事会,离成为首席执行官仅一步之遥。”
沃尔特·艾萨克森. 史蒂夫·乔布斯. 纽约 ;多伦多:西蒙 & 舒斯特(Schuster),2011年。第300页
这就是MacOS成为基于Unix的操作系统的方式,并使Unix命令可以在MacOS的终端上运行.
Windows并没有变得像Unix。 Windows 95/98取得重大成功之后, Windows已转变为从NT构建其操作系统(NT的缩写不再代表任何东西,但围绕NT的选择有许多理论和历史-如果您对Microsoft历史感兴趣,那么这是一个有趣的兔子漏洞。)。从Windows 2000开始,Microsoft不再依赖DOS(导致了比尔·盖茨在Windows XP发布时关闭DOS的令人难以置信的视频)。 Windows继续基于NT用于所有后续版本,包括Windows 10.
在苹果和微软之间,将出现第三个竞争对手. Linux由Linus Torvalds在1991年开发和发布. 它是一种类似于Unix的操作系统,并且由于它既免费又易于自定义,并且很快被不想被Apple或Microsoft锁定的开发人员社区所采用。 Linux继续受到欢迎,它发现自己已在许多不同的计算环境中使用。例如,作为移动操作系统的Android基于Linux构建,并且是最受欢迎的智能手机操作系统。 Linux还维护了Unix shell命令。有关Linux的更多信息, 运行Linux,第三版 是综合资源.
基于Unix意味着在MacOS终端和Linux终端中编写的命令在语法上是相同的,因为它们都使用bash shell(或zsh的某些派生)。 Windows用户通常必须翻译他们在为bash shell编写的教程中看到的命令,才能在Windows PowerShell或Cmd中工作。 Linux或MacOS用户可以运行该命令。开发人员在终端上花费大量时间。这意味着安装和使用针对以太坊(和许多其他语言)的某些开发人员工具,例如nvm,Node,npm和Truffle,需要Windows用户使用不同的指令集.
结果是Linux和MacOS之间具有更大的兼容性-因此,为什么在Ubuntu终端(Linux发行版)中使用的许多命令也可以(大部分)在MacOS终端中互换使用。 Windows过去曾涉足基于Unix的操作系统,但2016年针对Windows 10的WSL发行是Windows用户首次使用Linux内核,同时无需虚拟机即可使用Windows的第一次。 WSL 2创建了在Windows内运行的轻型虚拟机,这意味着开发人员不再需要处理与下载虚拟盒或使用VMWare安装Ubuntu相关的内存和存储问题。.
为什么这会影响以太坊开发人员?以太坊的Genesis Block发生在2015年7月30日,根据以太坊联合创始人兼ConsenSys Joe Lubin创始人的说法,大部分开发都发生在Ubuntu和MacOS X上。因此,许多原始工具都能很好地工作并不奇怪与类似Unix的操作系统一起使用。尽管已经有专门针对Windows开发的工具,但开发人员通常可以使用类似Unix的终端来安装软件并运行命令,从而获得更好的体验。.
微软已投入工作以推出WSL 2,自2018年末以来,社区中许多人一直在使用它来改进Linux发行版。如果您使用Windows,则不再需要在构建dApp时遵循一组稍作修改的说明。 Windows用户现在可以跟随Linux或Mac的以太坊教程.
艾弗里·欧文(Avery Erwin)向我推荐的一本有趣的读物是尼尔·史蒂芬森(Neal Stephenson)的 “一开始就是命令行”, 这段简短的历史记录中有关他在操作系统方面的个人经历的文章/书.
结论
本教程和简短的历史记录为Windows用户提供了一些有关如何使用WSL 2,Ubuntu,VSCode,npx,Node,npm和Truffle设置开发环境的见解。它还提供了一些有关如何以及为什么必须这样做的历史。如果您根据自己的经验有任何意见或有用的提示,请发送给 [受电子邮件保护] 所以我可以更新这篇文章,并感谢您的贡献.
特别感谢Onyebuchi Valentine Ahiwe,Clemens Wan,Anthony Albertorio,Eli Geschwind,Nick Nelson和更多好心的朋友,感谢您对本教程和历史的评论和评论。感谢您的评论.
开发者智能合约Windows新闻简报订阅我们的新闻简报,以获取最新的以太坊新闻,企业解决方案,开发者资源等信息。