Mengapa Node.js versi baru yang benar tidak dapat diinstal pada CentOS 7?

12

Catatan: Ini sebagian diselesaikan, tetapi perlu sedikit lebih banyak perhatian. Lihat catatan di bagian bawah OP, dan jawaban parsial @ Digisec.

Saya mencoba mengatur Node.js pada CentOS 7, tetapi perintah berikut gagal menginstal versi terbaru. Apa yang harus saya ubah dalam kode di bawah ini untuk menginstal versi terbaru Node.js di CentOS 7?

Saya mulai dengan mengetik node --versionyang menghasilkan v0.12.7. Ini jelas merupakan versi lama karena nodejs.orgmengatakan itu v5.6.0adalah versi stabil terbaru.

Jadi saya ketik yang berikut ini untuk mendapatkan versi terbaru dari node.js:

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

Terminal mencetak bahwa saya harus mengetik yang berikut untuk menghapus versi node.js yang sudah usang, jadi saya ketik yang berikut ini:

yum remove -y nodejs npm

Terminal juga mengatakan untuk mengetik berikut ini untuk menginstal versi terbaru dari node.js, jadi saya ketik yang berikut:

yum install -y nodejs

Tapi kemudian saya mengetik node --versionlagi, dan terminal membalas dengan v0.12.7lagi, menunjukkan bahwa perintah sebelumnya, cukup menginstal ulang versi lama yang sudah usang.

Jadi apa yang harus saya lakukan untuk mendapatkan versi stable terbaru dari node.js yang terinstal pada mesin CentOS 7?


UPAYA YANG TERJADI:


Sesuai saran @ Digisec, saya menjalankan kembali perintah di atas, tetapi kali ini mencatat semua output ke dalam teks berikut. Harap perhatikan bahwa urutannya sedikit berbeda sekarang karena saya menjalankannya lagi, tetapi hasilnya sama, sebagai berikut:

[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]#   

Kemudian, sesuai jawaban @ Digisec , saya selanjutnya mencoba yang berikut, tetapi hasilnya masih gagal untuk menginstal versi yang tepat , seperti yang Anda lihat dari output terminal berikut:

[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]# 

Saya kemudian mengunjungi artikel basis pengetahuan yang dirujuk oleh log kesalahan di atas , tetapi menemukan bahwa saya tidak dapat mengakses artikel lengkap karena saya bukan pelanggan Red Had.


SOLUSI parsial:


@Digisec menyelesaikan sebagian ini dengan menunjukkan cara menginstal versi baru, tetapi kami masih tidak dapat menghapus versi yang lama, yang akan meninggalkan risiko konflik ke depan. Langkah apa yang perlu diambil untuk menghapus versi lama agar instalasi baru dapat bersih dan lengkap?

Saya menemukan url tar untuk versi lama v0.12.7 di tautan ini . Dan @Digisec 'juga menyarankan untuk membaca tautan lain ini, yang menyarankan menggunakan perintahmake uninstall . Saya mendapatkan pengertian bahwa mungkin hanya ada lima atau sepuluh perintah untuk mengetik di terminal untuk menghapus v0.12.7 lama dan menginstal ulang versi baru dari nodejs. Apa saja perintah yang diperlukan?

Saya tampaknya telah menemukan tiga file tar pada mesin CentOS 7 yang terkait dengan nodejs v0.12.7 menggunakan perintah terminal berikut:

[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 /]# 

Perhatikan bahwa ada tiga file tar tambahan node_modulesyang ditandai hubungannya v0.12.7tidak jelas.

Apa perintah khusus yang saya jalankan untuk menghapus v0.12.7dan menghapus semua v0.12.7file tar terkait dengan aman dari mesin?

CodeMed
sumber
Ini akan menjadi ide yang bagus untuk memposting semua output juga. Itu akan membantu untuk melihat apa yang terjadi untuk dapat lebih membantu Anda.
Digisec
@Digisec Saya menjalankan kembali perintah dan kemudian menambahkan output lengkap ke OP, seperti yang Anda minta. Bisakah saya melakukan hal lain untuk membantu mengisolasi masalah?
CodeMed
FWIW Anda sekarang dapat menghapus versi lama NodeJS dengan yum remove -y nodejs.
avazula

Jawaban:

7

Saya baru saja memeriksa tautan tempat Anda mendapatkan ini. Anda menginstal, secara khusus, versi 0.10, atau setidaknya mencoba, tetapi Anda memiliki versi yang lebih baru di repo yang sedang diinstal. Anda harus mengikuti pengaturan untuk simpul v5.

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

PS : untuk referensi di masa mendatang, pastikan Anda membaca situs dengan sangat hati-hati terutama ketika menjalankan perintah sebagai root .

