Mengapa menginstal node 6.x pada Ubuntu 16.04 sebenarnya menginstal node 4.2.6?

78

Ini adalah langkah-langkah saya untuk menginstal node di Ubuntu 16.04:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs 
sudo apt-get install -y npm

yang merupakan instruksi resmi:

https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions

Setelah melakukan ini, menjalankan nodejs --versionkembali v4.2.6.

Seperti yang saya gunakan, setup_6.xsaya mengasumsikan versi yang dimulai dengan 6akan diinstal?

Saya pikir mungkin setup_6.xseharusnya setup_6.2.1, tetapi halaman itu mengembalikan 404, lihat:

https://deb.nodesource.com/setup_6.x (ada halaman di sana)

https://deb.nodesource.com/setup_6.2.1 (mengembalikan 404)

Bagaimana cara menginstal versi stabil terbaru dari node pada Ubuntu 16.04?

Sunting:

Ini adalah hasil setelah berjalan sudo apt-get install -y nodejs:

sudo apt-get install -y nodejs 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gyp libboost-python1.58.0 libjs-inherits libjs-node-uuid libjs-underscore
  libssl-dev libssl-doc libuv1-dev linux-headers-4.4.0-18
  linux-headers-4.4.0-18-generic linux-headers-4.4.0-21
  linux-headers-4.4.0-21-generic linux-image-4.4.0-18-generic
  linux-image-4.4.0-21-generic linux-image-extra-4.4.0-18-generic
  linux-image-extra-4.4.0-21-generic linux-signed-image-4.4.0-18-generic
  linux-signed-image-4.4.0-21-generic python-configobj python-pycurl
  python-pyexiv2 python-pyexiv2-doc
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  nodejs
0 to upgrade, 1 to newly install, 0 to remove and 0 not to upgrade.
Need to get 0 B/3,162 kB of archives.
After this operation, 13.2 MB of additional disk space will be used.
Selecting previously unselected package nodejs.
(Reading database ... 329473 files and directories currently installed.)
Preparing to unpack .../nodejs_4.2.6~dfsg-1ubuntu4_amd64.deb ...
Unpacking nodejs (4.2.6~dfsg-1ubuntu4) ...
Processing triggers for doc-base (0.10.7) ...
Processing 1 added doc-base file...
Registering documents with scrollkeeper...
Processing triggers for man-db (2.7.5-1) ...
Setting up nodejs (4.2.6~dfsg-1ubuntu4) ...
update-alternatives: using /usr/bin/nodejs to provide /usr/bin/js (js) in auto mode

Sunting:

Hasil dari apt-cache policy nodejs:

apt-cache policy nodejs
nodejs:
  Installed: 4.2.6~dfsg-1ubuntu4
  Candidate: 4.2.6~dfsg-1ubuntu4
  Version table:
 *** 4.2.6~dfsg-1ubuntu4 500
        500 http://au.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        100 /var/lib/dpkg/status
pengguna1063287
sumber
Sertakan salinan hasil dari apt-cache policy nodejssilakan ke pertanyaan Anda sebagai hasil edit.
Thomas Ward
Fakta bahwa sistem menarik dalam NodeJS 4.x berarti bahwa Anda menjalankan skrip yang salah, atau repositori tidak ditambahkan dengan benar ke sistem - menggunakan langkah-langkah tepat yang diuraikan di halaman yang Anda tautkan, saya bisa mendapatkan instalan terbaru apa adanya, jadi mungkin ada sejumlah masalah - jika Anda dapat memberikan apt-cachedata sehingga kami dapat melihat apa yang dilihat komputer Anda dalam repo, kami mungkin dapat membantu lebih lanjut.
Thomas Ward
@ Thomas. - Menambahkan data ke pos.
user1063287
1
Terima kasih atas data yang diperbarui. Sepertinya skrip tidak melakukan apa yang seharusnya karena alasan apa pun. Saya merinci bahwa inilah masalahnya, dan cara 'manual' untuk melakukan apa yang dilakukan skrip, dalam jawaban saya di bawah. Anda dapat menggunakannya untuk mendapatkan versi terbaru dari NodeJS. Ini tidak sebaik dan semudah naskah, tetapi sebenarnya apa yang dilakukan naskah pada intinya.
Thomas Ward
1
@pipe Untungnya ada orang seperti saya yang menjalankan skrip dalam VM yang dapat dirusak sehingga kita dapat melihat apa yang dilakukannya. Begitulah cara saya mendapatkan instruksi dalam jawaban saya, jadi kita bisa melakukan apa yang 'script' lakukan secara manual heh.
Thomas Ward

