Làm cách nào để hạ cấp nút hoặc cài đặt phiên bản cụ thể trước đó bằng homebrew?


229

Tôi đang sử dụng bia. Tôi đã cài đặt nút, sử dụng brew. Tôi muốn sử dụng một phiên bản trước đó của nút.

Trực tuyến, tôi tìm thấy các hướng dẫn như , ví dụ :

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

Vấn đề tôi gặp phải ở đây là brewdường như không có một versionstiểu ban:

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

Tôi mới làm bia. Tôi có cần phải kích hoạt versionstiểu ban bằng cách nào đó không? Tôi có nên sử dụng một tiểu ban khác thay thế? Có một phương pháp hoàn toàn khác tôi nên thử?

Tôi đang chạy OS X Yosemite (10.10.1); ủ 0,9,5.


Phiên bản nào của node.js mà bạn đang tìm cách cài đặt?
bmike

Ông chủ của tôi nói với tôi 10,32. Tôi đoán anh ta có nghĩa là 0.10.32. Tôi đã cài đặt 0.12.0 ngay bây giờ.
dave4420

Vào ngày này, người đọc nên đi đến câu trả lời này: stackoverflow.com/a/4158763/48136
Brice

Câu trả lời:


352

Ngày nay, nếu bạn muốn cài đặt một phiên bản khác, nodebạn hãy làm theo cách này:

Tìm kiếm đầu tiên cho gói mong muốn của bạn:

brew search node

Điều này có thể cung cấp cho bạn các kết quả sau:

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

Và sau đó cài đặt phiên bản mong muốn:

brew install node@8

Cũng nên nhớ rằng bạn có thể cài đặt nhiều hơn 1 nút cùng một lúc, nhưng bạn không thể có sẵn chúng cùng một lúc. Vì vậy, nếu bạn nodeđã cài đặt gói mới nhất / chung chung , trước tiên bạn cần hủy liên kết nó:

brew unlink node

Và sau đó bạn có thể liên kết một phiên bản khác:

brew link node@8

Đối với một số phiên bản nút cũ hơn (chỉ dành cho keg), có thể phải liên kết chúng với các tùy chọn --force--overwrite:

brew link --force --overwrite node@8

10
câu trả lời tốt nhất ở đây
chovy

3
Lưu ý rằng bạn có thể được nhắc "hủy liên kết" một phiên bản nút hiện có trước khi bạn có thể cài đặt thành công một trong những phiên bản khác được liệt kê (theo hướng dẫn ở trên). Bằng cách "hủy liên kết", bạn sẽ để phiên bản khác được cài đặt trên hệ thống của mình nhưng phiên bản bạn cài đặt (sau khi hủy liên kết) sẽ trở thành phiên bản "mặc định" trên hệ thống của bạn. Ví dụ, bạn có thể phải gõ brew unlink nodenếu bạn đã cài đặt brew install node. Sau đó, bạn có thể làm brew install homebrew/versions/node4-lts(mà bạn sẽ thấy là một phiên bản được liệt kê theo hướng dẫn trong câu trả lời này).
xmnboy

1
Thay vì homebrew/versions/node06bây giờ homebrew/versions/node6-lts. Cũng làm brew link node6-lts.
akauppi

1
Tôi đã cập nhật câu trả lời của mình để phản ánh những thay đổi mới nhất của bia. Cảm ơn!
Paweł Gościcki

2
nhưng làm thế nào chúng ta có thể cài đặt một phiên bản cụ thể như nút 8.2.1 bằng cách sử dụng brew?
Nadav B

39

Đây là từng bước một.

Để xem phiên bản nút hiện tại của bạn

$ node --version

Để xem các phiên bản nút có sẵn

$ brew search node

Để hủy liên kết khỏi phiên bản hiện tại

$ brew unlink node

Cài đặt bất kỳ phiên bản nào, ví dụ 8

$ brew install node@8

Để liên kết phiên bản đã cài đặt

$ brew link node@8

Để xem phiên bản nút hiện tại của bạn (một lần nữa)

$ node --version

Chỉ cần những gì tôi cần
Brian Colavito

