From Fedora Project Wiki

Note that this is obsolete. Some other folks managed to suffer the pain of packaging this ton of crap. Meanwhile, I'm enjoying being free of interacting with some of most retarded pieces of software in software history largely designed by people who should never have touched computer in the first place.

If you've ever dealt with NPM, you know what am I talking about. My condolences!

--Lkundrak (talk) 11:43, 26 September 2013 (UTC)

Packaging node.js in Fedora

Note this is work in progess!

node.js is an asynchronous I/O based runtime for v8 JavaScript engine.

The purpose of this page is to keep track of node.js packaging state, so that it's easy for anyone to to join the efforts and contribute. It may serve as tracker to aid transparent communication of problems we communicate solve with aid of node.js community outside Fedora (so that they know what bothers us :).


Node.js is dependent on v8 and as such, it needs to coordinate version updates with v8 package.

Road Map

  • Get node.js into Fedora Package collection
  • Get involved with NPM so that it plays well with RPM
  • Keep npm2rpm up to date
  • Draft NPM packaging guidelines, pass them to Packaging Commitee
    • Need to take non-NPM packages into consideration as well?

Packages and reviews

Package Notes Bugzilla Ticket (review, etc.)
nodejs 634911

Integrating NPM with RPM

What's the point? I suggest you take a brief look at first few slides of my rubygem packaging presentation, just replace "ruby" with "node.js" :)

  • npm2rpm generates the RPM package skeletons from NPM metadata automatically (analogously to cpanspec).
  • There's a repository with packages in development

What's below is mostly a list of NPM characteristics that look like deficiencies from RPM point of view. More-or-less ordered from most important to least.

  • Does not use pristine upstream sources, not all node.js components in the wild contain package.json
  • Unable to install to different location than what dependencies are dragged from, prevents clean unprivileged installations
    • Installing a package modifies the installed one's metadata (!?) (the dependedby symlinks)
  • Upstreams use very wild directory names in tarballs (such as: timestamp). Standardize that?
  • Useful fields are sometimes missing (license tag, homepage URL)
  • A way to skip version symlinking would be nice