Posso criar uma configuração de desenvolvedor Ethereum semelhante ao Linux / MacOS no Windows ?: Um guia para configurar o subsistema Windows para Linux

blog 1NewsDevelopersEnterpriseBlockchain ExplainedEvents and ConferencesPressboletins informativos

Assine a nossa newsletter.

Endereço de email

Nós respeitamos sua privacidade

HomeBlogDevelopers

Posso criar uma configuração de desenvolvedor Ethereum semelhante ao Linux / MacOS no Windows ?: Um guia para configurar o subsistema Windows para Linux

Instruções passo a passo sobre como utilizar WSL 2 para configurar seu ambiente de desenvolvimento de contrato inteligente Ethereum e fluxo de trabalho por Thomas HayNovember 18, 2020Posted em 18 de novembro de 2020

blockchain

Na ConsenSys Academy, pedimos a todos no Programa para Desenvolvedores que baixassem uma Caixa Virtual e o Ubuntu no início. Nosso objetivo é que cada aluno possa ter uma experiência de usuário consistente ao configurar seu ambiente de desenvolvimento local. Não importa seu sistema operacional (SO) nativo, todos teriam o Ubuntu e seriam capazes de rodar o mesmo software. Esta é uma boa ideia em teoria. Na prática, trabalhamos com alunos para lidar com questões relacionadas à memória disponível em suas máquinas para fazer esse trabalho. Quase sempre, os usuários de Mac continuarão sem baixar o Ubuntu, devido ao MacOS ser um sistema baseado em Unix. Os usuários do Windows geralmente ficam frustrados, pois não foram capazes de usar as ferramentas de desenvolvimento seguindo as instruções que recomendamos em seu sistema operacional nativo e, se quisessem executar tudo no Windows, teriam que seguir um conjunto de instruções paralelas às do Linux e usuários MacOS. 

Acompanhamos o desenvolvimento do Windows Subsystem for Linux (WSL). O lançamento do WSL 2 coincidiu com perguntas de nosso grupo atual de alunos do Bootcamp sobre se eles poderiam usar o WSL 2 em vez de baixar uma caixa virtual. Achei que já era hora de fornecer um foco maior em como usar o WSL 2 para fornecer aos usuários do Windows uma experiência de desenvolvedor semelhante à do Linux ao usar as ferramentas Ethereum que recomendamos. Este artigo irá compartilhar com você algumas idiossincrasias que encontramos ao usar WSL 2 para configurar seu ambiente de desenvolvedor Ethereum (como o que você precisa fazer para utilizar Brigadeiro comandos). 

Nosso ecossistema tem muitos artigos e tutoriais úteis por aí, mas as pessoas os criam presumindo que o usuário tenha Linux ou MacOS instalado. Quero que o Ethereum seja acessível a todos e gostaria de compartilhar o que acredito ser atualmente a maneira mais fácil para os desenvolvedores que usam o Windows configurarem seu ambiente de desenvolvimento para que possam acompanhar a maioria dos artigos publicados sobre o desenvolvimento de contratos inteligentes.

Você pode pular para o tutorial abaixo ou pular para um breve histórico sobre por que os usuários de Linux e MacOS tradicionalmente tinham um caminho mais fácil para ferramentas de desenvolvedor no Ethereum.

Usando WSL 2 para configurar seu ambiente de desenvolvedor Ethereum

Etapa 1: Baixar WSL 2

TLDR; O Windows faz um ótimo trabalho em orientá-lo nas instruções de como instalar o WSL 2 em sua máquina. “Subsistema Windows para Linux Guia de Instalação para Windows 10”É um artigo abrangente porque faz jus ao título e também fornece dicas para solução de problemas. Também descobrimos que assistir a partir de 8:24 de WSL2: Codifique mais rápido no subsistema Windows para Linux! | Tabs vs Spaces o vídeo fornece algum contexto adicional sobre como habilitar WSL por meio da interface gráfica do usuário (GUI) em vez de via linha de comando (ou PowerShell). Pode ser necessário reiniciar o computador várias vezes e, em alguns casos, dependendo do hardware da máquina, isso pode levar algum tempo. Eu estaria pronto para reservar meio dia como o pior cenário, apenas para gerenciar suas expectativas para todas as instalações que você está prestes a fazer.

