Por que a instalação do nó 6.x no Ubuntu 16.04 realmente instala o nó 4.2.6?

78

Estas foram as minhas etapas para instalar o nó no 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

quais são as instruções oficiais:

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

Depois de fazer isso, a execução nodejs --versionretorna v4.2.6.

Como eu costumava, setup_6.xeu estava assumindo que uma versão começando com 6seria instalada?

Eu pensei que talvez setup_6.xdevesse ser setup_6.2.1, mas essa página retorna um 404, veja:

https://deb.nodesource.com/setup_6.x (existe uma página lá)

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

Como instalo a versão estável mais recente do nó no Ubuntu 16.04?

Editar:

Estes são os resultados após a execução 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

Editar:

Resultados de 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
fonte
Inclua uma cópia da saída de apt-cache policy nodejsfavor em sua pergunta como uma edição.
Thomas Ward
O fato de o sistema ter puxado o NodeJS 4.x significa que você executou os scripts incorretos ou o repositório não foi adicionado corretamente ao sistema - usando as etapas exatas descritas na página para a qual você vincula, consegui instalar as últimas como está, para que haja vários problemas - se você puder fornecer apt-cachedados para que possamos ver o que o computador vê em repositórios, poderemos ajudar ainda mais.
Thomas Ward
@ThomasW. - Adicionado dados para postar.
user1063287
1
Obrigado pelos dados atualizados. Parece que o script não fez o que deveria, por qualquer motivo. Eu detalho que esse é o caso e a maneira 'manual' de fazer o que o script está fazendo, na minha resposta abaixo. Você pode usar isso para obter a versão mais recente do NodeJS. Não é tão agradável e fácil quanto um script, mas é realmente o que o script faz em sua essência.
Thomas Ward
1
@pipe Felizmente, existem pessoas como eu que executam scripts em VMs destrutíveis para que possamos ver o que está fazendo. Foi assim que deduzi as instruções na minha resposta, para que possamos fazer o que esse 'script' faz manualmente heh.
Thomas Ward

Respostas:

136

O principal motivo é que o script de instalação não foi executado corretamente. Portanto, graças aos dados atualizados do OP que suportam isso, os dados do repositório NodeSource nunca foram vistos aptporque não foram configurados corretamente pelo script.

O script, portanto, pode não ter encontrado sua distribuição, ou pode ter atrapalhado ao configurar o repositório, ou pode ter havido uma interrupção na rede ou qualquer um dos milhares de motivos pelos quais ele foi interrompido e não fez seu trabalho.

O fato de você estar vendo a versão 4.xsendo instalada significa que o script não fez seu trabalho corretamente; portanto, o script não é necessariamente culpado. Isso significa apenas que precisamos fazer isso de maneira mais difícil.

Devo salientar: o script não faz nenhuma instalação - tudo o que faz é determinar a versão do Debian / Ubuntu em que você está e configurar o repositório para obter dados. A parte da instalação é realmente a sudo apt-get installetapa que você executou manualmente.


Em vez de confiar no script, podemos fazer o que o script está fazendo da maneira antiga: manualmente, nós mesmos, definimos a configuração do repositório e instalamos o NodeJS.

