Tại sao không cài đặt phiên bản Node.js mới chính xác trên CentOS 7?


11

Lưu ý: Điều này đã được giải quyết một phần, nhưng cần chú ý hơn một chút. Xem ghi chú ở cuối OP và câu trả lời một phần của @ Digisec.

Tôi đang cố gắng thiết lập Node.js trên CentOS 7, nhưng các lệnh sau không thể cài đặt phiên bản mới nhất. Tôi phải thay đổi mã nào dưới đây để cài đặt phiên bản Node.js mới nhất trên CentOS 7?

Tôi bắt đầu bằng cách gõ node --versionmà kết quả trong v0.12.7. Đây rõ ràng là một phiên bản cũ vì nodejs.orgnói rằng đó v5.6.0là phiên bản ổn định mới nhất.

Vì vậy, sau đó tôi gõ như sau để có được phiên bản mới nhất của node.js:

cd /tmp
curl -sL https://rpm.nodesource.com/setup | bash -

Thiết bị đầu cuối in ra rằng tôi nên gõ phần sau để loại bỏ phiên bản đã lỗi thời của node.js, vì vậy tôi gõ như sau:

yum remove -y nodejs npm

Thiết bị đầu cuối cũng nói nhập kiểu sau để cài đặt phiên bản mới nhất của node.js, vì vậy tôi gõ như sau:

yum install -y nodejs

Nhưng sau đó tôi gõ node --versionlại, và thiết bị đầu cuối trả lời v0.12.7lại, cho thấy các lệnh trước đó, chỉ cần cài đặt lại phiên bản cũ lỗi thời một lần nữa.

Vậy tôi cần làm gì để có được phiên bản ổn định mới nhất của node.js được cài đặt trên máy CentOS 7?


NHỮNG NỖ LỰC ĐANG DIỄN RA:


Theo đề xuất của @ Digisec, tôi đã chạy lại các lệnh trên, nhưng lần này đã ghi lại tất cả đầu ra vào văn bản sau. Xin lưu ý rằng trình tự bây giờ hơi khác khi tôi chạy lại nó, nhưng kết quả là như nhau: như sau:

[root@localhost ~]# node --version
v0.12.7
[root@localhost ~]# cd /tmp
[root@localhost tmp]# curl -sL https://rpm.nodesource.com/setup | bash -

## Installing the NodeSource Node.js 0.10 repo...


## Inspecting system...

+ rpm -q --whatprovides redhat-release || rpm -q --whatprovides centos-release || rpm -q --whatprovides cloudlinux-release || rpm -q --whatprovides sl-release
+ uname -m

## Confirming "el7-x86_64" is supported...

+ curl -sLf -o /dev/null 'https://rpm.nodesource.com/pub_0.10/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

## Downloading release setup RPM...

+ mktemp
+ curl -sL -o '/tmp/tmp.ePYEdVWXQH' 'https://rpm.nodesource.com/pub_0.10/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

## Installing release setup RPM...

+ rpm -i --nosignature --force '/tmp/tmp.ePYEdVWXQH'

## Cleaning up...

+ rm -f '/tmp/tmp.ePYEdVWXQH'

## Checking for existing installations...

+ rpm -qa 'node|npm' | grep -v nodesource

## Run `yum install -y nodejs` (as root) to install Node.js 0.10 and npm.
## You may also need development tools to build native addons:
##   `yum install -y gcc-c++ make`

[root@localhost tmp]# yum remove -y nodejs npm
Loaded plugins: fastestmirror, langpacks
No Match for argument: npm
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.42-1nodesource.el7.centos will be erased
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================================
 Package                             Arch                                Version                                                     Repository                                Size
====================================================================================================================================================================================
Removing:
 nodejs                              x86_64                              0.10.42-1nodesource.el7.centos                              @nodesource                               16 M

Transaction Summary
====================================================================================================================================================================================
Remove  1 Package

Installed size: 16 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                         1/1 
  Verifying  : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                         1/1 

Removed:
  nodejs.x86_64 0:0.10.42-1nodesource.el7.centos                                                                                                                                    

Complete!
[root@localhost tmp]# yum install -y nodejs
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.gtlib.gatech.edu
 * epel: mirror.sfo12.us.leaseweb.net
 * extras: dallas.tx.mirror.xygenhosting.com
 * updates: linux.mirrors.es.net
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.42-1nodesource.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================================
 Package                             Arch                                Version                                                      Repository                               Size
====================================================================================================================================================================================
Installing:
 nodejs                              x86_64                              0.10.42-1nodesource.el7.centos                               nodesource                              4.5 M

Transaction Summary
====================================================================================================================================================================================
Install  1 Package

Total download size: 4.5 M
Installed size: 16 M
Downloading packages:
nodejs-0.10.42-1nodesource.el7.centos.x86_64.rpm                                                                                                             | 4.5 MB  00:00:09     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                         1/1 
  Verifying  : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                         1/1 

