O Node Package Manager foi corrompido de alguma forma, agora não pode ser instalado

O Node Package Manager foi corrompido de alguma forma, agora não pode ser instalado

Tive um problema hoje quando decidi usar npm update -gem um diretório de aplicativos nodejs. Esta foi uma má decisão, porque me fez encontrar umproblema comum e desastroso com npm.

A solução é reinstalar o nodejs e o npm. Infelizmente quando vou instalar o npm usando sudo apt-get install npmele não funciona.

O erro completo no terminal está aqui:

Some packages could not be installed. This may mean that you have requested
an impossible situation or if you are using the unstable distribution that 
some required packages have not yet been created or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
   Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
   Depends: node-ansi but it is not going to be installed
   Depends: node-archy but it is not going to be installed
   Depends: node-block-stream but it is not going to be installed
   Depends: node-fstream (>= 0.1.22) but it is not going to be installed
   Depends: node-fstream-ignore but it is not going to be installed
   Depends: node-github-url-from-git but it is not going to be installed
   Depends: node-glob (>= 3.1.21) but it is not going to be installed
   Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
   Depends: node-inherits but it is not going to be installed
   Depends: node-ini (>= 1.1.0) but it is not going to be installed
   Depends: node-lockfile but it is not going to be installed
   Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
   Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
   Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
   Depends: node-gyp (>= 0.10.9) but it is not going to be installed
   Depends: node-nopt (>= 2.1.1) but it is not going to be installed
   Depends: node-npmlog but it is not going to be installed
   Depends: node-once but it is not going to be installed
   Depends: node-osenv but it is not going to be installed
   Depends: node-read but it is not going to be installed
   Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
   Depends: node-request (>= 2.25.0) but it is not going to be installed
   Depends: node-retry but it is not going to be installed
   Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
   Depends: node-semver (>= 2.1.0) but it is not going to be installed
   Depends: node-sha but it is not going to be installed
   Depends: node-slide but it is not going to be installed
   Depends: node-tar (>= 0.1.18) but it is not going to be installed
   Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

O que posso fazer para que o npm seja instalado corretamente e funcione novamente?

Obrigado.

Responder1

Atualizar

Em relação ao comentário de William Entriken abaixo desta resposta, existe uma maneira melhor de instalar o Node.js nativamente no Ubuntu como um pacote instantâneo.

Node.js está disponível como um pacote instantâneo em todas as versões atualmente suportadas do Ubuntu. Específico para Node.js, os desenvolvedores podem escolher entre uma ou mais das versões atualmente suportadas e obter atualizações automáticas regulares diretamente do NodeSource. As versões 6, 8, 9, 10, 11, 13, 14, 15, 16, 17 e 18 do Node.js estão disponíveis atualmente, com o Snap Store sendo atualizado horas ou minutos após o lançamento do Node.js.

O nó pode ser instalado com um único comando, por exemplo:

sudo snap install node --classic --channel 9/stable 

O snap do nó pode ser acessado pelo comando node, por exemplo:

$nó -v  
v9.9.0

Uma versão atualizada do npm será instalada como parte do node snap. O npm deve ser executado fora do nó repl, em seu shell normal. Depois de instalar o node snap, execute o seguinte comando para ativar a verificação de atualização do npm:

sudo chown -R $USUÁRIO:$(id -gn $USUÁRIO) /home/seu nome de usuário/.config

Substituir your-usernameno comando acima com seu próprio nome de usuário. Em seguida, execute npm -vpara verificar se a versão do npm está atualizada. Por exemplo, verifiquei se o npm estava atualizado, verifiquei a versão de um pacote já instalado chamado Yarn com o comando npm list yarne atualizei o pacote Yarn existente para a versão mais recente com o comandonpm update yarn

Os usuários podem alternar entre versões do Node.js a qualquer momento sem a necessidade de envolver ferramentas adicionais como nvm (Node Version Manager), por exemplo:

sudo snap refresh node --channel=8/stable

Os usuários podem testar versões de ponta do Node.js que podem ser instaladas a partir do canal de borda mais recente, alternando com:

sudo snap switch node --edge

Esta abordagem é recomendada apenas para usuários que desejam participar de testes e relatórios de bugs no upstream.


Resposta original

Para instalar as versões LTS mais recentes do Node.js (nodejs) e do gerenciador de pacotes para Node.js (npm) em todas as versões atualmente suportadas do Ubuntu, abra o terminal e execute os seguintes comandos:

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

Se você estiver copiando esses três comandos, não negligencie o hífen no final do segundo comando.

O nodejspacote nodejstambém contém o binário npm, portanto você não precisa instalar npmseparadamente. Entretanto, para que alguns npmpacotes funcionem (como aqueles que exigem compilação a partir do código-fonte), você precisará instalar o build-essentialpacote:

sudo apt-get install build-essential  

Plano LTS

Novas versões principais do Node.js são cortadas a mastercada seis meses. Novas versões pares (por exemplo, v6, v8, v10, etc.) serão lançadas em abril. Novas versões ímpares (por exemplo, v5, v7, v9) serão lançadas em outubro.

Quando uma nova versão principal de número ímpar é cortada, a versão principal anterior de número par faz a transição para o plano de Suporte de Longo Prazo.

Cada versão principal coberta pelo plano LTS será mantida ativamente por um período de 18 meses a partir da data em que entrar na cobertura LTS. Após esses 18 meses de suporte ativo, a versão principal fará a transição para o modo de “manutenção” por mais 12 meses.

instalação não LTS

Atual até março de 2017, os comandos para instalar a versão não LTS mais recente do Node.js (v8 no momento da publicação) são os seguintes:

sudo apt-get remove nodejs npm ## remove existing nodejs and npm packages
sudo apt-get install curl  
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs  

Programação LTS do Node.js.

Liberar Status Nome de código lançamento inicial Início do LTS Início da manutenção Fim da manutenção
6.x EOL Boro 26/04/2016 18/10/2016 30/04/2018 30/04/2019
7.x EOL 30/05/2017 30/06/2017
8.x EOL Carbono 25/10/2016 31/10/2017 01/01/2019 31/12/2019
9.x EOL 01-10-2017 30/06/2018
10.x EOL Dúbnio 24/04/2018 30/10/2018 19/05/2020 30/04/2021
11.x EOL 23/10/2018 01/06/2019
12.x Manutenção LTS Érbio 23/04/2019 21/10/2019 2020-11-301 30/04/2022
13.x EOL 22/10/2019 01/06/2020
14.x Manutenção LTS Férmio 2020-04-21 2020-10-27 30/10/2021 30/04/2023
16.x LTS ativo Gálio 2021-04-20 2021-10-26 18/10/2022 30/04/2024
17.x Atual 2021-10-19 01/04/2022 01/06/2022
18.x Atual 19/04/2022 2022-10-25 18/10/2023 30/04/2025

informação relacionada