2

I'm pretty new to the Linux world, I have a Node application that I would like to distribute through an apt repository, this is what I do for now:

  • Put the node binary inside the Node application folder.
  • Use fpm to build a .deb package which extracts the node code in /opt/myNodeApplication and a sh script called "myNodeApplication" in /usr/local/bin.

The script is something like this:

#!/bin/bash
cd /opt/myNodeApplication
./node app.js

This allow me to call myNodeApplication from the shell from anywhere.
The problem is that I doubt this is the correct way to do it so I would like to have some input on my solution, the questions are:

  • Is it ok to extract the node application in /opt/myNodeApplication? or is there a better place?
  • Where should I put the script to launch the application? I'm pretty sure /usr/local/bin is not the right place since the script is not a "bin".
  • Is there a better way to do the whole thing? Maybe not using a script at all?

Thank you a lot in advance.

2

Is it ok to extract the node application in /opt/myNodeApplication? or is there a better place?

This is more a matter of opinion, but I reckon you're fine doing this. The standard for this kind of thing is the Filesystem Hierarchy Standard, which has more specific requirements for /opt, but it's your packages for your systems so...

Where should I put the script to launch the application? I'm pretty sure /usr/local/bin is not the right place since the script is not a "bin".

If you look at the contents of /usr/bin you'll see that bin directories contain lots of scripts; the point of .../bin directories is just to contain executable commands, regardless of their implementation details. So storing a script in /usr/local/bin to make your application easier to launch is fine.

Is there a better way to do the whole thing? Maybe not using a script at all?

You could actually make your Node script executable directly, with the following shebang line added at the top:

#!/usr/bin/env node

(see https://stackoverflow.com/questions/24253027/node-and-shebang-help-executing-via-command-line for details). Then you could rename your app.js to just app and have users run it directly... (This assumes it can run with a working directory other than /opt/myNodeApplication.)

If you're interested in packaging Node applications as .deb packages, take a look at npm2deb, it may come in handy.

  • Thank you, at the end I put the shebang line in the app.js, renamed it app, and created a symlink in /usr/local/bin pointing at that file. Works good so far, thank you for the help! – Cado Feb 20 '15 at 8:10

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.