Installed:
  nodejs.x86_64 0:0.10.42-1nodesource.el7.centos                                                                                                                                    

Complete!
[root@localhost tmp]# node --version
v0.12.7
[root@localhost tmp]#   

Sau đó, theo câu trả lời của @ Digisec , tiếp theo tôi đã thử cách sau, nhưng kết quả vẫn không cài đặt được phiên bản phù hợp , như bạn có thể thấy từ đầu ra thiết bị đầu cuối sau:

[root@localhost tmp]# curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -

## Installing the NodeSource Node.js 5.x repo...


## Inspecting system...

+ rpm -q --whatprovides redhat-release || rpm -q --whatprovides centos-release || rpm -q --whatprovides cloudlinux-release || rpm -q --whatprovides sl-release
+ uname -m

## Confirming "el7-x86_64" is supported...

+ curl -sLf -o /dev/null 'https://rpm.nodesource.com/pub_5.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

## Downloading release setup RPM...

+ mktemp
+ curl -sL -o '/tmp/tmp.NEM1bxM9WB' 'https://rpm.nodesource.com/pub_5.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'

## Installing release setup RPM...

+ rpm -i --nosignature --force '/tmp/tmp.NEM1bxM9WB'

## Cleaning up...

+ rm -f '/tmp/tmp.NEM1bxM9WB'

## Checking for existing installations...

+ rpm -qa 'node|npm' | grep -v nodesource

## Run `yum install -y nodejs` (as root) to install Node.js 5.x and npm.
## You may also need development tools to build native addons:
##   `yum install -y gcc-c++ make`

[root@localhost tmp]# yum remove -y nodejs npm
Loaded plugins: fastestmirror, langpacks
No Match for argument: npm
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.42-1nodesource.el7.centos will be erased
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================================
 Package                             Arch                                Version                                                     Repository                                Size
====================================================================================================================================================================================
Removing:
 nodejs                              x86_64                              0.10.42-1nodesource.el7.centos                              @nodesource                               16 M

Transaction Summary
====================================================================================================================================================================================
Remove  1 Package

Installed size: 16 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                             1/1 
  Verifying  : nodejs-0.10.42-1nodesource.el7.centos.x86_64                                                                                                                             1/1 

Removed:
  nodejs.x86_64 0:0.10.42-1nodesource.el7.centos                                                                                                                                    

Complete!
[root@localhost tmp]# yum install -y nodejs
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.gtlib.gatech.edu
 * epel: mirror.sfo12.us.leaseweb.net
 * extras: dallas.tx.mirror.xygenhosting.com
 * updates: linux.mirrors.es.net
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.42-1nodesource.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================================
 Package                             Arch                                Version                                                      Repository                               Size
====================================================================================================================================================================================
Installing:
 nodejs                              x86_64                              0.10.42-1nodesource.el7.centos                               nodesource                              4.5 M

Transaction Summary
====================================================================================================================================================================================
Install  1 Package

Total download size: 4.5 M
Installed size: 16 M
Downloading packages:
nodejs-0.10.42-1nodesource.el7 FAILED                                          
https://rpm.nodesource.com/pub_5.x/el/7/x86_64/nodejs-0.10.42-1nodesource.el7.centos.x86_64.rpm: [Errno 14] HTTPS Error 404 - Not Found           ]  0.0 B/s |    0 B  --:--:-- ETA 
Trying other mirror.
To address this issue please refer to the below knowledge base article 

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please create a bug on https://bugs.centos.org/



Error downloading packages:
  nodejs-0.10.42-1nodesource.el7.centos.x86_64: [Errno 256] No more mirrors to try.

[root@localhost tmp]# yum install -y nodejs
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.gtlib.gatech.edu
 * epel: mirror.sfo12.us.leaseweb.net
 * extras: dallas.tx.mirror.xygenhosting.com
 * updates: linux.mirrors.es.net
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.42-1nodesource.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================================
 Package                             Arch                                Version                                                      Repository                               Size
====================================================================================================================================================================================
Installing:
 nodejs                              x86_64                              0.10.42-1nodesource.el7.centos                               nodesource                              4.5 M

Transaction Summary
====================================================================================================================================================================================
Install  1 Package

Total download size: 4.5 M
Installed size: 16 M
Downloading packages:
No Presto metadata available for nodesource  
nodejs-0.10.42-1nodesource.el7 FAILED    
https://rpm.nodesource.com/pub_5.x/el/7/x86_64/nodejs-0.10.42-1nodesource.el7.centos.x86_64.rpm: [Errno 14] HTTPS Error 404 - Not Found           ]  0.0 B/s |    0 B  --:--:-- ETA 
Trying other mirror.
To address this issue please refer to the below knowledge base article 

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please create a bug on https://bugs.centos.org/



