Почему установка узла 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
user1063287
источник
Включите копию вывода, apt-cache policy nodejsпожалуйста, в ваш вопрос в качестве редактирования.
Томас Уорд
Тот факт, что система использовала NodeJS 4.x, означает, что либо вы запустили неверные сценарии, либо хранилище было неправильно добавлено в систему - используя точные шаги, описанные на странице, на которую вы ссылаетесь, я смог установить последнюю установленную версию как есть, так что может быть любое количество проблем - если вы можете предоставить apt-cacheданные, чтобы мы могли видеть, что ваш компьютер видит в репозиториях, мы сможем помочь в дальнейшем.
Томас Уорд
@ThomasW. - Добавлены данные для публикации.
user1063287
1
Спасибо за обновленные данные. Похоже, сценарий не сделал то, что должен был по какой-то причине. Я подробно объясняю, что это так, и «ручной» способ сделать то, что делает скрипт, в моем ответе ниже. Вы можете использовать это, чтобы получить последнюю версию от NodeJS. Это не так приятно и просто, как скрипт, но на самом деле это то, что скрипт делает по своей сути.
Томас Уорд
1
@pipe К счастью, есть такие люди, как я, которые запускают сценарии в разрушаемых виртуальных машинах, чтобы мы могли видеть, что они делают. Вот как я получил инструкции в своем ответе, поэтому мы можем делать то, что этот «скрипт» делает вручную, хе.
Томас Уорд

Ответы:

136

Основная причина в том, что скрипт установки не работает правильно. Следовательно, благодаря обновленным данным из OP, который поддерживает это, данные из хранилища 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 .

    Это обновляет данные из репозитория Nodesource, поэтому aptизвестно, что существует более новая версия.

    Если вы получили NO_PUBKEYошибку GPG, вернитесь к шагу 2

  4. Проверьте apt-cache policy nodejsвывод.

    Сценарий этого не делает, но вы хотите убедиться, что вы видите в выводе запись, которая говорит что-то вроде этого (хотя версия может отличаться, если вы не используете 6.x в качестве строки версии; единственное, что мы заботиться о том, что есть более новый номер версии, предоставленный через nodeource):

    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
Следовал за этим до Т и все точки соответствовали описанному поведению. Большое спасибо.
user1063287
1
@ user1063287 Добро пожаловать! Надеюсь, это поможет другим, если сценарий не работает для них! Наслаждайтесь использованием последней версии NodeJS!
Томас Уорд
О, так вот почему у меня на самом деле нет Node 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 in v=6на 7, 8, 9, как необходимо для соответствующих версий (см. Официальные инструкции по установке ):

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

(убедитесь, что у вас установлен curl.)

И наконец,

sudo apt-get install -y nodejs

Boom, последняя версия узла.

codemode
источник
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.reload

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 с URL-адресом https, или же код продолжает установку v4.2.6, показывая ошибку сертификата, попробуйте добавить nodeource.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 ...

sunilsmith
источник
0

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

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

Чтобы убедиться, что у вас не установлена ​​какая-либо версия, запустите: apt-cached policy 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 установить nodejs

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

Это должно успешно установить nodejs версии 8 в вашей системе. Если вы хотите любую другую версию, то измените версию на шаге 1 и 2, она будет работать успешно.

дуговая молния
источник