At the BoF at DebConf, we were talking about parallel installation of
different versions of JS libraries.  In order to do parallel
installation, we'd need differently named packages for different
versions, and it seems like the obvious way to do that is to have
packages called something like libjs-fooVER and node-fooVER, where VER
some sort of the API version, similar to the way that C/C++ library
packages are named after the library SONAME.  If upstream follows semver
properly, then VER would be the major version number.

For libjs-fooVER, the JavaScript files would probably go in
/usr/share/javascript/fooVER/ rather than /usr/share/javascript/foo.
Obviously everything that previously pointed to the old place would have
to now point to the new place, but we could create a libjs-foo
transitional package libjs-foo that symlinks /usr/share/javascript/foo
to /usr/share/javascript/fooVER so that existing packages don't break.

For node-fooVER, the logical analogue would be to put the files in
/usr/lib/nodejs/fooVER.  However, anything that uses the library does
"require("foo")", and so would not be able to find it there.  There are
a couple possible options for fixing that I can think of.  The first is
to change all "require("foo")" to "require("fooVER")", but that sounds
painful to do.  The second option is to add a symlink from
node_modules/foo to /usr/lib/nodejs/fooVER in the root directory of the
thing that requires foo.  I think the second option is the best,
especially since Node upstream seems to prefer searching for things in
node_modules rather than in /usr/lib/nodejs.  And again, we may want to
create a transitional package node-foo that symlinks /usr/lib/nodejs/foo
to /usr/lib/nodejs/fooVER.

What are peoples' thoughts on this?

Hubert Chathi <> --
Jabber: -- Matrix:
PGP/GnuPG key: 4096R/F24C F749 6C73 DDB8 DCB8  72DE B2DE 88D3 113A 1368

Pkg-javascript-devel mailing list

Reply via email to