Na etapa 6 do artigo mencionado, Eu escolhi instalar Ubuntu 20.04 LTS, como eu estava mais confortável com essa distribuição em comparação com as outras listadas. Eu tentei instalar o Ubuntu através do link fornecido para a loja do Windows, acessada através do meu navegador da web, mas minha máquina Windows então me pediu para instalar usando o aplicativo de loja da Microsoft integrado.

Eu também instalei Terminal Windows, o que era opcional. Fiz isso depois de cometer um monte de erros que você verá na Etapa 3. Em vez de continuar a “seguir meu próprio caminho”, decidi seguir o que a Microsoft estava me dizendo. A vantagem do Windows Terminal é que, em uma janela de terminal, você pode abrir várias guias de terminal de diferentes sistemas operacionais.

Etapa 2: executando WSL 2 junto com VSCode

Sugerimos que você use qualquer IDE com a qual se sinta mais confortável. Pessoalmente, eu uso o VSCode, então queria descobrir como eu poderia usar o VSCode junto com o WSL 2. Eu já tenho o VSCode instalado, então se você não o tem instalado, vá em frente e instale-o. Então, para fazê-lo funcionar junto com o Ubuntu, encontrei a resposta em 5:31 de um vídeo sobre WSL criado pela microsoft.

Usando o comando:

código. 

baixei, instalei e iniciei o VSCode automaticamente, mas descobri que minhas extensões que uso para escrever contratos inteligentes não são instaladas automaticamente.

Basta clicar no texto verde instalado no WSL: Ubuntu. O VSCode também me pediu para instalar algumas bibliotecas adicionais por meio do terminal dentro do VSCode e me pediu para inserir minha senha para minha distribuição Linux (que é Ubuntu 20.04 LTS)

Existe um tutorial mais longo chamado Comece a usar o Visual Studio Code for Windows Subsystem para Linux que fornece um passo a passo mais longo se você ainda não instalou o VSCode. Deste ponto em diante, executei todas as etapas a seguir dentro do terminal do VSCode, que agora estava configurado como um shell bash.

Etapa 3. Instale nvm, Node e npm

Antes de instalar ferramentas de desenvolvedor como o Truffle, precisamos instalar nvm, Node e npm. Consulte diretamente o artigo Configure seu desenvolvimento NodeJS com WSL 2.  

A primeira idiossincrasia que encontrei foi que a documentação não tinha a versão mais atualizada do nvm listada e, portanto, recomendo ir para o repositório nvm GitHub para descobrir a versão atual. Depois de instalar o nvm, quando executei o comando -v nvm para confirmar que foi instalado no meu terminal, nada aconteceu (nvm deve ser retornado). Ele sugeriu que eu fechasse meu terminal e o abrisse novamente, em seguida, execute o comando novamente. Quando eu fiz isso, ganhei nvm.

Em seguida, digitei nvm install node –lts. Optei pela versão LTS (estável de longo prazo). Depois de verificar se eu tinha o node e o npm instalados (node ​​–version, npm –version). Eu mudei para a próxima etapa. 

Não faça o seguinte

Este é um exemplo claro de não leitura da documentação (sempre leia a documentação). As etapas que detalhei acima eu fiz depois de primeiro percorrer o caminho de não ler os documentos até o fim. Cronologicamente, primeiro abri o terminal com VSCode e digitei

node -v

para ver se eu tinha instalado. Como eu não tinha o nó instalado, o seguinte retornou:

Eu digitei o sugerido

sudo apt install nodejs

e foi solicitada minha senha. para minha distribuição Linux (Ubuntu 20.04 LTS). Então digitei

node -v

A versão que retornou foi 10.19.0. Eu olhei no site do Node.js e a versão estável recomendada era 14.15.0 LTS. Não o que eu queria que acontecesse. Além disso, quando digitei

npm -v

para ver se eu tinha o NPM instalado, recebi um mau intérprete: Não existe esse arquivo ou diretório. O que deu errado? Se eu tivesse começado lendo o artigo, teria visto o seguinte

