Node Package Manager got corrupted in some way, now it cannot be installed
Update
Regarding William Entriken's comment below this answer, there is a better way of installing Node.js natively in Ubuntu as a snap package.
Node.js is available as a snap package in all currently supported versions of Ubuntu. Specific to Node.js, developers can choose from one or more of the currently supported releases and get regular automatic updates directly from NodeSource. Node.js versions 6, 8, 9, 10, 11, 13, 14, 15, 16, 17 and 18 are currently available, with the Snap Store being updated within hours or minutes of a Node.js release.
Node can be installed with a single command, for example:
sudo snap install node --classic --channel 9/stable
The node snap can be accessed by the command node
, for example:
$ node -v v9.9.0
An up-to-date version of npm will installed as part of the node snap. npm should be run outside of the node repl, in your normal shell. After installing the node snap run the following command to enable npm update checking:
sudo chown -R $USER:$(id -gn $USER) /home/your-username/.config
Replace your-username
in the above command with your own username. Then run npm -v
to check if the version of npm is up-to-date. As an example I checked that npm was up-to-date, checked the version of an already installed package named yarn with the command npm list yarn
and then updated the existing yarn package to the latest version with the command npm update yarn
Users can switch between versions of Node.js at any time without needing to involve additional tools like nvm (Node Version Manager), for example:
sudo snap refresh node --channel=8/stable
Users can test bleeding-edge versions of Node.js that can be installed from the latest edge channel by switching with:
sudo snap switch node --edge
This approach is only recommended for those users who are willing to participate in testing and bug reporting upstream.
Original answer
To install the latest LTS versions of Node.js (nodejs) and Package manager for Node.js (npm) in all currently supported versions of Ubuntu, open the terminal and run the following commands:
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
If you are copying these three commands, don't neglect the hyphen at the end of the second command.
The nodejs
package contains the nodejs
binary as well as npm
, so you don't need to install npm
separately. However, in order for some npm
packages to work (such as those that require building from source), you will need to install the build-essential
package:
sudo apt-get install build-essential
LTS Plan
New semver-major releases of Node.js are cut from master
every six months. New even-numbered versions (e.g. v6, v8, v10, etc.) are cut in April. New odd-numbered versions (e.g. v5, v7, v9) are cut in October.
When a new odd-numbered major release is cut, the previous even-numbered major version transitions to the Long Term Support plan.
Every major version covered by the LTS plan will be actively maintained for a period of 18 months from the date it enters LTS coverage. Following those 18 months of active support, the major version will transition into "maintenance" mode for 12 additional months.
non-LTS installation
Current to March, 2017 the commands to install the latest non-LTS version of Node.js (v8 at the time this was posted) are as follows:
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
Node.js LTS schedule
Release | Status | Codename | Initial release | LTS Start | Maintenance Start | Maintenance End |
---|---|---|---|---|---|---|
6.x | EOL | Boron | 2016-04-26 | 2016-10-18 | 2018-04-30 | 2019-04-30 |
7.x | EOL | 2017-05-30 | 2017-06-30 | |||
8.x | EOL | Carbon | 2016-10-25 | 2017-10-31 | 2019-01-01 | 2019-12-31 |
9.x | EOL | 2017-10-01 | 2018-06-30 | |||
10.x | EOL | Dubnium | 2018-04-24 | 2018-10-30 | 2020-05-19 | 2021-04-30 |
11.x | EOL | 2018-10-23 | 2019-06-01 | |||
12.x | Maintenance LTS | Erbium | 2019-04-23 | 2019-10-21 | 2020-11-301 | 2022-04-30 |
13.x | EOL | 2019-10-22 | 2020-06-01 | |||
14.x | Maintenance LTS | Fermium | 2020-04-21 | 2020-10-27 | 2021-10-30 | 2023-04-30 |
16.x | Active LTS | Gallium | 2021-04-20 | 2021-10-26 | 2022-10-18 | 2024-04-30 |
17.x | Current | 2021-10-19 | 2022-04-01 | 2022-06-01 | ||
18.x | Current | 2022-04-19 | 2022-10-25 | 2023-10-18 | 2025-04-30 |
Related videos on Youtube
Zach Cook
Updated on September 18, 2022Comments
-
Zach Cook almost 2 years
I ran into a problem today when I decided to use
npm update -g
in a nodejs app directory. This was a bad decision, because it caused me to run into a common and disastrous problem with npm.The solution is to reinstall nodejs and npm. Unfortunately when I go to install npm using
sudo apt-get install npm
it doesn't work.The full error in the terminal is here:
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.
What can I do to get npm properly installed and running again?
Thanks.
-
karel over 7 years
-
Davinder Kumar almost 7 yearsusing "sudo apt-get install -y nodejs " worked for me
-
William Entriken over 6 yearsThis method requires trusting MANY parties and then giving full access to your computer to deb.nodesource.com, an entity that can't even be bothered to update their website each version to include the content hash for your security. No thanks!
-
karel over 5 years@WilliamEntriken Node.js is now a snap package in Ubuntu that does not require running the
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
command. Instead Node.js can be installed as a snap package. I added a new Update section to my answer which contains the instructions for installing the Node.js snap package.