Come posso effettuare il downgrade del nodo o installare una versione precedente specifica usando homebrew?


230

Sto usando la birra. Ho nodo installato, usando brew. Voglio usare una versione precedente del nodo.

In linea, trovo istruzioni come , ad esempio :

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

Il problema che ho con questo è che brewnon sembra avere un versionssottocomando:

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

Sono nuovo da preparare. Devo abilitare il versionssottocomando in qualche modo? Dovrei invece usare un sottocomando diverso? Esiste un metodo completamente diverso che dovrei provare?

Sto eseguendo OS X Yosemite (10.10.1); birra 0.9.5.


Quale versione di node.js stai cercando di installare?
bmike

Il mio capo mi dice 10.32. Immagino che significhi 0.10.32. Ho installato 0.12.0 in questo momento.
dave4420,

A questa data il lettore dovrebbe andare a questa risposta: stackoverflow.com/a/4158763/48136
Brice

Risposte:


354

In questi giorni se vuoi installare una versione diversa di nodete, fallo in questo modo:

Prima ricerca del pacchetto desiderato:

brew search node

Questo potrebbe darti i seguenti risultati:

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

E quindi installare la versione desiderata:

brew install node@8

Ricorda inoltre che puoi installare più di 1 pacchetto di nodi contemporaneamente, ma non puoi averli disponibili contemporaneamente. Quindi, se hai nodegià installato il pacchetto più recente / generico , devi prima scollegarlo:

brew unlink node

E quindi puoi collegare una versione diversa:

brew link node@8

Per alcune versioni di nodi precedenti (che sono solo keg), potrebbe essere necessario collegarle con le opzioni --forcee --overwrite:

brew link --force --overwrite node@8

10
migliore risposta qui.
amorevole

3
È possibile che venga richiesto di "scollegare" una versione esistente del nodo prima di poter installare correttamente una delle altre versioni elencate (come indicato sopra). "Scollegando" si lascia l'altra versione fisicamente installata sul proprio sistema ma quella che si installa (dopo lo scollegamento) diventerà la versione "predefinita" sul proprio sistema. Ad esempio, potrebbe essere necessario digitare brew unlink nodese fosse stato installato brew install node. Quindi potresti farlo brew install homebrew/versions/node4-lts(che dovresti vedere come una versione elencata secondo le istruzioni in questa risposta).
xmnboy,

1
Invece di homebrew/versions/node06adesso homebrew/versions/node6-lts. Anche fare brew link node6-lts.
akauppi,

1
Ho aggiornato la mia risposta per riflettere le ultime modifiche della birra. Grazie!
Paweł Gościcki,

2
ma come possiamo installare una versione specifica come il nodo 8.2.1 usando brew?
Nadav B,

39

Ecco passo dopo passo.

Per vedere la tua versione attuale del nodo

$ node --version

Per visualizzare le versioni dei nodi disponibili

$ brew search node

Per scollegare dalla versione corrente

$ brew unlink node

Installa qualsiasi versione, ad es. 8

$ brew install node@8

Per collegare la versione installata

$ brew link node@8

Per visualizzare la versione del nodo corrente (di nuovo)

$ node --version

Proprio quello di cui avevo bisogno
Brian Colavito,

Come risolvere questo problema? brew link node @ 10 Avvertenza: node @ 10 è solo keg e deve essere collegato a --force Se devi prima avere questo software nel tuo PATH invece considera l'esecuzione: echo 'export PATH = "/ usr / local / opt / nodo @ 10 / bin: $ PERCORSO "'>> ~ / .bash_profile
vikramvi

non ha funzionato su Mac OS 10.13.5, ottenendo errore stackoverflow.com/questions/53043476/...
vikramvi

15

A partire da questo PR per homebrew / versioni e da questo PR per homebrew , le risposte che coinvolgono brew tap homebrew/versionso *-ltspacchetti non funzionano più.

La risposta corretta è ora:

brew install node@<version>

Dove <version>si trova 0.10, 0.12, 4, ecc Per esempio, per installare Node.js v6 (stesura di questo documento, la versione più recente LTS):

brew install node@6

Potrebbe essere necessario eseguire brew updateprima di questi comandi per garantire la disponibilità di queste nuove formule con versione. Se hai installato un'altra versione della nodeformula, dovrai anche eseguire brew unlink nodeprima.


3
non ha funzionato con Mac OS 10.13.5 stackoverflow.com/questions/53043476/...
vikramvi

11

brew versionsdeve essere installato ad un certo punto dopo l'installazione brew.

$ brew tap homebrew/boneyard

È quindi possibile utilizzare il brew versionscomando come presupposto dalle istruzioni.


4
homebrew/boneyardè obsoleto e verrà sostituito con github.com/Homebrew/homebrew-versions a partire da marzo 2015. Installa tramite brew tap homebrew/versions.
Jakub Holý

12
Con homebrew/versionsvoi andranno nome del pacchetto di versione: brew search node => leafnode node node010 node04 node06 node08 nodebrew .... Quindi brew install node010segui brew link --overwrite node010per installare la versione 0.10 di Node.JS.
Jakub Holý

