如何使用自制软件降级节点或安装特定的先前版本?


228

我正在用啤酒。我安装了节点,使用brew。我想使用早期版本的节点。

在网上,我找到诸如的说明,例如

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

我与此有关的问题是brew似乎没有versions子命令:

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

我是新来的啤酒。我是否需要以versions某种方式启用子命令?我应该改用其他子命令吗?我应该尝试一种完全不同的方法吗?

我正在运行OS X Yosemite(10.10.1);酿造0.9.5。


您要安装哪个版本的node.js?
bmike

我的老板告诉我10.32。我猜他的意思是0.10.32。我现在已经安装了0.12.0。
dave4420 '02

在这一日期,读者应该去这个答案:stackoverflow.com/a/4158763/48136
Brice

Answers:


352

这些天,如果您想安装其他版本,node请按照以下方式进行操作:

首先搜索所需的软件包:

brew search node

这可能会为您带来以下结果:

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

然后安装所需的版本:

brew install node@8

还要记住,您可以同时安装多个节点软件包,但不能同时使用它们。因此,如果您node已经安装了最新/通用软件包,则需要先取消链接:

brew unlink node

然后,您可以链接其他版本:

brew link node@8

对于某些较旧的节点版本(仅用于桶),可能需要将它们与--force--overwrite选项链接:

brew link --force --overwrite node@8

10
最好的答案在这里。
chovy

3
请注意,在您可以成功安装列出的其他版本之一之前(根据上面的说明),系统可能会提示您“取消链接”节点的现有版本。通过“取消链接”,您将保留系统上实际安装的其他版本,但是您安装的(取消链接之后)的版本将成为系统上的“默认”版本。例如,brew unlink node如果您已安装,则可能必须输入brew install node。然后,您可以执行brew install homebrew/versions/node4-lts此操作(应该按照此答案中的说明列出该版本)。
xmnboy

1
而不是homebrew/versions/node06现在homebrew/versions/node6-lts。也做brew link node6-lts
akauppi '16

1
我已经更新了答案,以反映最新的酿造变化。谢谢!
帕维尔Gościcki

2
但是我们如何使用brew安装特定的版本,例如节点8.2.1?
Nadav B

39

这是逐步的。

查看您当前的节点版本

$ node --version

查看可用的节点版本

$ brew search node

取消当前版本的链接

$ brew unlink node

安装任何版本,例如8

$ brew install node@8

链接已安装的版本

$ brew link node@8

再次查看您当前的节点版本

$ node --version

我所需要的
Brian Colavito

如何解决这个问题?brew link node @ 10警告:node @ 10仅限桶装,必须与--force链接。如果您需要首先在PATH中安装此软件,请考虑运行:echo'export PATH =“ / usr / local / opt / node @ 10 / bin:$ PATH“'>>〜/ .bash_profile
vikramvi

在Mac OS 10.13.5上无法正常工作,出现错误stackoverflow.com/questions/53043476/…–
vikramvi

15

由于该公关自制软件/版本这个公关自制,涉及问题的答案brew tap homebrew/versions*-lts包不再起作用。

现在正确的答案是:

brew install node@<version>

<version>0.100.124,等。例如,安装Node.js的V6(截至记者发稿时,最新的LTS版本):

brew install node@6

您可能需要在执行brew update这些命令之前运行,以确保这些新版本的公式可用。如果您node安装了该公式的另一个版本,则还需brew unlink node要先运行。


2
与Mac OS 10.13.5没有工作stackoverflow.com/questions/53043476/...
vikramvi

11

brew versions必须在安装后的某个时候安装brew

$ brew tap homebrew/boneyard

然后,您可以brew versions按照说明进行操作。


4
homebrew/boneyard已过时, 2015年3月起将替换为github.com/Homebrew/homebrew-versions。通过安装brew tap homebrew/versions
JakubHolý15年

12
随着homebrew/versions您将获得软件包的版本名称:brew search node => leafnode node node010 node04 node06 node08 nodebrew ...。这样做brew install node010之后,brew link --overwrite node010再安装0.10版本的Node.JS。
JakubHolý15年