Error downloading packages:
  nodejs-0.10.42-1nodesource.el7.centos.x86_64: [Errno 256] No more mirrors to try.

[root@localhost tmp]# node --version
v0.12.7
[root@localhost tmp]# 

Sau đó tôi đã truy cập bài viết cơ sở kiến ​​thức được tham chiếu bởi nhật ký lỗi ở trên , nhưng thấy rằng tôi không thể truy cập toàn bộ bài viết vì tôi không phải là khách hàng của Red Had.


GIẢI PHÁP PHẦN:


@Digisec đã giải quyết một phần điều này bằng cách hiển thị cách cài đặt phiên bản mới, nhưng chúng tôi vẫn không thể xóa phiên bản cũ, điều này sẽ dẫn đến nguy cơ xung đột trong tương lai. Những bước cần thực hiện để loại bỏ phiên bản cũ để cài đặt mới có thể được sạch sẽ và hoàn thành?

Tôi tìm thấy url tar cho phiên bản cũ v0.12.7 tại liên kết này . Và @Digisec 'cũng đề nghị đọc liên kết khác này, gợi ý sử dụng lệnhmake uninstall . Tôi có cảm giác rằng chỉ có thể có năm hoặc mười lệnh để nhập vào thiết bị đầu cuối để loại bỏ v0.12.7 cũ và cài đặt lại phiên bản mới của nodejs. Các lệnh cần thiết là gì?

Tôi dường như đã tìm thấy ba tệp tar trên máy CentOS 7 có liên quan đến nodejs v0.12.7 bằng cách sử dụng các lệnh đầu cuối sau:

[root@localhost ~]# cd /
[root@localhost /]# find . -type f -iname "*.tar"
find: ‘./run/user/1000/gvfs’: Permission denied
./opt/node-v0.12.7/deps/npm/node_modules/tar/test/dir-normalization.tar
./opt/node-v0.12.7/deps/npm/test/fixtures/gitignore-and-npmignore-2.tar
./opt/node-v0.12.7/deps/npm/test/fixtures/gitignore-and-npmignore.tar
./usr/local/lib/node_modules/npm/test/fixtures/gitignore-and-npmignore-2.tar
./usr/local/lib/node_modules/npm/test/fixtures/gitignore-and-npmignore.tar
./usr/local/lib/node_modules/npm/node_modules/tar/test/dir-normalization.tar
[root@localhost /]# 

Lưu ý rằng có thêm ba tệp tar được đánh dấu node_modulescó mối quan hệ v0.12.7không rõ ràng.

Những lệnh cụ thể nào tôi chạy để gỡ cài đặt an toàn v0.12.7và xóa tất cả các v0.12.7tệp tar liên quan khỏi máy?


Nó sẽ là một ý tưởng tốt để gửi tất cả đầu ra là tốt. Điều đó sẽ giúp xem những gì đang xảy ra để có thể giúp bạn tốt hơn.
Digisec

@Digisec Tôi chạy lại các lệnh và sau đó thêm đầu ra hoàn chỉnh vào OP, như bạn yêu cầu. Tôi có thể làm gì khác để giúp cô lập vấn đề không?
CodeMed

FWIW bây giờ bạn có thể gỡ cài đặt phiên bản cũ của NodeJS yum remove -y nodejs.
avazula

Câu trả lời:


7

Tôi chỉ kiểm tra các liên kết bạn có được điều này từ. Bạn đang cài đặt, cụ thể, phiên bản 0.10hoặc cố gắng ít nhất, nhưng bạn có phiên bản mới hơn trong repo đang được cài đặt. Bạn phải tuân theo thiết lập cho nút v5.

curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -

PS : để tham khảo trong tương lai, hãy đảm bảo bạn đọc các trang web rất cẩn thận, đặc biệt là khi chạy các lệnh như root .

EDIT: Được rồi, có vẻ như bạn đã thêm repo chính xác. Nhìn vào repo, các gói của bạn ở đó nhưng hệ thống đang tìm phiên bản sai. Tại thời điểm này, tôi sẽ đề nghị.

yum clean all && yum update

Điều đó sẽ làm sạch repo lưu trữ và lấy từ xa.

Trả lời: Sau khi hoàn thành công việc chat, đây là câu trả lời chính xác cho bạn. nodejs v5cài đặt tốt. Trước đây bạn đã biên dịch nodejs v0.12thủ công, đó không phải là một ý tưởng tốt trên các bản phân phối nhị phân, bởi vì bạn sẽ kết thúc ở vị trí này.

which node

trả lại

/usr/local/bin/node

trong khi

/usr/bin/node

Trả lời đúng câu trả lời của v5.x.