3
Potrebbe anche essere necessario brew unlink nodeprima di tebrew install node010
chananelb

10

Cordiali saluti, se in precedenza avevi installato la vecchia versione e non hai eseguito brew cleanup(che elimina le vecchie versioni), puoi passare con qualcosa di similebrew switch node 5.7.0

Tutte le versioni installate del nodo possono essere elencate eseguendo brew info nodeols -l /usr/local/Cellar/node/

Vedi il foglio informativo sul comando brew: http://ricostacruz.com/cheatsheets/homebrew.html


Funziona dal 2017/12! Homebrew 1.4.0-17-gc912d26
Jason Harrison,

5

Se ne hai bisogno solo per Node, puoi usarlo nvm. È molto comodo se lavori molto con Node.


Secondo i documenti nvm brew e nvm non sono una combinazione supportata. Ho commentato questo qui. github.com/angular/angular-cli/issues/… Sarei interessato a sentire storie di guerra su questo. Perché in superficie mi sembra che funzioni, nonostante sia "non supportato"
JGFMK,

3

Puoi farlo senza homebrew.

È possibile disinstallare e quindi installare il nodo manualmente.

Devi scaricare la versione corrente in esecuzione. Ecco la lista .

Scarica il nodo-v {your-current-version-number} .tar.gz, estrailo e poi vai alla riga di comando.

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

Per disinstallarlo sudo make uninstall

Quindi scaricare la versione che si desidera installare e seguire gli stessi passaggi sopra.

Da questo post sul blog


+1 questa risposta. FWIW, sono stato solo in grado di copiare la bin/cartella non tarata sul mio PERCORSO per farlo funzionare.
shicholas,

Ancora meglio, è possibile scaricare il file .pkg da lì e fare doppio clic per installarlo.
Henrik N,


3

Ci sono molte risposte qui e in altri luoghi che dicono di usare le versioni homebrew, ma ciò ti dà opzioni molto limitate per quale versione di Node puoi installare.

L'uso di NVM è molto più semplice e consente di passare da una versione all'altra molto facilmente.

homebrew install nvm

Quindi segui le istruzioni nelle avvertenze mkdir ~/.nvme aggiungi due righe al tuo .bash_profileesource .bash_profile

Quindi esegui semplicemente nvm install <version>tutte le versioni di cui hai bisogno. Quindi nvm use <version>per passare.


Questa non è la risposta accettata, ma è l'unica che ha funzionato per me. Vorrei aver provato questo per primo, perché avrei risparmiato molto tempo.
Alex,

1

Immaginiamo di avere la versione 0.12. *. Per installare (downgrade) la versione 0.10 del nodo lanciare la birra in OSX, è necessario:

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

L'elenco di tutte le versioni dei nodi è qui


1

Il modo preferito nel mondo NodeJS è usare lo strumento n

  • Installazione: npm install -g n
  • Installa nodo 8.8.4 n 8.8.4
  • Elenca tutte le versioni dei nodi disponibili localmente e scegline una: n

Sembra simile nvm, ma ho avuto problemi con nvme ho nfunzionato fuori dalla scatola.


0

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

Puoi andare qui e installare la versione che ti serve.

Prima di installare potresti voler eseguire brew unlink nodeper scollegare la versione corrente.


1
Quale sarebbe il vantaggio di farlo in questo modo, rispetto all'utilizzo di brew (come descritto da altre risposte) o alla disinstallazione del nodo e quindi all'installazione manuale (come descritto dalla risposta di @ Terente-Ionut-Alexandru)?
John N

Le versioni di @JohnN brew sono ormai obsolete. Le sue alternative non sono molto facili da capire. Inoltre, è piuttosto complesso attraverso brew per installare la versione esatta.
Anant Simran Singh

La risposta di @ Paweł-Gościcki (la più votata, con 140 voti) sembra molto facile da capire, e per nulla complessa - che corrisponde alla mia recente esperienza con la birra e le diverse versioni delle formule. Il mio punto è che la tua risposta non sembra aggiungere nulla che non sia già stato detto in altre risposte - a meno che non ci sia un motivo per scollegare + installare manualmente anziché disinstallare + installare manualmente, come suggerito da Terente?
John N

@JohnN Questo ovviamente, è facile da capire. Ma sarai limitato dalle opzioni che offre la ricerca. Per es. se vuoi esattamente il nodo 4.4.6 ma la birra fornirà solo un'opzione nodo @ 4. Quindi.
Anant Simran Singh,

Ci sono, credo, 3 risposte decenti alla domanda: (1) usa brew, (2) usa nvm e (3) disinstalla e installa manualmente. Quello che sto cercando di farti fare è spiegare perché la tua risposta si aggiunge a queste risposte esistenti. Perché ritieni che scollegare + l'installazione manuale sia preferibile alle risposte esistenti? In particolare, perché ritieni che * scollegare * + l'installazione manuale sia migliore di * disinstallare * + l'installazione manuale, come suggerisce la risposta di Terente?
John N
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.