“A versão do Node que pode ser instalada com o comando apt-get do Ubuntu está atualmente desatualizada”

Se você descobriu que está seguindo este caminho, você precisa desinstalar o Nodejs – aqui estão algumas instruções úteis, mas você usará o comando

sudo apt-get purge nodejs

dentro do terminal para fazer isso.

Se você navegar diretamente para o site Node.js e baixar e instalar, você instalará a distribuição do Windows, que não poderá ser usada no Ubuntu. Portanto, leia a documentação acima primeiro, e não tente apenas “pular:.

Aprenda com meus erros e economize tempo. Leia a documentação.

Etapa 4. Instale o Truffle Suite

Nesse ponto, eu poderia seguir as etapas descritas no Portal do desenvolvedor ConsenSys.

Certifique-se de remover o comentário da rede de desenvolvimento (como visto abaixo) no arquivo truffle-config.js

Caso contrário, obterá o seguinte erro:

Espere … Eu configurei tudo e ocorreu um erro, fui embora, e agora que o tenho em execução, esqueci minha senha para minha distribuição Linux!!!

Ahh, sim. Eu também fiz isso. Eu encontrei o artigo “Crie uma conta de usuário e senha para sua nova distribuição Linux”Muito útil. 

Coisas que instalei no Windows não aparecem quando executo o Ubuntu! O que da!!

Lembre-se de que o Ubuntu é um sistema operacional diferente do Windows. Não se espera que os programas instalados no Windows executem instantaneamente a distribuição do Ubuntu e vice-versa, a menos que sejam programas específicos configurados para isso – o Terminal do Windows é um exemplo. Suponha que qualquer coisa que você instalar em um não funcionará no outro para ser seguro.

Qual o proximo?

Agora siga com a Etapa 2: Criar um Contrato Inteligente e a Etapa 3: Iniciar um Aplicativo Descentralizado usando os mesmos comandos fornecidos por estes tutoriais.

Uma breve história dos sistemas operacionais e do contexto para os desenvolvedores Ethereum

Por que os usuários do Windows têm uma experiência diferente com as ferramentas de desenvolvedor Ethereum do que aqueles que usam Linux ou MacOS? Linux e MacOS não são o mesmo sistema operacional e existem inúmeras distribuições Linux. Parece que teria que haver vários conjuntos de ferramentas para lidar com os vários sistemas operacionais que existem. Para responder a essa pergunta, é necessária uma breve lição de história. Eu recomendo assistir o vídeo do Crash Course Sistemas operacionais: curso intensivo de ciência da computação nº 18 para algumas informações básicas concisas. 

Nossa história continua com o Unix. Depois de lançamento do Unix em 1969, este sistema operacional rapidamente se estabeleceu dentro da comunidade de computação. A computação era muito dominada pela pesquisa, grandes empresas ou comunidades de hobby / hackers durante a década de 1970 e não tinha as interfaces gráficas de usuário às quais estamos acostumados hoje. No momento, o Unix era baseado em terminal, então tudo era feito através do que chamaríamos de linha de comando.

A década de 1980 coincidiu com o lançamento de sistemas operacionais populares pela Microsoft e pela Apple para o público de computação pessoal. Os avanços que esses sistemas operacionais trouxeram, juntamente com uma redução no custo de hardware e memória, ajudaram a aumentar o número de pessoas fora da academia ou do mundo dos negócios capazes de comprar um computador para uso pessoal. A Microsoft lançou o Microsoft Disk Operating System (MS-DOS) em 1981. Quando O Microsoft Windows foi lançado em 1985, este sistema operacional baseado na interface gráfica do usuário foi criado com base no código do MS-DOS, tornando o computador muito mais acessível ao usuário final.

