How to install Node.js on Fedora 35

In today’s guide, I am going to take you through the installation of node.js on Fedora 35.

Node.js is an open-source cross-platform, backend javascript runtime environment that runs on the V8 engine and executes javascript code outside of a web browser.

A Node.js app runs in a single process, without creating a new thread for every request. It provides a set of asynchronous I/O primitives in its standard library that prevent javascript code from blocking and generally, libraries from node.js are written using non-blocking paradigms, making blocking behavior the exceptions rather than the norm.

When Node.js performs an I/O operation, like reading from the network, accessing a database or the filesystem, instead of blocking the thread and wasting CPU cycles waiting, Node.js will resume the operations when the response comes back. This allows Node.js to handle thousands of concurrent connections with a single server without introducing the burden of managing thread concurrency, which could be a significant source of bugs.

nvm is used to run node.js packages. It allows you to easily switch node.js versions and install new versions to try and easily roll back if something went wrong.

When Node.js is installed, you will have access to the node executable program in the command line.

Prerequisites

  1. Have a user with sudo privileges
  2. Have a Fedora 35 workstation up and running.
  3. Have basic terminal knowledge.

In this tutorial, I will show you different ways you can install Node.js. We will cover installing Node.js using Package manager, snap, and Fast Node Manager (FNM).

Installing Node.js Via Package manager

Node.js is available as a module called nodejs in Fedora. Fedora 35 now ships with Node.js 16.x as the default Node.js JavaScript server-side engine.

1. Run system updates.

Let’s first update our repositories to make them up to date. Type the following command on your terminal.

$ sudo dnf update -y

2. List Available Streams of Node.js

When updates are complete you can now list available streams of nodes on Fedora 35. Input the following command in your terminal.

$ sudo dnf module list nodejs

You will get the following output.

Last metadata expiration check: 0:04:17 ago on Thu 02 Dec 2021 01:58:23 PM UTC.
Fedora Modular 35 - x86_64
Name               Stream             Profiles                                      Summary                      
nodejs             12                 default [d], development, minimal             Javascript runtime           
nodejs             14                 default, development, minimal                 Javascript runtime           
nodejs             15                 default, development, minimal                 Javascript runtime           
nodejs             16                 default, development, minimal                 Javascript runtime           

Fedora Modular 35 - x86_64 - Updates
Name               Stream             Profiles                                      Summary                      
nodejs             12                 default [d], development, minimal             Javascript runtime           
nodejs             14                 default, development, minimal                 Javascript runtime           
nodejs             15                 default, development, minimal                 Javascript runtime           
nodejs             16                 default, development, minimal                 Javascript runtime           

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

3. Install Node.js 16 on Fedora 35

As of this writing, Node.js 16 is the default version. To install Node.js 16 run the following command on the terminal.

$ sudo dnf module install nodejs:16/development

Use development if you want to install the development version.

The sample output will look like this.

DigitalOcean Droplet Agent                                                        62 kB/s | 3.3 kB     00:00    
Dependencies resolved.
=================================================================================================================
 Package                   Arch      Version                                            Repository          Size
=================================================================================================================
Installing group/module packages:
 nodejs                    x86_64    1:16.11.1-1.module_f35+13202+236ca42b              updates-modular    198 k
 nodejs-devel              x86_64    1:16.11.1-1.module_f35+13202+236ca42b              updates-modular    140 k
 npm                       x86_64    1:8.0.0-1.16.11.1.1.module_f35+13202+236ca42b      updates-modular    1.7 M