3
您可能还需要brew unlink node在你面前brew install node010
chananelb

10

仅供参考,如果您以前安装了旧版本并且没有运行brew cleanup(这会删除旧版本),则可以使用以下命令进行切换brew switch node 5.7.0

可以通过运行brew info node或列出所有已安装的节点版本ls -l /usr/local/Cellar/node/

请参阅brew命令备忘单:http : //ricostacruz.com/cheatsheets/homebrew.html


从2017/12开始工作!自制软件1.4.0-17-gc912d26
杰森·哈里森

5

如果仅需要Node专用,则可以使用nvm。如果您经常使用Node,这将非常方便。


根据nvm的文档,brew和nvm不受支持。我在这里对此发表了评论。github.com/angular/angular-cli/issues/…我很想听听与此有关的任何战争故事。因为从表面上看,尽管它“不受支持”,但我似乎还是可以使用它
JGFMK

3

您无需自制即可做到。

您可以卸载然后手动安装节点。

您必须下载当前运行的版本。这是清单

下载node-v {your-current-version-number} .tar.gz,解压缩它,然后转到命令行。

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

卸载它 sudo make uninstall

然后下载您要安装的版本,并按照上述相同步骤操作。

从这篇博客文章


+1这个答案。FWIW,我只是能够将未压缩的bin/文件夹复制到我的PATH中才能正常工作。
shicholas

更好的是,您可以从此处下载.pkg文件,然后双击以进行安装。
亨里克·N


3

这里和其他地方有很多答案说要使用自制版本,但是对于您可以安装哪个版本的Node,您的选择非常有限。

使用NVM更加容易,它使您可以轻松地在版本之间进行切换。

homebrew install nvm

然后按照说明在警告- mkdir ~/.nvm并添加两行到你.bash_profilesource .bash_profile

然后只需运行nvm install <version>所需的所有版本。然后nvm use <version>进行切换。


这不是公认的答案,但这是唯一对我有用的答案。我希望我第一次尝试过这个,因为这样可以节省很多时间。
Alex

1

让我们想象一下您的版本为0.12。*。要在OSX中安装(降级)0.10版本的节点抛出brew,您必须:

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

所有节点版本的列表在这里


1

NodeJS世界中的首选方法是使用工具n

  • 安装: npm install -g n
  • 安装节点8.8.4 n 8.8.4
  • 列出所有本地可用的节点版本,然后选择一个: n

似乎与相似nvm,但我对遇到问题nvm,并且n可以立即使用。


0

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

您可以在这里安装所需的版本。

在安装之前,您可能需要运行brew unlink node以取消当前版本的链接。


1
与使用brew(如其他几个答案所述)或卸载节点然后手动安装它(如@ Terente-Ionut-Alexandru的答案所述)相比,以这种方式进行操作有什么好处?
约翰N

到目前为止,@ JohnN brew版本已被弃用,它的替代方案不是很容易理解。另外,通过brew安装确切的版本有点复杂。
Anant Simran Singh

@Paweł-Gościcki的答案(评分最高,获得140票)似乎很容易理解,而且一点也不复杂-这与我最近对啤酒和不同配方奶粉的经验相符。我的观点是,您的答案似乎并未添加到其他答案中尚未提及的内容中,除非有理由像Terente所建议的那样,取消链接+手动安装而不是卸载+手动安装?
约翰N

@JohnN当然,这很容易理解。但是您会受到Brew搜索所提供的选项的限制。例如。如果您确切地想要节点4.4.6,但brew仅提供node @ 4选项。因此。
Anant Simran Singh

我认为,这个问题有3个不错的答案:(1)使用brew,(2)使用nvm,以及(3)卸载并手动安装。我想让您做的是解释为什么您的答案会添加到这些现有答案中。为什么您觉得取消链接+手动安装优于现有的答案?具体来说,您为什么会觉得如Terente的回答所示,*取消链接* +手动安装比**卸载* +手动安装更好?
约翰N
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.