Jawaban:

136

Alasan intinya adalah bahwa skrip pengaturan tidak berjalan dengan benar. Oleh karena itu, berkat data yang diperbarui dari OP yang mendukung ini, data dari repositori NodeSource tidak pernah dilihat aptkarena tidak dikonfigurasi dengan benar oleh skrip.

Script, oleh karena itu, mungkin tidak menemukan distribusi Anda, atau mungkin telah mengacaukan ketika mengkonfigurasi repositori, atau mungkin ada gangguan jaringan, atau salah satu dari seribu alasan mengapa itu terganggu dan tidak melakukan tugasnya.

Fakta bahwa Anda melihat versi 4.xterinstal berarti skrip tidak melakukan tugasnya dengan benar, sehingga skrip tidak selalu salah. Ini berarti kita harus berpotensi melakukan ini dengan cara yang lebih sulit.

Saya harus tunjukkan: skrip tidak benar-benar melakukan instalasi - semua yang dilakukannya adalah menentukan versi Debian / Ubuntu yang Anda gunakan, dan konfigurasikan repositori untuk mendapatkan data. Bagian instalasi sebenarnya adalah sudo apt-get installlangkah yang Anda jalankan dengan tangan.


Daripada mengandalkan skrip, kita dapat melakukan apa yang skrip lakukan dengan cara old-school: dengan tangan kita sendiri, mengatur konfigurasi repositori dan menginstal NodeJS.

Inilah cara manual untuk membuat ini berfungsi, dan pada dasarnya itulah yang dilakukan skrip (kecuali untuk Langkah 4, yang memastikan Anda mendapatkan data versi yang akurat):

  1. Buat file baru: /etc/apt/sources.list.d/nodesource.list

    Anda harus membuat file ini dengan sudo, tetapi ketika Anda membuat file, letakkan ini di dalamnya:

    deb https://deb.nodesource.com/node_6.x xenial main
    deb-src https://deb.nodesource.com/node_6.x xenial main
    

    Lalu, simpan file tersebut. (ganti node_6.xdengan node_7.xatau node_8.x, dll. untuk versi Node yang lebih baru)

  2. Unduh GPG Signing Key dari Nodesource untuk repositori . Jika tidak, Anda mungkin mendapatkan NO_PUBKEYkesalahan dengan apt-get update(gunakan wgetdalam perintah ini jika curltidak diinstal, dan jika tidak ada yang diinstal, instal salah satunya):

    curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
    
  3. Lari secara manualsudo apt-get update .

    Ini menyegarkan data dari repo nodesource sehingga apttahu ada versi yang lebih baru.

    Jika Anda mendapatkan NO_PUBKEYkesalahan GPG, maka kembali ke Langkah 2

  4. Periksa apt-cache policy nodejsoutput.

    Ini tidak dilakukan oleh skrip, tetapi Anda ingin memastikan bahwa Anda melihat entri yang mengatakan sesuatu seperti ini di output (meskipun versi mungkin berbeda jika Anda tidak menggunakan 6.x sebagai string versi; satu-satunya hal yang kami peduli adalah bahwa ada nomor versi yang lebih baru yang disediakan melalui nodesource):

    Version table:
        6.2.1-1nodesource1~xenial1 500
           500 https://deb.nodesource.com/node_6.x xenial/main amd64 Packages
        4.2.6~dfsg-1ubuntu4 500
           500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
    

    Jika Anda tidak melihat entri seperti ini, dan hanya melihat 4.2.6, mulai dari awal. Kalau tidak, lanjutkan.

  5. Instal nodejsbiner. Sekarang Anda telah mengonfirmasi 6.x tersedia di sistem Anda, Anda dapat menginstalnya:sudo apt-get install nodejs

  6. nodejs --versionseharusnya sekarang menunjukkan v6.2.1atau serupa pada output (selama itu dimulai dengan v6.Anda berada di versi 6 lalu; ini mungkin nomor versi yang lebih tinggi jika Anda menggunakan versi yang lebih baru dari 6 tetapi selama itu bukan 4.2.6 Anda harus baik untuk pergi).