Installing dependencies:
 brotli                    x86_64    1.0.9-6.fc35                                       fedora             314 k
 brotli-devel              x86_64    1.0.9-6.fc35                                       fedora              32 k
 dwz                       x86_64    0.14-2.fc35                                        fedora             127 k
 efi-srpm-macros           noarch    5-4.fc35                                           fedora              22 k
 fonts-srpm-macros         noarch    1:2.0.5-6.fc35                                     fedora              27 k
 fpc-srpm-macros           noarch    1.3-4.fc35                                         fedora             7.6 k
 ghc-srpm-macros           noarch    1.5.0-5.fc35                                       fedora             7.8 k
 gnat-srpm-macros          noarch    4-14.fc35                                          fedora             8.2 k
 go-srpm-macros            noarch    3.0.11-2.fc35                                      fedora              25 k
 kernel-srpm-macros        noarch    1.0-6.fc35                                         fedora             8.0 k
 libpkgconf                x86_64    1.8.0-1.fc35                                       fedora              36 k
 libuv                     x86_64    1:1.42.0-2.module_f35+12941+0548739f               fedora-modular     148 k
 libuv-devel               x86_64    1:1.42.0-2.module_f35+12941+0548739f               fedora-modular      28 k
 lua-srpm-macros           noarch    1-5.fc35                                           fedora             8.4 k
 nim-srpm-macros           noarch    3-5.fc35                                           fedora             8.4 k
 nodejs-libs               x86_64    1:16.11.1-1.module_f35+13202+236ca42b              updates-modular     14 M
 nodejs-packaging          noarch    2021.06-3.module_f35+12598+6f18cc3b                fedora-modular      20 k
 ocaml-srpm-macros         noarch    6-5.fc35                                           fedora             7.8 k
 openblas-srpm-macros      noarch    2-10.fc35                                          fedora             7.4 k
 openssl                   x86_64    1:1.1.1l-2.fc35                                    fedora             659 k
 openssl-devel             x86_64    1:1.1.1l-2.fc35                                    fedora             2.2 M
 perl-srpm-macros          noarch    1-42.fc35                                          fedora             8.3 k
 pkgconf                   x86_64    1.8.0-1.fc35                                       fedora              41 k
 pkgconf-m4                noarch    1.8.0-1.fc35                                       fedora              14 k
 pkgconf-pkg-config        x86_64    1.8.0-1.fc35                                       fedora              10 k
 python-srpm-macros        noarch    3.10-10.fc35                                       updates             25 k
 qt5-srpm-macros           noarch    5.15.2-3.fc35                                      fedora             8.2 k
 redhat-rpm-config         noarch    199-1.fc35                                         updates             65 k
 rpmautospec-rpm-macros    noarch    0.2.5-1.fc35                                       fedora             9.9 k
 rust-srpm-macros          noarch    20-1.fc35                                          updates            9.4 k
 unzip                     x86_64    6.0-53.fc35                                        fedora             179 k
 zip                       x86_64    3.0-31.fc35                                        fedora             257 k
 zlib-devel                x86_64    1.2.11-30.fc35                                     fedora              44 k
Installing weak dependencies:
 nodejs-docs               noarch    1:16.11.1-1.module_f35+13202+236ca42b              updates-modular    6.5 M
 nodejs-full-i18n          x86_64    1:16.11.1-1.module_f35+13202+236ca42b              updates-modular    7.8 M
Installing module profiles:
 nodejs/development                                                                                             
Enabling module streams:
 nodejs                              16                                                                         

Transaction Summary
=================================================================================================================
Install  38 Packages

Total download size: 35 M
Installed size: 165 M
Is this ok [y/N]: 

Press Y to allow installation to continue.

To use node.js type node on your terminal.

$ node
Welcome to Node.js v16.11.1.
Type ".help" for more information.
> 

To check the version you have installed, use node -v.

$ node -v
v16.11.1

Install Node.js via Snap.

Snaps are applications packaged with all their dependencies to run on all Linux platforms from a single build only.

First, you need to enable snapd on Fedora 35.

1. Enable Snapd on Fedora 35

Install snap with the following command on your terminal.

$ sudo dnf install snapd

The output will be as follows:

Last metadata expiration check: 0:02:34 ago on Thu 02 Dec 2021 02:37:20 PM UTC.
Dependencies resolved.
=================================================================================================================
 Package                              Architecture   Version                               Repository       Size
