Чому при встановленні вузла 6.x на Ubuntu 16.04 насправді встановлюється вузол 4.2.6?


78

Це були мої кроки щодо встановлення вузла на 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

які офіційні інструкції:

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

Після цього запуск nodejs --versionповертається v4.2.6.

Як я використовував, setup_6.xя припускав, 6що буде встановлена версія, що починається з ?

Я думав, що може setup_6.xбути setup_6.2.1, але ця сторінка повертає 404, див:

https://deb.nodesource.com/setup_6.x (там є сторінка)

https://deb.nodesource.com/setup_6.2.1 (повертає 404)

Як встановити останню стабільну версію вузла на Ubuntu 16.04?

Редагувати:

Це результати після запуску 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

Редагувати:

Результати 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

Додайте до редакції копію результату, apt-cache policy nodejsбудь ласка, як редагування.
Thomas Ward

Те, що система витягнула в NodeJS 4.x, означає, що або ви запустили неправильні сценарії, або сховище було неправильно додано до системи - використовуючи точні кроки, викладені на сторінці, на яку ви посилаєтесь, я зміг отримати останню інсталяцію як є, тому може виникнути будь-яка кількість питань - якщо ви зможете надати apt-cacheдані, щоб ми могли побачити те, що бачить ваш комп’ютер у репостах, ми можемо допомогти надалі.
Томас Уорд

@ThomasW. - Додані дані до публікації.
користувач1063287

1
Дякуємо за оновлені дані. Схоже, сценарій не зробив того, що повинен був з будь-якої причини. Я детально пояснюю, що це так, і "вручну" спосіб робити те, що робиться сценарій, у своїй відповіді нижче. Ви можете використовувати це, щоб отримати останню версію від NodeJS. Це не так приємно і просто, як сценарій, але це дійсно те, що сценарій робить в основі.
Thomas Ward

1
@pipe На щастя, такі люди, як я, виконують сценарії в зруйнованих віртуальних машинах, щоб ми могли побачити, що це робить. Ось як я отримав інструкції у своїй відповіді, тож ми можемо робити те, що цей «сценарій» робить вручну.
Thomas Ward

Відповіді:


136

Основна причина полягає в тому, що сценарій установки не працював правильно. Отже, завдяки оновленим даним з ОП, що це підтримує, дані з сховища NodeSource ніколи не бачились, aptоскільки вони не були правильно налаштовані сценарієм.

Таким чином, сценарій, можливо, не знайшов вашого розповсюдження, або він зіпсувався під час налаштування сховища, або сталася перерва в мережі, або будь-яка з тисячі причин була порушена і не виконала свою роботу.

Те, що ви бачите 4.xвстановлену версію, означає, що скрипт не виконав свою роботу правильно, тому скрипт не обов'язково винен. Це просто означає, що ми маємо потенційно зробити це важче.

Я мушу зазначити: сценарій насправді не встановлює жодної установки - все, що він робить, - це визначити версію Debian / Ubuntu, на якій ви працюєте, та налаштувати сховище для отримання даних із них. Інсталяційна частина - це фактично sudo apt-get installкрок, який ви пройшли вручну.


Замість того, щоб покладатися на сценарій, ми можемо робити те, що робить сценарій старошкільним способом: власноруч, самі налаштовуємо конфігурацію сховища та встановлюємо NodeJS.

