Como faço o downgrade do nó ou instalo uma versão anterior específica usando o homebrew?

230

Estou usando cerveja. Eu tenho o nó instalado, usando o brew. Eu quero usar uma versão anterior do nó.

Online, encontro instruções como , por exemplo :

cd /usr/local/Library/Formula
brew remove node --force
brew versions node
git checkout 83988e4 /usr/local/Library/Formula/node.rb
brew install node

O problema que tenho com isso é que brewnão parece ter um versionssubcomando:

$ brew versions node
Error: Unknown command: versions
$ brew --version
0.9.5

Eu sou novo em preparar. Preciso ativar o versionssubcomando de alguma forma? Devo usar um subcomando diferente? Existe um método completamente diferente que eu deveria tentar?

Estou executando o OS X Yosemite (10.10.1); fermentação 0.9.5.

dave4420
fonte
Qual versão do node.js você deseja instalar?
bmike
Meu chefe me diz 10.32. Eu acho que ele quer dizer 0.10.32. Eu tenho 0.12.0 instalado agora.
dave4420
Nesta data, o leitor deve ir para esta resposta: stackoverflow.com/a/4158763/48136
Brice

Respostas:

352

Hoje em dia, se você deseja instalar uma versão diferente, nodefaça o seguinte:

Primeiro procure o seu pacote desejado:

brew search node

Isso pode fornecer os seguintes resultados:

heroku/brew/heroku-node ✔
llnode
node@10
nodebrew
leafnode
node ✔
node@8
....

E instale a versão desejada:

brew install node@8

Lembre-se também de que você pode instalar mais de um pacote de nós ao mesmo tempo, mas não pode tê-los disponíveis ao mesmo tempo. Portanto, se você já possui o nodepacote mais recente / genérico , precisará desvinculá-lo primeiro:

brew unlink node

E então você pode vincular uma versão diferente:

brew link node@8

Para algumas versões de nós mais antigas (que são apenas barris), pode ser necessário vinculá-las às opções --forcee --overwrite:

brew link --force --overwrite node@8
Paweł Gościcki
fonte
10
melhor resposta aqui.
chovy 7/11
3
Observe que você pode ser solicitado a "desvincular" uma versão existente do nó antes de poder instalar com êxito uma das outras versões listadas (de acordo com as instruções acima). Ao "desvincular" você está deixando a outra versão fisicamente instalada em seu sistema, mas a que você instala (após a desvinculação) se tornará a versão "padrão" em seu sistema. Por exemplo, pode ser necessário digitar brew unlink nodese você tiver instalado brew install node. Então você pode fazer brew install homebrew/versions/node4-lts(que você deve ver como uma versão listada de acordo com as instruções nesta resposta).
Xmnboy
1
Em vez de homebrew/versions/node06agora homebrew/versions/node6-lts. Também faça brew link node6-lts.
akauppi
1
Atualizei minha resposta para refletir as alterações mais recentes da distribuição. Obrigado!
Paweł Gościcki
2
mas como podemos instalar uma versão específica como o nó 8.2.1 usando o brew?
Nadav B
39

Aqui está passo a passo.

Para ver sua versão atual do nó

$ node --version

Para ver as versões disponíveis do nó

$ brew search node

Para desvincular da versão atual

$ brew unlink node

Instale qualquer versão, por exemplo, 8

$ brew install node@8

Para vincular a versão instalada

$ brew link node@8

Para ver sua versão atual do nó (novamente)

$ node --version
Katopz
fonte
Exatamente o que eu precisava
Brian Colavito 27/03
Como resolver este problema ? nó do link de preparação @ 10 Aviso: o nó @ 10 é apenas barril e deve ser vinculado ao --force Se você precisar primeiro deste software em seu PATH, considere executar: echo 'export PATH = "/ usr / local / opt / node @ 10 / bin: $ PATH "'>> ~ / .bash_profile
vikramvi
não funcionou no Mac OS 10.13.5, obtendo erro stackoverflow.com/questions/53043476/…
vikramvi
15

Desde este PR para homebrew / versões e este PR para homebrew , as respostas que envolvem brew tap homebrew/versionsou *-ltspacotes não funcionam mais.

A resposta correta é agora:

brew install node@<version>

Onde <version>está 0.10, 0.12, 4, etc. Por exemplo, para instalar Node.js v6 (como esta escrito, a mais recente versão LTS):

brew install node@6

Pode ser necessário executar brew updateantes desses comandos para garantir que essas novas fórmulas com versão estejam disponíveis. Se você tiver outra versão da nodefórmula instalada, também precisará executar brew unlink nodeprimeiro.

John
fonte
2
não funcionou com o Mac OS 10.13.5 stackoverflow.com/questions/53043476/…
vikramvi
11

brew versionsprecisa ser instalado em algum momento após a instalação brew.

$ brew tap homebrew/boneyard

Você pode usar o brew versionscomando conforme as instruções assumem.

dave4420
fonte
4
homebrew/boneyardestá desatualizado e será substituído por github.com/Homebrew/homebrew-versions a partir de março de 2015. Instale via brew tap homebrew/versions.
Jakub Holý
12
Com homebrew/versionsvocê irá receber o nome do pacote de controle de versão: brew search node => leafnode node node010 node04 node06 node08 nodebrew .... Portanto, brew install node010seguido por brew link --overwrite node010instalar a versão 0.10 do Node.js.
Jakub Holý
3
Você também pode precisar brew unlink nodeantes de vocêbrew install node010
chananelb
10

