RHEL 8 setup

This Hello, World shows how to install and run a package on Red Hat Enterprise Linux 8. If you haven’t already, download and install RHEL 8, and register it with Red Hat Subscription Management.  If you don’t already have a subscription, a no-cost developer subscription will be created for you when you download through developers.redhat.com.

Make sure you have the core Red Hat Enterprise Linux 8 development tools (make, git, gcc) installed. If you didn’t select Development Tools during installation, install them now:

$ sudo yum groupinstall ‘Development Tools’

Note: if sudo isn’t enabled for your user ID, see How to enable sudo on Red Hat Enterprise Linux. During system installation, checking the box Make this user administrator enables sudo for your user ID.

 

Node.js on RHEL 8 Quick Start (TL;DR)

Install latest Node.js with development libraries

$ sudo yum module install nodejs/development

 

Installing Node.js on RHEL 8 

First, see what Node.js package are available as part of the Application Stream Repository:

$ sudo yum module list nodejs
nodejs               10 [d]       common [d], development, minimal, s2i    Javascript runtime

There are several profiles available for the Node.js package. The default is to install a common set of runtime packages.  For developers, using the development profile installs the libraries that enable you to build dynamically loadable modules.

$ sudo yum module install nodejs/development 

Node.js is now installed.  Check the version and the path:

$ node -v

$ npm -v 

$ which node 
/usr/bin/node

$ which npm 
/usr/bin/npm

Alternatively If you wanted to install only a minimal set of Node.js packages, the command is:

$ sudo yum module install nodejs/minimal

For an explanation of the above commands, see Working with AppStreams below.

Node.js on RHEL 8 Hello, World

Let’s create a Node.js program that can be run from the command line. Using a text editor such as vi, nano, or geditcreate a file named hello.js with the following content:

hello.js
#!/usr/bin/node
console.log("Hello, Red Hat Developer World from Node " + process.version) 

Save it and exit the editor. Run it with the `node` command:

$ node hello.js
Hello, Red Hat Developer World from Node v10.11.0

Optionally, make `hello.js` executable:

$ chmod +x hello.js

Now because the program starts with `#!/usr/bin/node` you can run it directly:

$ ./hello.js

A web-based Hello, World

The next step is to try a slightly larger Node.js example that implements a tiny web server. Using your preferred text editor, create a file named hello-http.js with the following content:

hello-http.js

#!/usr/bin/node

var http = require('http');
var port = 8000;
var laddr = '0.0.0.0';
http.createServer(function (req, res) {
   res.writeHead(200, {'Content-Type': 'text/plain'});
   res.end('Hello, Red Hat Developer World from ' +
   process.version + '!\n');
   console.log('Processed request for '+ req.url);
}).listen(port, laddr);
console.log('Server running at http://' + laddr + ':' + port + '/');

Save it and exit the editor. Then, make it executable:

$ chmod +x hello-http.js

Now, you can run it:

$ ./hello-http.js
Hello, Red Hat Developer World from Node v10.11.0

You can use a browser such as Firefox, to connect to the Node.js web server using the URL `http://localhost:8000/`.   Alternatively, you can use `curl` in a different window/terminal tab:

$ curl http://localhost:8000/

Working with Appstreams

The first step is to see what modules are available the Applications Streams (appstream) repo:

$ sudo yum module list  # list all available modules in appstream

Or, find just the modules named `nodejs`

$ sudo yum module list nodejs

From the output you can see that Node.js 10 is the default module to install, note the `[d]`.  You could have simply typed the following to install the default nodejs module.

$ sudo yum module install nodejs

Or even, shorter using ‘@’:

$ sudo yum install @nodejs

The above commands would have installed the nodejs with the default profile. A profile is group, usually a subset, of the packages in a module.  For this module the default profile is named `default. In the steps above, the `development` profile was chosen to get the packages in the development profile installed.

To find out more about a module, use one of the following commands:

$ yum module info nodejs  # get info about the default nodejs module
$ yum module info nodejs:10   # get info about a specific module stream
Last updated: November 19, 2020