A Apple, na verdade, permitiu a inicialização de vários sistemas operacionais no Apple II, que começou a ser vendido no final dos anos 1970. Mas a Apple, antes da Microsoft, percebeu como uma GUI seria importante para impulsionar a adoção do computador pessoal. O primeiro sistema operacional baseado em GUI da Apple, o sistema operacional Macintosh (agora chamado Classic MacOS) originou-se do Apple Lisa (LisaOS), um computador lançado em 1983. O sistema operacional do Lisa foi fortemente inspirado pelo trabalho realizado no Palo Alto Research Center (PARC) da Xerox, e muitos da equipe Xerox PARC trabalharam na Apple. Quando o muito mais popular Apple Macintosh foi lançado em 1984, Classic MacOS estava rodando nele. Ao olhar as fotos e vídeos antigos do Macintosh, fiquei surpreso com a familiaridade da interface do Classic MacOS com o MacOS rodando no meu computador Apple hoje..

O Unix foi o sistema operacional dominante no mundo da computação e continuou a ser popular fora do espaço da computação pessoal na década de 1980. Durante a década de 1980, isso significava que havia três sistemas operacionais diferentes construídos em três bases de código diferentes. O uso de um programa nesses sistemas operacionais não poderia acontecer nativamente. Os programas tiveram que ser modificados para funcionar com o sistema operacional. Os sistemas operacionais baseados em GUI da Apple e da Microsoft tornaram a computação acessível para as massas. Para os desenvolvedores, construir um aplicativo que pudesse funcionar em um computador exigia conhecer o sistema operacional (e ainda funciona). Mas a Apple faria escolhas que tornariam mais fácil para os desenvolvedores familiarizados com os comandos do Unix usar o MacOS ou um sistema operacional baseado em Unix menos uma barreira de entrada.

A Apple começou a fazer movimentos em direção a um Sistema operacional baseado em Unix, começando em 1988, quando o A / UX baseado em Unix foi lançado. Em uma pista paralela, NeXT, co-fundada por Steve Jobs em 1985 após sua saída da Apple, estava criando um sistema operacional baseado em Unix chamado NeXTSTEP. A Apple comprou a NeXT em 1996 e adquiriu a propriedade intelectual que se tornaria o MacOS X. Para recapitular, o cofundador da Apple deixou a empresa, cofundou outra empresa de computadores para construir computadores e sistemas operacionais, que foi então comprada pela empresa que ele cofundou, da qual posteriormente se tornou CEO, e então assumiu um projeto de sua nova empresa, e aquele projeto de software foi construído para se tornar a base do MacOS que estou executando no meu computador Apple agora. Em Steve Jobs, de Walter Issacson, há uma citação de Larry Ellison, cofundador da Oracle, sobre uma conversa que ele teve com Steve Jobs enquanto eles estavam de férias no Havaí.

“Sabe, Larry, acho que encontrei uma maneira de voltar para a Apple e obter o controle dela sem você ter que comprá-la”, disse Jobs enquanto caminhavam ao longo da costa. Ellison relembrou: “Ele explicou sua estratégia, que era fazer com que a Apple comprasse a NeXT, então ele entraria no conselho e estaria a um passo de se tornar CEO”.

Isaacson, Walter. Steve Jobs. Nova york ; Toronto: Simon & Schuster, 2011. p.300

Foi assim que o MacOS se tornou um sistema operacional baseado em Unix, e tornou possível para o comando Unix rodar no terminal no MacOS.

O Windows não se tornou semelhante ao Unix. Após o grande sucesso do Windows 95/98, O Windows mudou para construir seu sistema operacional a partir do NT (a sigla NT não significa mais nada, mas existem muitas teorias e histórias em torno das escolhas do NT – uma divertida toca de coelho para descobrir se você estiver interessado na história da Microsoft) A partir do Windows 2000, a Microsoft suspendeu a dependência do DOS (levando a este vídeo incrível de Bill Gates desativando o DOS quando o Windows XP foi lançado) O Windows continuou a se basear no NT em todas as versões subsequentes, incluindo o Windows 10.