=================================================================================================================
Installing:
 snapd                                x86_64         2.53.2-1.fc35                         updates          14 M
Installing dependencies:
 bash-completion                      noarch         1:2.11-3.fc35                         fedora          291 k
 kernel-debug-core                    x86_64         5.15.5-200.fc35                       updates          37 M
 kernel-debug-modules                 x86_64         5.15.5-200.fc35                       updates          33 M
 libpkgconf                           x86_64         1.8.0-1.fc35                          fedora           36 k
 pkgconf                              x86_64         1.8.0-1.fc35                          fedora           41 k
 pkgconf-m4                           noarch         1.8.0-1.fc35                          fedora           14 k
 pkgconf-pkg-config                   x86_64         1.8.0-1.fc35                          fedora           10 k
 policycoreutils-python-utils         noarch         3.3-1.fc35                            updates          72 k
 snap-confine                         x86_64         2.53.2-1.fc35                         updates         2.3 M
 snapd-selinux                        noarch         2.53.2-1.fc35                         updates         232 k
 squashfs-tools                       x86_64         4.5-3.20210913gite048580.fc35         fedora          204 k

Transaction Summary
=================================================================================================================
Install  12 Packages

Total download size: 87 M
Installed size: 176 M
Is this ok [y/N]: y

Press Y to allow installation to continue and then you can restart your system for the changes to take effect.

2. Enable Snap classic support

To enable snap classic support, create a symbolic link between /var/lib/snapd/snap and /snap.

$ sudo ln -s /var/lib/snapd/snap /snap

3. Install Node.js on Fedora 35

To install node using snap, use the following command on your terminal.

$ sudo snap install node --classic

If you getting an error message “

error: system does not fully support snapd: cannot mount squashfs image using “squashfs”: mount: /tmp/sanity-mountpoint-309425902: unknown filesystem type ‘squashfs'”

This means the dnf didn’t pull kernel modules correctly. What you need to do is to install kernel-modules.

$ sudo dnf install kernel-modules -y

You will get the following output.

DigitalOcean Droplet Agent                                                        44 kB/s | 3.3 kB     00:00    
Dependencies resolved.
=================================================================================================================
 Package                       Architecture          Version                        Repository              Size
=================================================================================================================
Installing:
 kernel-modules                x86_64                5.15.5-200.fc35                updates                 33 M

Transaction Summary
=================================================================================================================
Install  1 Package

Total download size: 33 M
Installed size: 32 M
Downloading Packages:
kernel-modules-5.15.5-200.fc35.x86_64.rpm                                         68 MB/s |  33 MB     00:00    
-----------------------------------------------------------------------------------------------------------------
Total                                                                            1.8 MB/s |  33 MB     00:17     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                         1/1 
  Installing       : kernel-modules-5.15.5-200.fc35.x86_64                                                   1/1 
  Running scriptlet: kernel-modules-5.15.5-200.fc35.x86_64                                                   1/1 
  Verifying        : kernel-modules-5.15.5-200.fc35.x86_64                                                   1/1 

Installed:
  kernel-modules-5.15.5-200.fc35.x86_64                                                                          

Complete!

restart your system again to load kernel modules and again run the snap installer this time round it will go through successfully.

Output
2021-12-02T15:50:09Z INFO Waiting for automatic snapd restart...
node (16/stable) 16.13.1 from OpenJS Foundation (iojs✓) installed

For snap it’s such simple to do the installation with and also the packages are updated automatically when new changes are pushed to productions.

Check the version of node installed;

$ node -v
v16.13.1

Run node on the terminal with the following command;

$ node 
Welcome to Node.js v16.13.1.
Type ".help" for more information.
> 

Conclusion

The above process had taught us how to install Node.js using snap and Node Package manager. Congratulations and happy coding.

About Mason Kipward

I am a technology enthusiast who loves to share gained knowledge through offering daily tips as a way of empowering others. I am fan of Linux and all other things open source.
View all posts by Mason Kipward →

Leave a Reply

Your email address will not be published. Required fields are marked *