Aqui está a maneira manual de fazer isso funcionar, e é basicamente o que o script faz (exceto a Etapa 4, que é garantir que você esteja obtendo dados de versão precisos):

  1. Crie um novo arquivo: /etc/apt/sources.list.d/nodesource.list

    Você precisará criar esse arquivo sudo, mas quando criar o arquivo, coloque-o dentro dele:

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

    Em seguida, salve o arquivo. (substitua node_6.xpor node_7.xou node_8.xetc. para versões mais recentes do nó)

  2. Faça o download da chave de assinatura GPG da Nodesource para o repositório . Caso contrário, você poderá obter NO_PUBKEYerros com apt-get update(use wgeteste comando se curlnão estiver instalado e se nenhum estiver instalado, instale um deles):

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

    Isso atualiza os dados do repositório de nós de origem para aptsaber que existe uma versão mais recente.

    Se você receber um NO_PUBKEYerro de GPG, volte para a Etapa 2

  4. Verifique a apt-cache policy nodejssaída.

    Isso não é feito pelo script, mas você deseja ver uma entrada que diz algo assim na saída (embora a versão possa ser diferente se você não estiver usando o 6.x como a string da versão; a única coisa que O que importa é que haja um número de versão mais recente fornecido via 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
    

    Se você não vir entradas como essa e apenas ver 4.2.6, comece novamente. Caso contrário, continue.

  5. Instale o nodejsbinário. Agora que você confirmou que o 6.x está disponível no seu sistema, você pode instalá-lo:sudo apt-get install nodejs

  6. nodejs --versionagora deve mostrar v6.2.1ou similar na saída (desde que comece com v6.a versão 6; esse pode ser um número de versão superior se você estiver usando uma versão mais nova que 6, mas contanto que não seja 4.2.6. Deveria estar bom para ir).

Thomas Ward
fonte
4
Isso foi seguido por um T e todos os pontos correspondiam ao comportamento descrito. Muito obrigado.
user1063287
1
@ user1063287 De nada! Espero que isso ajude outras pessoas se o script também não funcionar para elas! Aproveite o uso do mais recente NodeJS!
Thomas Ward
Ah, então isso é porque eu realmente não têm Nó 6, quando eu pensei que eu faço, e programas estão reclamando Eu preciso versão 6. Thanks!
gato
Obrigado, funcionou muito bem, notei que, no meu, /etc/apt/sources.list.d/nodesource.listhavia um comentário sobre a desativação - também tinha a versão 0.x antiga e eu estava no 4.x com o nó -v. Instruções claras e agradáveis.
DaveStSomeWhere
1
Dado que onda não é instalado por padrão, uma alternativa é usar wgetwget -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
gerardw
38

Eu tinha uma versão mais antiga do nó. Tudo o que eu precisava fazer era limpar o antigo:

sudo apt-get purge nodejs npm

E então, substituindo 6 v=6por 7, 8, 9 conforme necessário para as respectivas versões (consulte as instruções oficiais de instalação ):

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

(verifique se você tem o enrolamento instalado.)

E por fim,

sudo apt-get install -y nodejs

Lança, versão mais recente do nó.

codemode
fonte
4
Ou, https://deb.nodesource.com/setup_7.xpara o nó v7. Veja o guia oficial
ryenus
2
O meu ainda instala a v4.2.6
Freek Nortier 19/04/19
1
@FreekNortier Eu também estava tendo esse problema no Linux Mint 18. Consegui instalar a versão 11 após a limpeza e a execução sudo apt-get install python-software-properties. Encontrei essa sugestão no tecadmin e no codebind .
Ben
4

Para o usuário da versão Ubuntu 16.04.2 (com uma pequena mudança de Thomas'post e obrigado por ele)

1.abre o atualizador de software

2. definição

3.outros softwares

4. Adicione as fontes, mas lembre-se de escolher todas as novas fontes depois exp:


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

5.reload

6sudo apt-get update

7. apt-cache policy nodejs// para obter a nova tabela de versões e verificar se a fonte está configurada

8)sudo apt install nodejs

9nodejs --version

AGORA Está tudo pronto .......

aviso: não altere o driver padrão do Linux para sua placa nvidia no painel atualizador .... o sistema falhará .... !!!

Jason Liu
fonte
Ele instala a v4.2.6.
Prashant Singh Prabhakar
legais! trabalhou para mim
ejaenv 5/11
3

Eu tive o mesmo problema. Mas, no meu caso, tive que atualizar meu comando curl. Você pode ver o problema executando a opção -S.

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

O que mostrou o problema

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

Então, eu corrigi esse problema executando o seguinte.

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
fonte
resolvido o problema #
SadeepDarshana 2/18
1

Ao adicionar o @Thomas Ward, responda aos que estão enfrentando problemas ao instalar o nodejs 8.x com URL https ou o código continua instalando a v4.2.6, mostrando o erro de certificado, tente adicionar o nodesource.list nas linhas abaixo

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

próximo passo: executar

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

Então

sudo apt-get install -y nodejs

Isso resolverá o seu problema instalando a versão nodejs atualizada e a versão npm, conforme a solução para o Ubuntu 16.04 LTS ...

sunilsmith
fonte
0

Encontrei este link e ele me ajudou a instalar o Nodejs8____https: //www.ubuntuupdates.org/ppa/nodejs_7.x. Eu tive que ingressar no Nojs8https nessa linha porque estava dizendo que eu precisava estar no nível dois para poder postar mais de dois links. Eu acho que é aleatório, mas tanto faz.

Antes de instalá-lo, executei o comando: apt-get remove --purge version nodejs

Para verificar se você não possui nenhuma versão instalada, execute: policy -js em cache aptjs e ou nodejs --version

Consegui instalar o Nó js 8 alterando apenas o 7 para 8 e acabei com a versão 8.1.3. Para fazer isso, executei os comandos que estão nessa página que publiquei acima, mas aqui estão os comandos de qualquer maneira:

Faça o download da chave do repositório com:

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

Em seguida, configure o repositório:

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

Novamente, se você quiser o nó js 8, poderá alterar o número 7 nessa linha de comando para 8 e pronto!

Victor Espinoza
fonte
0

Tentei seguir as instruções em https://github.com/nodesource/distributions para a versão 8, mas isso não funcionou para mim. Visitei https://deb.nodesource.com/setup_8.x diretamente no navegador e copiei e colei o script em um arquivo no meu sistema nodejs.sh . Então eu executei os seguintes comandos

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

O comando apt-cache mostrou duas versões, com preferência pela instalação 8. Você pode excluir o arquivo de instalação posteriormente. Não sei por que a cópia do arquivo ajudou localmente porque o comando curl mostrou o script corretamente.

Bryan Toth
fonte
0

Ei pessoal, se você tem o Ubuntu 16, tente estas instruções. Funcionou perfeitamente para mim. Também forneça a senha da sua conta sempre que solicitado nesse processo.

  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. política do apt-cache nodejs Verifique se as versões listadas possuem o nó 8

  5. sudo apt-get install nodejs

  6. nodejs -v verifica a versão do nó instalada

Isso deve instalar com êxito o nodejs versão 8 em seu sistema. Se você desejar qualquer outra versão, altere a versão nas etapas 1 e 2, que funcionará com êxito.

arco relâmpago
fonte