Entre a Apple e a Microsoft, um terceiro concorrente surgiria. O Linux foi desenvolvido e lançado por Linus Torvalds em 1991. É um sistema operacional semelhante ao Unix, e por ser gratuito e facilmente personalizável, foi rapidamente adotado por comunidades de desenvolvedores que não queriam ficar restritas à Apple ou à Microsoft. O Linux continuou a ganhar popularidade e acabou sendo usado em muitos ambientes de computação diferentes. Por exemplo, o Android, que é um sistema operacional móvel, é baseado no Linux e é o sistema operacional de smartphone mais popular. O Linux também manteve os comandos shell do Unix. Para obter mais informações sobre Linux, Executando Linux, Terceira Edição é um recurso abrangente.

Ser baseado no Unix significa que os comandos escritos no terminal MacOS e em um terminal Linux são sintaticamente iguais porque ambos usam o shell bash (ou algum derivado dele como zsh). Os usuários do Windows geralmente precisam traduzir um comando que vêem em um tutorial escrito para o shell bash para funcionar no Windows PowerShell ou Cmd. Os usuários de Linux ou MacOS podem simplesmente executar o comando. Os desenvolvedores passam muito tempo no terminal. Isso significou instalar e usar certas ferramentas de desenvolvedor para Ethereum (e muitas outras linguagens), como nvm, Node, npm e Truffle, exigindo um conjunto diferente de instruções para usuários do Windows. 

O resultado é que há maior compatibilidade entre Linux e MacOS – e, portanto, por que muitos dos comandos usados ​​no terminal Ubuntu, uma distribuição Linux, também podem ser usados ​​(amplamente) de forma intercambiável no terminal MacOS. O Windows invadiu o sistema operacional baseado em Unix no passado, mas o lançamento do WSL em 2016 para o Windows 10 foi a primeira vez que os usuários do Windows puderam usar um kernel do Linux ao mesmo tempo em que usavam o Windows sem uma máquina virtual. WSL 2 criou uma máquina virtual leve que roda dentro do Windows, o que significa que um desenvolvedor não precisa mais lidar com os problemas de memória e armazenamento relacionados ao download de uma caixa virtual ou ao uso do VMWare para instalar o Ubuntu.

Por que isso afeta os desenvolvedores do Ethereum? O Bloco de Gênese da Ethereum ocorreu em 30 de julho de 2015 e, de acordo com o co-fundador da Ethereum e fundador da ConsenSys Joe Lubin, a maior parte do desenvolvimento estava acontecendo no Ubuntu e MacOS X. Portanto, não é surpreendente que muitas das ferramentas originais funcionaram bem com sistemas operacionais do tipo Unix. Embora existam ferramentas desenvolvidas especificamente para Windows, muitas vezes a experiência dos desenvolvedores é melhor quando eles podem usar um terminal semelhante ao Unix para instalar software e executar comandos. 

A Microsoft se esforçou para lançar o WSL 2 e ele melhorou de forma que muitos na comunidade o têm usado desde o final de 2018 para instalar uma distribuição Linux. Se você usa o Windows, não precisa mais seguir um conjunto de instruções ligeiramente modificado ao criar seu dApp. Os usuários do Windows agora podem acompanhar os tutoriais Ethereum para Linux ou Mac.

Uma leitura muito divertida, recomendada para mim por Avery Erwin, é Neal Stephenson “No começo era a linha de comando”, um ensaio / livro sobre sua experiência pessoal com sistemas operacionais durante o período de tempo descrito nesta curta história.

Conclusão

Este tutorial e um breve histórico fornecem a um usuário do Windows algumas dicas sobre como configurar seu ambiente de desenvolvimento usando WSL 2, Ubuntu, VSCode, npx, Node, npm e Truffle. Também dá um pouco da história de como e por que devemos fazer isso. Se você tiver comentários ou dicas úteis com base em sua experiência, envie-os para [email protegido] para que eu possa atualizar este artigo e creditar a você por sua contribuição.

Agradecimentos especiais a Onyebuchi Valentine Ahiwe, Clemens Wan, Anthony Albertorio, Eli Geschwind, Nick Nelson e mais amigos gentis por sua análise e comentários sobre este tutorial e história. Eu aprecio seus comentários.

DesenvolvedoresContratos inteligentesWindowsNewsletterSubscreva nossa newsletter para obter as últimas notícias da Ethereum, soluções empresariais, recursos para desenvolvedores e muito mais. Endereço de e-mail