[Pkg-javascript-devel] Bug#734656: nodejs: standard node shebang #!/usr/bin/env node fails in Debian as there is no binary/symlink named 'node' in $PATH

luke debian-bugs at lukedrummond.net
Wed Jan 8 22:25:05 UTC 2014


Package: nodejs
Version: 0.10.24~dfsg1-1
Severity: grave
Tags: d-i
Justification: renders package unusable

Dear Maintainer,

Attempting to use many programs installed with `npm install` fails before
execution because the Node.js interpreter installed by dpkg/synaptic is not at
the expected path.  The node binary is named 'nodejs' on Debian, but the node
community expects the de-facto standard of '#!/usr/bin/env node'.

I understand this is a tricky issue, as Javascript was never really designed to
be run like a shell script, and does not have the heritage of many other Linux
shell languages.  Additionally, it is unclear from the Node.js project what the
official name of the binary should be. That said, here are the accepted
shebangs for some other interpreters:

#!/usr/bin/env python
#!/usr/bin/env/ lua
#!/usr/bin/env perl

All references to node shebangs I can find on the internet converge on
#!/usr/bin/env node which is why this issue prevents many npm packages to fail
to run.

   * What exactly did you do (or not do) that was effective (or
     ineffective)?

Creating a symlink as root: /usr/bin/node -> /usr/bin/nodejs solves the issue
as far as I can tell.
ln -s -T /usr/bin/nodejs /usr/bin/node && chmod 755 /usr/bin/node

A quick search of the Sid repositories doesn't show any conflicts with files
installing to the path /usr/bin/node so doing the simple symlink within the
Debian installer may be sufficient.

   * What was the outcome of this action?
Standard node scripts run correctly as the de-facto node shebang(
#!/usr/bin/env node) now resolves to 'node' in the user's $PATH

I'm not very well clued on how this may affect other Debian packages, but works
in my little world, and this may extend further.

   * What outcome did you expect instead?
The expected behaviour is for the Debian package to install nodejs with a
binary resolvable by the name supported by the node community and existing
software, rather than with a name that refelects Node.js confusing
project/binary naming schemes.  Potentially even better would be to support
'nodejs' and 'node', but plan to converge on '/usr/bin/node' for the future.

FYI, I'm by no means a JavaScript guy, but I'm very happy to



-- System Information:
Debian Release: jessie/sid
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'proposed-updates'), (500, 'unstable'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.12-1-rt-amd64 (SMP w/4 CPU cores; PREEMPT)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages nodejs depends on:
ii  libc-ares2    1.10.0-2
ii  libc6         2.17-97
ii  libgcc1       1:4.8.2-12
ii  libssl1.0.0   1.0.1f-1
ii  libstdc++6    4.8.2-12
ii  libv8-3.14.5  3.14.5.8-5
ii  zlib1g        1:1.2.8.dfsg-1

nodejs recommends no packages.

nodejs suggests no packages.

-- no debconf information



More information about the Pkg-javascript-devel mailing list