Làm thế nào để giải quyết vấn đề này ? nút liên kết brew @ 10 Cảnh báo: nút @ 10 chỉ có keg và phải được liên kết với --force Nếu trước tiên bạn cần có phần mềm này trong PATH của mình thay vì xem xét việc chạy: echo 'export PATH = "/ usr / local / opt / nút @ 10 / bin: $ PATH "'>> ~ / .bash_profile
vikramvi

không hoạt động trên Mac OS 10.13.5, gặp lỗi stackoverflow.com/questions/53043476/ trên
vikramvi

15

Kể từ PR này cho homebrew / phiên bảnPR này cho homebrew , các câu trả lời liên quan brew tap homebrew/versionshoặc *-ltsgói không còn hoạt động.

Câu trả lời đúng là:

brew install node@<version>

Trong trường hợp <version>0.10, 0.12, 4, vv Ví dụ, để cài đặt Node.js v6 (như các văn bản này, phiên bản mới nhất LTS):

brew install node@6

Bạn có thể cần chạy brew updatetrước các lệnh này để đảm bảo rằng các công thức phiên bản mới này có sẵn. Nếu bạn đã nodecài đặt phiên bản khác của công thức, bạn cũng cần chạy brew unlink nodetrước.


2
không hoạt động với Mac OS 10.13.5 stackoverflow.com/questions/53043476/ từ
vikramvi

11

brew versionsphải được cài đặt tại một số điểm sau khi bạn cài đặt brew.

$ brew tap homebrew/boneyard

Sau đó, bạn có thể sử dụng brew versionslệnh như hướng dẫn giả định.


4
homebrew/boneyardđã lỗi thời và sẽ được thay thế bằng github.com/Homebrew/homebrew-versions kể từ tháng 3 năm 2015. Cài đặt qua brew tap homebrew/versions.
Jakub Holý

12
Với homebrew/versionsbạn sẽ nhận được tên phiên bản của gói : brew search node => leafnode node node010 node04 node06 node08 nodebrew .... Vì vậy, làm brew install node010theo sau brew link --overwrite node010để cài đặt phiên bản 0.10 của Node.JS.
Jakub Holý

3
Bạn cũng có thể cần brew unlink nodetrước bạnbrew install node010
chananelb

10

FYI, nếu trước đây bạn đã cài đặt phiên bản cũ và không chạy brew cleanup(xóa phiên bản cũ), bạn có thể chuyển đổi bằng thứ gì đó nhưbrew switch node 5.7.0

Tất cả các phiên bản cài đặt của nút có thể được liệt kê bằng cách chạy brew info nodehoặcls -l /usr/local/Cellar/node/

Xem bảng cheat lệnh brew: http://ricostacruz.com/cheatsheets/homebrew.html


Hoạt động kể từ 2017/12! Homebrew 1.4.0-17-gc912d26
Jason Harrison

5

Nếu bạn cần nó chỉ dành riêng cho Node, bạn có thể sử dụng nvm. Sẽ rất thuận tiện nếu bạn làm việc với Node rất nhiều.


Theo nvm docs brew và nvm không phải là một combo được hỗ trợ. Tôi nhận xét về điều này ở đây. github.com/angular/angular-cli/issues/ Vì tôi muốn nghe bất kỳ câu chuyện chiến tranh nào về điều này. Bởi vì trên bề mặt tôi dường như có tác dụng này mặc dù thực tế nó "không được hỗ trợ"
JGFMK

3

Bạn có thể làm điều đó mà không cần homebrew.

Bạn có thể gỡ cài đặt và sau đó cài đặt nút thủ công.

Bạn phải tải xuống phiên bản đang chạy hiện tại của bạn. Đây là danh sách .

Tải xuống nút-v {your-current-version-number} .tar.gz, giải nén nó và sau đó đi đến dòng lệnh.

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

Để gỡ cài đặt nó sudo make uninstall

Sau đó tải xuống phiên bản bạn muốn cài đặt và làm theo các bước tương tự ở trên.

Từ bài viết trên blog này


+1 câu trả lời này. FWIW, tôi chỉ có thể sao chép bin/thư mục chưa được chỉnh sửa vào PATH của tôi để làm việc này.
shicholas