Para sua informação, se você já tinha a versão antiga instalada e não executou brew cleanup(o que exclui versões antigas), você pode alternar com algo comobrew switch node 5.7.0

Todas as versões instaladas do nó podem ser listadas executando brew info nodeouls -l /usr/local/Cellar/node/

Consulte a folha de dicas do comando brew: http://ricostacruz.com/cheatsheets/homebrew.html

Loren
fonte
Funciona a partir de 2017/12! Homebrew 1.4.0-17-gc912d26
Jason Harrison
5

Se você precisar apenas especificamente para o Node, poderá usá-lo nvm. É muito conveniente se você trabalha muito com o Node.

mik01aj
fonte
De acordo com a nvm docs, brew e nvm não são uma combinação suportada. Eu comentei sobre isso aqui. github.com/angular/angular-cli/issues/… Eu estaria interessado em ouvir qualquer história de guerra sobre isso. Porque na superfície parece que eu tenho esse trabalho apesar do fato de que é "não suportado"
JGFMK
3

Você pode fazer isso sem homebrew.

Você pode desinstalar e instalar o nó manualmente.

Você precisa baixar sua versão atual. Aqui está a lista .

Faça o download do node-v {número da sua versão atual} .tar.gz, extraia-o e vá para a linha de comando.

cd node-v{your-current-version-number}
./configure
make
sudo make install

Para desinstalar sudo make uninstall

Baixe a versão que você deseja instalar e siga as mesmas etapas acima.

Nesta postagem do blog

Terente Ionut Alexandru
fonte
Marque esta resposta com +1. FWIW, eu era capaz de copiar a bin/pasta não marcada para o meu PATH para fazer isso funcionar.
Shicholas
Ainda melhor, você pode baixar o arquivo .pkg a partir daí e clicar duas vezes nele para instalar.
Henrik N
3

Se você encontrou problemas com o homebrew para instalar qualquer versão do nó, basta fazer o download do arquivo .pkg para OSX em https://nodejs.org/dist/[VERSION_YOU_NEED] . Isso só me ajuda a reinstalar o nó

Firuz Narzikulov
fonte
3

Há muitas respostas aqui e em outros lugares que dizem usar versões homebrew, mas isso oferece opções muito limitadas para a versão do Node que você pode instalar.

É muito mais fácil usar o NVM e permite alternar entre versões com muita facilidade.

homebrew install nvm

Siga as instruções nas advertências - mkdir ~/.nvme adicione duas linhas ao seu .bash_profileesource .bash_profile

Em seguida, basta executar nvm install <version>todas as versões necessárias. Então nvm use <version>para mudar.

DSG
fonte
Esta não é a resposta aceita, mas é a única que funcionou para mim. Eu gostaria de ter experimentado este pela primeira vez, porque teria economizado muito tempo.
21418 Alex
1

Vamos imaginar que você tem a versão 0.12. *. Para instalar (downgrade) a versão 0.10 do nó, instale o brew no OSX, você deve:

$ sudo brew tap homebrew-versions
$ brew unlink node
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-versions/master/node010.rb
$ node -v

A lista de todas as versões de nós está aqui

1nstinct
fonte
1

A maneira preferida no mundo do NodeJS é usar a ferramenta n

  • Instalação: npm install -g n
  • Nó de instalação 8.8.4 n 8.8.4
  • Liste todas as versões de nós disponíveis localmente e escolha uma: n

Parece semelhante nvm, mas tive problemas com nvme ntrabalhei fora da caixa.

Peter Ilfrich
fonte
0

https://nodejs.org/en/blog/release/

Você pode ir aqui e instalar a versão que você precisa.

Antes de instalar, convém executar brew unlink nodepara desvincular a versão atual.

Anant Simran Singh
fonte
1
Qual seria a vantagem de fazer dessa maneira, em vez de usar o brew (como várias outras respostas descrevem) ou desinstalar o nó e instalá-lo manualmente (como a resposta de @ Terente-Ionut-Alexandru descrita)?
John N
As versões do @JohnN brew estão obsoletas a partir de agora. Suas alternativas não são muito fáceis de entender. Além disso, é meio complexo através do brew instalar a versão exata.
Anant Simran Singh
A resposta de @ Paweł-Gościcki (a mais alta, com 140 votos) parece muito fácil de entender, e nem um pouco complexa - o que corresponde à minha experiência recente com o brew e diferentes versões de fórmulas. O que quero dizer é que sua resposta não parece acrescentar nada que ainda não tenha sido dito em outras respostas - a menos que haja um motivo para desvincular + instalar manualmente em vez de desinstalar + instalar manualmente, como sugeriu Terente?
John N
@ JohnN Isso é claro, é fácil de entender. Mas você ficará limitado pelas opções oferecidas pela pesquisa de distribuição. Por exemplo. se você desejar o nó 4.4.6 exatamente, mas a distribuição fornecerá apenas uma opção nó @ 4. Conseqüentemente.
Anant Simran Singh
Acho que existem três respostas decentes para a pergunta: (1) use o brew, (2) use o nvm e (3) desinstale e instale manualmente. O que estou tentando fazer com que você faça é explicar por que sua resposta se soma a essas respostas existentes. Por que você acha que desvincular + a instalação manual é preferível às respostas existentes? Especificamente, por que você acha que * desvincular * + a instalação manual é melhor do que * desinstalar * + a instalação manual, como sugere a resposta de Terente?
John N