Thomas Ward
sumber
4
Ikuti ini ke T dan semua poin cocok dengan perilaku yang dijelaskan. Terima kasih banyak.
user1063287
1
@ user1063287 Terima kasih! Semoga ini membantu orang lain jika skrip tidak bekerja untuk mereka juga! Nikmati menggunakan NodeJS terbaru!
Thomas Ward
Oh, jadi itu sebabnya saya tidak benar-benar memiliki Node 6 ketika saya pikir saya lakukan, dan program mengeluh saya perlu versi 6. Terima kasih!
kucing
Terima kasih, bekerja dengan sangat baik, saya perhatikan bahwa di dalam saya /etc/apt/sources.list.d/nodesource.listada komentar tentang dinonaktifkannya - juga memiliki versi lama 0.x di sana dan saya berada di 4.x dengan simpul -v. Instruksi yang jelas dan bagus.
DaveStSomeWhere
1
Karena curl tidak diinstal secara default, alternatifnya adalah menggunakan wgetwget -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
gerardw
38

Saya memiliki versi node yang lebih lama. Yang perlu saya lakukan adalah membersihkan yang lama:

sudo apt-get purge nodejs npm

Dan kemudian, ganti 6 in v=6dengan 7, 8, 9 sesuai kebutuhan untuk versi masing-masing (lihat instruksi instalasi resmi ):

v=6
curl -sL https://deb.nodesource.com/setup_$v.x | sudo -E bash -

(pastikan Anda memiliki ikal yang terpasang.)

Dan terakhir,

sudo apt-get install -y nodejs

Boom, versi terbaru dari node.

kode kode
sumber
4
Atau, https://deb.nodesource.com/setup_7.xuntuk simpul v7. Lihat panduan resmi
ryenus
2
Tambang saya masih terpasang v4.2.6
Freek Nortier
1
@FreekNortier Saya juga mengalami masalah ini di Linux Mint 18. Saya dapat menginstal versi 11 setelah membersihkan dan menjalankan sudo apt-get install python-software-properties. Saya menemukan saran ini pada tecadmin dan codebind .
Ben
4

