150

So I can't get to install npm in alpine linux. I thought perhaps I can just do a apk add npm but apparently apk search npm returns nothing, even after a apk update. I'm experimenting with all this from the nginx:alpine docker image, i.e. docker run -it nginx:alpine /bin/sh

Edit 1: I can see how the nodejs:alpine dockerfile builds node, but I don't understand how it builds npm

Edit 2: now that I know that npm gets installed with nodejs on alpine, and just for clarification, the reason this wasn't evident to me at first is that on ubuntu 14.04 a sudo apt-get install nodejs would still require a sudo apt-get install npm (which installs development packages e.g. gcc)

7 Answers 7

167

For the recent versions of Alpine (v3.8+) the correct way to install nodejs with npm is:

apk add --update nodejs npm

However, npm package depends on nodejs, so you can do:

apk add --update npm

Note: since Alpine 3.8 there is no nodejs-npm package.

5
  • 4
    How do we install a specific version of nodejs?
    – JollyRoger
    Oct 29, 2020 at 14:26
  • 3
    @JollyRoger specify the version to the apk command apk add --update nodejs=12.20.1-r0
    – eemelipa
    Jan 10, 2021 at 7:13
  • @eemelipa Just wanted to note that this is not a good idea when containerizing your application. Jan 12 at 7:43
  • 1
    @S.SaeidHosseini could you elaborate a bit more why specifying exact version is not good idea with containers?
    – eemelipa
    Jan 13 at 10:18
  • 1
    @eemelipa since not all versions of node.js will be available through alpine repositories forever, you'll need to continuously update your Dockerfile with the latest available version, to docker/CI build errors. Jan 23 at 9:38
203

I had an issue with the apk manager.

The package nodejs is no longer installing NPM (see pkgs.alpinelinux.org) You have to install nodejs-npm

apk add --update nodejs nodejs-npm
6
  • 3
    I do not understand it. Npm should be the core dependency of node, npm install npm@latest might be impacted by the node version itself so they would not be compatible...
    – dmi3y
    May 30, 2017 at 19:47
  • 6
    This should be the accepted answer with the latest alpine image. npm was not installed for me with just nodejs
    – kevinc
    Jul 29, 2017 at 15:35
  • 1
    Agreed, this is normally a dependency, but if you're installing nodejs manually (I was installing it from the 'edge' repo as well because as of now 6.7 is deprecated) then you need to install nodejs-npm separately Here's what I ran: apk add nodejs=6.11.2-r0 nodejs-npm=6.11.2-r0 --update-cache --repository dl-cdn.alpinelinux.org/alpine/edge/main --allow-untrusted Aug 22, 2017 at 23:53
  • 7
    Side question: while this answer works just fine, I can't seem to find nodejs-npm on pkgs.alpinelinux.org/packages. There is npm package which also does the job. Is it some kind of alias?
    – Tad Lispy
    Jul 25, 2018 at 14:28
  • 2
    nodejs-npm is no longer available, now it's just "npm" pkgs.alpinelinux.org/package/v3.14/main/x86_64/npm
    – BotanMan
    Jul 7, 2021 at 9:33
31

I could be wrong, but I think npm is actually a dependency of nodejs.

I've never seen any flavor of package manager install npm alone. Always seems to come packaged with yum install nodejs, or apt-get install nodejs, or apk add --update nodejs.

4
  • 20
    this is no longer accepted, as apk does not installs npm by default when installing nodejs
    – Panthro
    Aug 12, 2017 at 22:52
  • upvoted just because nobody provided a better answer Aug 31, 2017 at 1:01
  • 1
    I believe it is 'apk add --update nodejs-npm' for Alpine 3.6+ Feb 13, 2019 at 15:14
  • npm isn't a dependency of nodejs. Some using node might prefer to use yarn instead as package manager. Nov 26, 2020 at 17:15
9

apk update && apk add nodejs installed the npm binary for me.

1
  • 3
    Disputing if something works should include versions of things... Jan 3, 2019 at 22:00
5

The issue here is a recent one and is due to changes in Alpine's package repositories between v3.5 and v3.6 or edge.

In v3.5 nodejs included npm In v3.6 nodesjs does not include npm and the new nodejs-npm package exists.

See here for Alpine packages. To see what version of packages you are pulling from look at the contents of /etc/apk/repositories

2

npm comes hand in hand with nodejs. In the case you cant install node with apk add nodejs, you need fix that first. Step 1 - do you have the community repo added to your /etc/apk/repositories list? If not, it is very useful to do so. Further details: https://wiki.alpinelinux.org/wiki/Enable_Community_Repository

1
  • 3
    Can you explain the down vote?
    – vizmi
    Sep 20, 2017 at 4:20
1

I have just had to this and can confirm that npm is not a dependency of node.js (at least right now on alpine) and must be installed seperately

i.e apk add --update npm

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.