EDIT: Baiklah, sepertinya Anda menambahkan repo dengan benar. Melihat ke repo, paket Anda ada di sana tetapi sistem mencari versi yang salah. Pada titik ini, saya akan menyarankan.

yum clean all && yum update

Itu akan membersihkan repo dan ambil cache dari jarak jauh.

Jawaban: Setelah pekerjaan yang kami lakukan selama ini chat, inilah jawaban yang tepat untuk Anda. nodejs v5dipasang dengan baik. Anda sebelumnya dikompilasi nodejs v0.12secara manual, yang bukan ide yang baik pada distro biner, karena Anda akan berakhir di posisi ini.

which node

dikembalikan

/usr/local/bin/node

sementara

/usr/bin/node

mengembalikan jawaban yang benar dari v5.x.

Pada titik ini Anda memiliki beberapa opsi untuk memperbaikinya, tetapi saya akan merekomendasikan 2.

  • Opsi 1 : Ini adalah jalan keluar yang mudah. Anda dapat mengedit .bashrcdan menambahkan aliasyang akan menunjuk node -> /usr/bin/node. Ini sesederhana menambahkan alias node="/usr/bin/node". Ini akan memanggil versi yang benar setiap kali tetapi saya tidak dapat menjamin bahwa itu tidak akan menyebabkan konflik di masa depan dengan perpustakaan.
  • Opsi 2 : Ini cara yang sulit, tetapi itu akan memperbaikinya. Pertama, bersihkan dengan yumnodejs yang diinstal pada sistem. Kedua, dapatkan tarball untuk versi yang telah Anda kompilasi, lepaskan, ./configuredan hapus instalannya. Langkah ini, Anda dapat menemukan online dengan mudah. Akhirnya, instal ulang nodejsmelalui yum, dan yang harus memperbaiki masalah Anda.
Digisec
sumber
Terima kasih telah melihat ini, tetapi ini masih belum sepenuhnya memperbaiki masalah. Silakan lihat output terminal tambahan yang saya tambahkan di akhir OP yang mendokumentasikan hasil dari mencoba saran Anda. Apa lagi yang bisa saya coba?
CodeMed
@CodeMed Saya memperbarui jawabannya dan itu akan menjadi ide yang lebih baik untuk masuk ke obrolan.
Digisec
Itu tidak menyelesaikan masalah. Jika Anda masih mau mengobrol, saya membuat kamar berikut: chat.stackexchange.com/rooms/35670/…
CodeMed
@CodeMed semoga berhasil dengan memperbaiki masalah Anda.
Digisec
Apakah Anda bersedia menguraikan opsi 2 Anda? Atau haruskah saya mengirim pertanyaan terpisah?
CodeMed
4

Apa yang saya lakukan:

rm -f /etc/yum.repos.d/nodesource-el*
curl -sL https://rpm.nodesource.com/setup_7.x | pesta -
yum instal -y nodejs
simpul --versi

dan saya mendapat:

v7.2.0
Sergio
sumber
Terima kasih! Ini adalah satu-satunya solusi yang membantu saya.
626
1

Saya mencoba menginstal node dari NodeSource RepoInstaller yang sama . Untuk cara saya masalah diselesaikan dengan nodesourcerepo yang diaktifkan . Ubah enabled=0ke enabled=1dan semua harus berfungsi.

[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
BioQwer
sumber
0

Saya juga mengalami beberapa masalah untuk mendapatkan versi baru npm dan nodejs yang diinstal pada CentOS 7.

Saya mengikuti petunjuk di situs nodejs kemudian mencoba menginstal npm. Ini ternyata menjadi masalah (npm menginstal dari EPEL). Repositori Nodesource tidak menyediakan paket individual untuk npm seperti halnya EPEL. Sebaliknya semuanya ada di dalam satu paket 'nodejs'. Jadi, begitu Anda menginstal nodejs dari Nodesource, Anda sekarang telah menginstal npm secara otomatis dan siap untuk melanjutkan ke versi yang diperbarui.

Ben
sumber
0

Saya berjuang dengan masalah yang sama, juga yum clean alltidak rm -f /etc/yum.repos.d/nodesource*membantu. Kemudian saya menemukan bahwa yum menggunakan repositori Epel untuk menginstal node jadi saya menonaktifkannya sementara (dalam /etc/yum.repos.d/epel.reposet enabled=0) dan setelah itu

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

Saya juga menghadapi masalah yang sama.

Solusi: 1. Buka /tmplokasi hapus semua file dan folder.

cd /tmp
rm -rf *

2. sekarang Anda dapat menggunakan perintah di bawah ini untuk menginstal NodeJs

curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
sudo yum install -y nodejs
Lokesh Kumar Bandi
sumber