Tại thời điểm này, bạn có nhiều tùy chọn để sửa nó, nhưng tôi muốn giới thiệu 2.

  • Cách 1 : Đây là cách dễ dàng. Bạn có thể chỉnh sửa .bashrcvà thêm một aliasđiểm sẽnode -> /usr/bin/node . Điều này là đơn giản như thêm alias node="/usr/bin/node". Điều này sẽ gọi phiên bản chính xác mỗi lần nhưng tôi không thể đảm bảo rằng nó sẽ không gây ra xung đột trong tương lai với các thư viện.
  • Tùy chọn 2 : Đây là cách khó, nhưng nó sẽ khắc phục nó. Đầu tiên, thanh lọc với yumcác nodejs được cài đặt trên hệ thống. Thứ hai, lấy tarball cho phiên bản bạn đã biên dịch, ./configuregỡ bỏ nó và gỡ cài đặt nó. Bước này, bạn có thể tìm thấy trực tuyến một cách dễ dàng. Cuối cùng, cài đặt lại nodejsthông qua yum, và điều đó sẽ khắc phục vấn đề của bạn.

Cảm ơn bạn đã xem xét vấn đề này, nhưng điều này vẫn chưa khắc phục được hoàn toàn vấn đề. Vui lòng xem đầu ra thiết bị đầu cuối bổ sung mà tôi đã thêm vào cuối OP ghi lại kết quả thử đề xuất của bạn. Tôi có thể thử cái gì khác?
CodeMed 13/2/2016

@CodeMed Tôi đã cập nhật câu trả lời và sẽ là một ý tưởng tốt hơn để tham gia vào cuộc trò chuyện.
Digisec

Điều đó đã không giải quyết vấn đề. Nếu bạn vẫn sẵn sàng trò chuyện, tôi đã tạo phòng sau: chat.stackexchange.com/rooms/35670/ mẹo
CodeMed 13/2/2016

@CodeMed chúc may mắn với việc khắc phục vấn đề của bạn.
Digisec

Bạn có sẵn sàng để giải thích về lựa chọn 2 của bạn? Hay tôi nên đăng một câu hỏi riêng?
CodeMed 13/2/2016

4

Tôi đã làm gì:

rm -f /etc/yum.repose.d/nodesource-el*
cuộn tròn -sL https://rpm.nodesource.com/setup_7.x | bash -
yum cài đặt -y nodejs
nút đảo ngược

và tôi đã nhận được:

v7.2.0

Cảm ơn bạn! Đây là giải pháp duy nhất giúp tôi.
626

3

CentOS 7.2, NodeJS 6.7.0 ( https://nodejs.org/doad/release/v6.7.0/ ). Cài đặt thủ công

wget https://nodejs.org/download/release/v6.7.0/node-v6.7.0.tar.gz
./configure
make
make install

gỡ cài đặt make uninstall


1

Tôi đã thử cài đặt nút từ cùng một NodeSource RepoInstaller . Đối với cách của tôi, vấn đề được giải quyết bằng cách kích hoạt nodesourcerepo. Thay đổi enabled=0để enabled=1và tất cả nên công trình.

[root@web ~]# cat /etc/yum.repos.d/nodesource-el.repo
[nodesource]
name=Node.js Packages for Enterprise Linux 7 - $basearch
baseurl=https://rpm.nodesource.com/pub_6.x/el/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL

0

Tôi cũng gặp một số vấn đề khi cài đặt các phiên bản mới của npm và nodejs trên CentOS 7.

Tôi đã làm theo các hướng dẫn trên trang web nodejs sau đó cố gắng cài đặt npm. Điều này hóa ra là vấn đề (npm đã được cài đặt từ EPEL). Kho lưu trữ Nodesource không cung cấp các gói riêng cho npm như trường hợp của EPEL. Thay vào đó, mọi thứ đều nằm trong một gói 'nodejs'. Vì vậy, một khi bạn cài đặt nodejs từ Nodesource, bây giờ bạn đã tự động cài đặt npm và sẵn sàng để đi vào phiên bản cập nhật.


0

Tôi đã vật lộn với cùng một vấn đề, cũng yum clean allkhông rm -f /etc/yum.repos.d/nodesource*giúp được gì. Sau đó, tôi thấy rằng yum đã sử dụng kho lưu trữ Epel để cài đặt nút nên tôi đã tắt nó tạm thời (theo /etc/yum.repos.d/epel.repobộ enabled=0) và sau đó

curl -sL https://rpm.nodesource.com/setup_8.x | bash -
yum install nodejs

0

Tôi cũng đã phải đối mặt với vấn đề tương tự.

Giải pháp: 1. Đi đến /tmpvị trí xóa tất cả các tệp và thư mục.

cd /tmp
rm -rf *

2. bây giờ bạn có thể sử dụng các lệnh dưới đây để cài đặt NodeJs

curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
sudo yum install -y nodejs
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.