Untuk pengguna versi Ubuntu 16.04.2 (dengan sedikit perubahan dari Thomas'post dan terima kasih untuknya)

1. buka pembaruan perangkat lunak

2. pengaturan

3. perangkat lunak lain

4.Tambahkan sumber tetapi ingatlah untuk memilih semua opsi sumber baru nanti exp:


deb https://deb.nodesource.com/node_6.x xenial main
deb-src https://deb.nodesource.com/node_6.x xenial main

5. memuat

6.sudo apt-get update

7. apt-cache policy nodejs// untuk mendapatkan tabel versi baru dan periksa apakah sumbernya sudah selesai

8.sudo apt install nodejs

9.nodejs --version

SEKARANG Sudah siap .......

peringatan: jangan ubah driver default Linux Anda untuk kartu nvidia Anda dari panel pembaru .... sistem akan macet .... !!!

Jason Liu
sumber
Menginstal v4.2.6.
Prashant Prabhakar Singh
bagus! bekerja untuk saya
ejaenv
3

Saya memiliki masalah yang sama. Tetapi dalam kasus saya, saya harus memutakhirkan perintah ikal saya. Anda dapat melihat masalah dengan menjalankan dengan opsi -S.

curl -s -S https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -

Yang menunjukkan masalah

curl: (1) Protocol "https" not supported or disabled in libcurl
gpg: no valid OpenPGP data found.

Jadi saya memperbaiki masalah ini dengan menjalankan yang berikut ini.

sudo apt-get install curl
sudo apt autoremove
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
zatopek
sumber
memecahkan masalah
SadeepDarshana
1

Dengan menambahkan @Thomas Ward jawab mereka yang menghadapi masalah dalam menginstal nodejs 8.x dengan https URL atau kode tetap instal v4.2.6 dengan menunjukkan kesalahan sertifikat coba tambahkan nodesource.list dengan baris di bawah ini

deb http://deb.nodesource.com/node_8.x xenial main
deb-src http://deb.nodesource.com/node_8.x xenial main

langkah selanjutnya: Jalankan

sudo curl -sL http://deb.nodesource.com/setup_8.x | sudo -E bash -

Kemudian

sudo apt-get install -y nodejs

Ini akan menyelesaikan masalah Anda dengan menginstal versi nodejs dan npm yang diperbarui saat ini menyelesaikan masalah saya untuk Ubuntu 16.04 LTS ...

tukang sunils
sumber
0

Saya menemukan tautan ini dan itu membantu saya menginstal Nodejs8____https: //www.ubuntuupdates.org/ppa/nodejs_7.x. Saya harus bergabung dengan Nojs8https di baris itu karena dikatakan bahwa saya perlu level dua untuk dapat memposting lebih dari dua tautan. Saya pikir itu acak tapi apa pun.

Sebelum menginstalnya saya menjalankan perintah: apt-get remove --purge version nodejs

Untuk memverifikasi, Anda tidak memiliki versi yang terinstal jalankan: apt-cached policy nodejs dan atau nodejs --versi

Saya dapat menginstal Node js 8 dengan hanya mengubah 7 ke 8 dan saya berakhir dengan versi 8.1.3. Untuk melakukan itu saya menjalankan perintah-perintah yang ada di halaman yang saya posting di atas tetapi berikut adalah perintahnya:

Unduh kunci repositori dengan:

curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -

Kemudian atur repositori ::

sudo sh -c "echo deb https://deb.nodesource.com/node_7.x zesty main \ > /etc/apt/sources.list.d/nodesource.list"

sudo apt-get update

sudo apt-get install nodejs

Sekali lagi, jika Anda ingin simpul js 8 Anda dapat mengubah nomor 7 di baris perintah itu menjadi 8 dan voila!

Victor Espinoza
sumber
0

Saya berusaha mengikuti petunjuk di https://github.com/nodesource/distributions untuk versi 8, tetapi itu tidak berhasil untuk saya. Saya mengunjungi https://deb.nodesource.com/setup_8.x langsung di browser dan menyalin dan menempelkan skrip ke file di sistem saya nodejs.sh . Kemudian saya menjalankan perintah berikut

sudo -E bash nodejs.sh
apt-cache policy nodejs
sudo apt-get install nodejs

Perintah apt-cache menunjukkan dua versi dengan preferensi untuk menginstal 8. Anda dapat menghapus file instal setelahnya. Tidak yakin mengapa menyalin file secara lokal membantu karena perintah curl menunjukkan script dengan benar.

Bryan Toth
sumber
0

Hai teman-teman jika Anda memiliki Ubuntu 16 coba instruksi ini. Ini berfungsi dengan baik untuk saya. Juga memberikan kata sandi akun Anda setiap kali ditanya dalam proses ini.

  1. sudo su -c "echo 'deb https://deb.nodesource.com/node_8.x xenial main' >> /etc/apt/sources.list.d/nodesource.list"

  2. sudo su -c "echo 'deb-src https://deb.nodesource.com/node_8.x xenial main' >> /etc/apt/sources.list.d/nodesource.list"

  3. sudo apt-get pembaruan

  4. apt-cache policy nodejs Periksa apakah versi yang terdaftar memiliki simpul 8

  5. sudo apt-get install nodejs

  6. nodejs -v periksa versi node yang diinstal

Ini akan berhasil menginstal nodejs versi 8 pada sistem Anda. Jika Anda menginginkan versi lain, ubah versi pada langkah 1 dan 2 agar berhasil.

busur petir
sumber