Thậm chí tốt hơn, bạn có thể tải xuống tệp .pkg từ đó và nhấp đúp vào tệp để cài đặt.
Henrik N


3

Có rất nhiều câu trả lời ở đây và những nơi khác nói rằng sử dụng phiên bản homebrew, nhưng điều đó cung cấp cho bạn các tùy chọn rất hạn chế cho phiên bản Node nào bạn có thể cài đặt.

Sử dụng NVM dễ dàng hơn nhiều và nó cho phép bạn chuyển đổi giữa các phiên bản rất dễ dàng.

homebrew install nvm

Sau đó làm theo các hướng dẫn trong phần cẩn thận - mkdir ~/.nvmvà thêm hai dòng vào của bạn .bash_profilesource .bash_profile

Sau đó, chỉ cần chạy nvm install <version>cho tất cả các phiên bản bạn cần. Sau đó nvm use <version>để chuyển đổi.


Đây không phải là câu trả lời được chấp nhận, nhưng nó là người duy nhất làm việc cho tôi. Tôi ước tôi đã thử cái này trước, vì tôi sẽ tiết kiệm được nhiều thời gian.
Alex

1

Hãy hình dung rằng bạn có phiên bản 0.12. *. Để cài đặt (hạ cấp) phiên bản 0.10 của nút ném bia trong OSX, bạn phải:

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

Danh sách tất cả các phiên bản nút ở đây


1

Cách ưa thích trong thế giới NodeJS là sử dụng công cụ n

  • Cài đặt: npm install -g n
  • Cài đặt nút 8.8.4 n 8.8.4
  • Liệt kê tất cả các phiên bản nút có sẵn tại địa phương của bạn và chọn một: n

Nó có vẻ tương tự nvm, nhưng tôi có vấn đề với nvm, và nlàm việc ra khỏi hộp.


0

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

Bạn có thể vào đây và cài đặt phiên bản bạn cần.

Trước khi cài đặt, bạn có thể muốn chạy brew unlink nodeđể hủy liên kết phiên bản hiện tại.


1
Lợi thế của việc làm theo cách này là gì, trái ngược với việc sử dụng brew (như một số câu trả lời khác mô tả) hoặc gỡ cài đặt nút và sau đó cài đặt thủ công (như câu trả lời của @ Terente-I Muff-Alexandru)?
John N

Các phiên bản @JohnN brew không được dùng nữa. Các lựa chọn thay thế của chúng tôi không dễ hiểu lắm. Ngoài ra, nó khá phức tạp thông qua brew để cài đặt phiên bản chính xác.
Anant Simran Singh

Câu trả lời của @ Paweł-Gościcki (được đánh giá cao nhất, với 140 phiếu) có vẻ rất dễ hiểu và không hề phức tạp - phù hợp với kinh nghiệm gần đây của tôi với bia và các phiên bản công thức khác nhau. Quan điểm của tôi là câu trả lời của bạn dường như không thêm vào bất cứ điều gì chưa được nói trong các câu trả lời khác - trừ khi có lý do để hủy liên kết + cài đặt thủ công thay vì gỡ cài đặt + cài đặt thủ công, như Terente đề xuất?
John N

@ John Điều đó thật dễ hiểu. Nhưng bạn sẽ bị giới hạn bởi các tùy chọn mà tìm kiếm bia cung cấp. Ví dụ. nếu bạn muốn nút 4.4.6 chính xác nhưng brew sẽ chỉ cung cấp tùy chọn nút @ 4. Vì thế.
Anant Simran Singh

Tôi nghĩ, có 3 câu trả lời hợp lý cho câu hỏi: (1) sử dụng brew, (2) sử dụng nvm và (3) gỡ cài đặt và cài đặt thủ công. Những gì tôi đang cố gắng để bạn làm là giải thích lý do tại sao câu trả lời của bạn thêm vào những câu trả lời hiện có này. Tại sao bạn cảm thấy rằng hủy liên kết + cài đặt thủ công là thích hợp hơn với các câu trả lời hiện có? Cụ thể, tại sao bạn cảm thấy rằng * hủy liên kết * + cài đặt thủ công tốt hơn * gỡ cài đặt * + cài đặt thủ công, như câu trả lời của Terente cho thấy?
John N
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.