
Tive um problema hoje quando decidi usar npm update -g
em 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 npm
ele 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-username
no comando acima com seu próprio nome de usuário. Em seguida, execute npm -v
para 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 yarn
e 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 nodejs
pacote nodejs
também contém o binário npm
, portanto você não precisa instalar npm
separadamente. Entretanto, para que alguns npm
pacotes funcionem (como aqueles que exigem compilação a partir do código-fonte), você precisará instalar o build-essential
pacote:
sudo apt-get install build-essential
Plano LTS
Novas versões principais do Node.js são cortadas a master
cada 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 |