Ось ручний спосіб зробити цю роботу, і це в основному те, що робить сценарій (за винятком кроку 4, щоб переконатися, що ви отримуєте точні дані версії):

  1. Створіть новий файл: /etc/apt/sources.list.d/nodesource.list

    Вам потрібно буде створити цей файл за допомогою sudo, але коли ви створюєте файл, помістіть його всередину:

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

    Потім збережіть файл. (Замінити node_6.xз node_7.xабо node_8.x, і т.д. для нових версій Node)

  2. Завантажте ключ підпису GPG з сховища Nodesource для сховища . В іншому випадку ви можете отримати NO_PUBKEYпомилки apt-get update(використовуйте wgetцю команду, якщо curlвона не встановлена, і якщо жодна з них не встановлена, встановіть одну з них):

    curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
    
  3. Ручне управлінняsudo apt-get update .

    Це оновлює дані репо вузла, тому aptзнає, що існує новіша версія.

    Якщо ви отримали NO_PUBKEYпомилку GPG, поверніться до кроку 2

  4. Перевірте apt-cache policy nodejsвихід.

    Це не робиться сценарієм, але ви хочете переконатися, що ви побачите запис, який говорить щось подібне у висновку (хоча версія може бути іншою, якщо ви не використовуєте 6.x як рядок версії; єдине, що ми про що слід піклуватися про те, що є новий номер версії, наданий через 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
    

    Якщо ви не бачите подібних записів і бачите лише 4.2.6, почніть спочатку. В іншому випадку продовжуйте.

  5. Встановіть nodejsдвійковий файл. Тепер, коли ви підтвердили, що 6.x доступний у вашій системі, ви можете встановити його:sudo apt-get install nodejs

  6. nodejs --versionтепер слід показувати v6.2.1або подібне на виході (доки він починається з v6.версії 6, потім; це може бути більший номер версії, якщо ви використовуєте більш нову версію, ніж 6, але поки вона не буде 4.2.6 ви слід добре піти).


4
Слідкував за цим T і всі точки відповідали описаному поведінці. Дуже дякую.
користувач1063287

1
@ user1063287 Ласкаво просимо! Сподіваємось, це допомагає іншим, якщо сценарій також не працює для них! Насолоджуйтесь використанням останніх NodeJS!
Thomas Ward

Ах, так що чому я на самому ділі не вузол 6 , коли я думав , що я роблю, і програми скаржаться мені потрібна версія 6. Дякую!
кіт

Дякую, працював чудово, я помітив, що в моєму /etc/apt/sources.list.d/nodesource.listкоментарі про його відключення - також була стара версія 0.x там, і я був у 4.x з вузлом -v. Приємні чіткі інструкції.
DaveStSomeWhere

1
Зважаючи на те, що curl не встановлено за замовчуванням, альтернативою є використання wgetwget -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
gerardw

38

У мене була старша версія вузла. Все, що мені потрібно було зробити, це очистити старий:

sudo apt-get purge nodejs npm

Потім замініть 6 на v=67, 8, 9, як потрібно для відповідних версій (див. Офіційну інструкцію з установки ):

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

(переконайтеся, що у вас встановлений завиток.)

І нарешті,

sudo apt-get install -y nodejs

Бум, остання версія вузла.


4
Або https://deb.nodesource.com/setup_7.xдля вузла v7. Дивіться офіційний путівник
ryenus

2
Шахта все ще встановлює v4.2.6
Freek Nortier

1
@FreekNortier У мене також була проблема з Linux Mint 18. Мені вдалося встановити версію 11 після очищення та запуску sudo apt-get install python-software-properties. Я знайшов цю пропозицію щодо tecadmin та codebind .
Бен

4

Для користувача версії Ubuntu 16.04.2 (трохи змінившись від Thomas'post і подякувавши за нього)

1.відкрийте оновлення програмного забезпечення

2.установка

3.інше програмне забезпечення

4.Додайте джерела, але не забудьте вибрати всі нові параметри джерела пізніше exp:


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

5.завантажити

6.sudo apt-get update

7. apt-cache policy nodejs// отримати таблицю нової версії та перевірити, чи налаштовано джерело

8.sudo apt install nodejs

9.nodejs --version

ЗАРАЗ все налаштовано .......

попередження: не змінюйте драйвер за замовчуванням для Linux для вашої карти nvidia з панелі оновлення .... система буде розбита .... !!!


Він встановлює v4.2.6.
Прашант Прабхакар Сінгх

приємно! працював на мене
ejaenv

3

У мене було те саме питання. Але в моєму випадку мені довелося оновити команду curl. Ви можете побачити проблему, натиснувши параметр -S.

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

Що показало проблему

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

Тому я вирішив цю проблему, виконавши наступне.

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

вирішив проблему
SadeepDarshana

1

Додавши @Thomas Ward, відповідайте тим, хто стикається з проблемою при встановленні nodejs 8.x з https URL-адресою або кодом продовжуйте встановлювати v4.2.6, показавши помилку сертифіката, спробуйте додати nodesource.list із рядками нижче

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

наступний крок: Виконати

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

Тоді

sudo apt-get install -y nodejs

Це дозволить вирішити вашу проблему, встановивши оновлену версію nodejs та npm версію, як це вирішило мою для Ubuntu 16.04 LTS ...


0

Я знайшов це посилання, і це допомогло мені встановити Nodejs8____https: //www.ubuntuupdates.org/ppa/nodejs_7.x. Мені довелося приєднатися до Nojs8https в цьому рядку, оскільки це говорило про те, що я повинен бути другого рівня, щоб мати змогу розміщувати більше двох посилань. Я думаю, що це випадково, але що б там не було.

Перед його встановленням я запустив команду: apt-get remove --purge версія nodejs

Щоб переконатися, що у вас не встановлена ​​будь-яка версія, запустіть: apt-кешована політика nodejs та або nodejs --version

Мені вдалося встановити Node js 8, просто змінивши 7 на 8, і я закінчив версію 8.1.3. Для цього я запустив команди, які знаходяться на тій сторінці, яку я розмістив вище, але ось команди все одно:

Завантажте ключ сховища за допомогою:

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

Потім встановіть сховище ::

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

Знову ж таки, якщо ви хочете, щоб вузол js 8, ви можете змінити число 7 в цьому командному рядку на 8 і вуаля!


0

Я намагався дотримуватися вказівок https://github.com/nodesource/distributions для версії 8, але це не спрацювало. Я відвідав https://deb.nodesource.com/setup_8.x безпосередньо в браузері і скопіював і вставте сценарій у файл у своїй системі nodejs.sh . Тоді я виконав такі команди

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

Команда apt-cache показала дві версії з перевагою встановлення 8. Ви можете видалити інсталяційний файл згодом. Не впевнений, чому скопіювати файл локально, оскільки команда curl показала сценарій належним чином.


0

Ей, хлопці, якщо у вас є Ubuntu 16, спробуйте цю інструкцію. Це спрацювало на мене чудово. Також надайте пароль свого облікового запису, коли запитаєте в цьому процесі.

  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 update

  4. apt-cache policy nodejs Перевірте, чи вказані версії мають вузол 8

  5. sudo apt-get install nodejs

  6. nodejs -v перевірити встановлену версію вузла

Це має успішно встановити nodejs версії 8 у вашій системі. Якщо ви бажаєте будь-якої іншої версії, то змініть версію на кроках 1 і 2, вона працюватиме успішно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.