Node.js è un ambiente di runtime Javascript basato su V8
motore open source realizzato da Google e originariamente utilizzato in Chrome. Grazie a Node.js possiamo eseguire Javascript al di fuori del contesto del browser e usarlo anche come linguaggio di scripting lato server, creando così un'intera applicazione web attorno ad esso. In questo tutorial vedremo come installare Node.js nella distribuzione RHEL 8 / CentOS 8.
In questo tutorial imparerai:
- Come elencare le versioni Node.js disponibili su RHEL 8 / CentOS 8
- Come installare una versione specifica di Node.js
- Come passare da una versione di Node.js a RHEL 8 / CentOS 8

Node.js – RHEL 8
Requisiti e convenzioni software utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | RHEL 8 / CentOS 8 |
Software | Il software necessario per seguire questo tutorial è già incluso in un'installazione minima di Rhel 8 |
Altro | Privilegi di root per installare i pacchetti necessari |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Quale versione di Node.js?
Come abbiamo visto in un precedente articolo sull'installazione di php su Rhel8, la versione di Red Hat Enterprise Linux introduce un nuovo modo di organizzare il software nei repository. Per impostazione predefinita ci sono solo due sorgenti software abilitate nella distribuzione:BaseOs
e Appstream
. Il primo contiene i pacchetti core necessari al sistema operativo, mentre il secondo ospita vari tipi di software organizzati in modules
.
Il principale vantaggio dell'utilizzo di questo paradigma è che è possibile scegliere tra diverse versioni della stessa applicazione o utilità. Node.js è una delle applicazioni incluse in Appstream
repository, quindi per verificare le versioni di questo runtime Javascript disponibili su RHEL 8 non ci resta che usare module
, un sottocomando di dnf
, il gestore dei pacchetti di distribuzione. Corriamo:
$ sudo dnf module list nodejs
L'output del comando mostra i moduli disponibili e il loro stato:
Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs) Name Stream Profiles Summary nodejs 10 [d] development, minimal, s2i, default [d] Javascript runtime nodejs 8 development, minimal, s2i, default [d] Javascript runtime Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Cosa ci dice questo output? Innanzitutto possiamo vedere che ci sono due versioni (o "stream") di Node.js
disponibili sul sistema:10 e 8. Possiamo anche vedere che il primo è contrassegnato come [d]
e quindi è impostato come quello predefinito da installare. Per ogni stream sono disponibili più profili:verranno installati diversi set di pacchetti a seconda di quello selezionato. Per vedere l'elenco dei pacchetti che verrebbero installati con ciascun profilo, possiamo eseguire il seguente comando:
$ sudo dnf module info --profile nodejs
La sintassi del comando è intuitiva:abbiamo usato dnf
con il module
sottocomando e le info
action, per richiedere informazioni sul modulo nodejs. Fornendo il --profile
opzione, abbiamo specificato che vogliamo informazioni sui profili disponibili. Ecco l'output del comando:
Name : nodejs:10:20181011133319:9edba152:x86_64 development : nodejs : nodejs-devel : npm minimal : nodejs s2i : nodejs : nodejs-nodemon : npm default : nodejs : npm Name : nodejs:8:20181011134412:9edba152:x86_64 development : nodejs : nodejs-devel : npm minimal : nodejs s2i : nodejs : nodejs-nodemon : npm default : nodejs : npm
Per ogni stream disponibile viene visualizzato l'elenco dei pacchetti inclusi in ogni profilo. Possiamo vederlo usando il default
profile, i pacchetti inclusi nell'installazione sono nodejs
stesso e npm
, il Gestore pacchetti di nodi. Usando lo development
profilo, il nodejs-devel
il pacchetto viene aggiunto all'elenco, mentre quando si utilizza il minimal
uno, l'unico pacchetto installato è nodejs. Infine, il s2i
Il profilo (Source-to-Image) include nodejs, npm e nodejs-nodemon che è fondamentalmente uno script pensato per essere utilizzato durante lo sviluppo di un'app node.js.
Installazione della versione predefinita
Ora che conosciamo le versioni di Node.js disponibili, possiamo decidere quale installare. Come abbiamo detto sopra, la versione predefinita è 10. Se questa è quella desiderata, tutto ciò che dobbiamo fare è eseguire:
$ sudo dnf install nodejs
Sul terminale verrà visualizzato un riepilogo dei pacchetti da installare e delle loro dipendenze e il sistema chiederà conferma per procedere:
====================================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================================== Installing: nodejs x86_64 1:10.11.0-2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 8.4 M Installing dependencies: npm x86_64 1:6.4.1-1.10.11.0.2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 3.6 M libuv x86_64 1:1.23.1-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 134 k http-parser x86_64 2.8.0-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 40 k Enabling module streams: nodejs 10 Transaction Summary ====================================================================================================================================================== Install 4 Packages Total download size: 12 M Installed size: 57 M Is this ok [y/N]:
Specifica della versione da installare
E se volessimo installare una versione alternativa (un stream
nella terminologia Rhel) o un profilo diverso? La sintassi è abbastanza semplice:
name:stream/profile
Fondamentalmente, per installare la versione predefinita di nodejs
modulo, ma con lo development
profilo, eseguiremmo:
$ sudo dnf module install nodejs:10/development
L'elenco dei pacchetti che verrebbero installati aumenta di conseguenza al cambio di profilo:
====================================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================================== Installing group/module packages: npm x86_64 1:6.4.1-1.10.11.0.2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 3.6 M nodejs-devel x86_64 1:10.11.0-2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 11 M nodejs x86_64 1:10.11.0-2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 8.4 M Installing dependencies: redhat-rpm-config noarch 115-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 82 k perl-srpm-macros noarch 1-25.el8 Rhel-8-for-x86_64-appstream-beta-rpms 11 k go-srpm-macros noarch 2-16.el8 Rhel-8-for-x86_64-appstream-beta-rpms 14 k dwz x86_64 0.12-9.el8 Rhel-8-for-x86_64-appstream-beta-rpms 109 k libuv x86_64 1:1.23.1-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 134 k http-parser x86_64 2.8.0-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 40 k python3-rpm-macros noarch 3-35.el8 Rhel-8-for-x86_64-appstream-beta-rpms 13 k rust-srpm-macros noarch 5-2.el8 Rhel-8-for-x86_64-appstream-beta-rpms 9.3 k ocaml-srpm-macros noarch 5-4.el8 Rhel-8-for-x86_64-appstream-beta-rpms 9.5 k efi-srpm-macros noarch 3-2.el8 Rhel-8-for-x86_64-appstream-beta-rpms 22 k qt5-srpm-macros noarch 5.11.1-2.el8 Rhel-8-for-x86_64-appstream-beta-rpms 11 k http-parser-devel x86_64 2.8.0-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 18 k nodejs-packaging noarch 17-2.el8+1541+81a6effd Rhel-8-for-x86_64-appstream-beta-rpms 19 k libuv-devel x86_64 1:1.23.1-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 34 k ghc-srpm-macros noarch 1.4.2-7.el8 Rhel-8-for-x86_64-appstream-beta-rpms 9.4 k python-srpm-macros noarch 3-35.el8 Rhel-8-for-x86_64-appstream-beta-rpms 14 k openblas-srpm-macros noarch 2-2.el8 Rhel-8-for-x86_64-appstream-beta-rpms 8.0 k krb5-devel x86_64 1.16.1-19.el8 Rhel-8-for-x86_64-baseos-beta-rpms 546 k libsepol-devel x86_64 2.8-1.el8 Rhel-8-for-x86_64-baseos-beta-rpms 85 k libcom_err-devel x86_64 1.44.3-1.el8 Rhel-8-for-x86_64-baseos-beta-rpms 37 k pcre2-devel x86_64 10.31-11.el8 Rhel-8-for-x86_64-baseos-beta-rpms 591 k zip x86_64 3.0-21.el8 Rhel-8-for-x86_64-baseos-beta-rpms 270 k libkadm5 x86_64 1.16.1-19.el8 Rhel-8-for-x86_64-baseos-beta-rpms 184 k unzip x86_64 6.0-38.el8 Rhel-8-for-x86_64-baseos-beta-rpms 192 k keyutils-libs-devel x86_64 1.5.10-6.el8 Rhel-8-for-x86_64-baseos-beta-rpms 48 k openssl-devel x86_64 1:1.1.1-6.el8 Rhel-8-for-x86_64-baseos-beta-rpms 2.3 M libselinux-devel x86_64 2.8-5.el8 Rhel-8-for-x86_64-baseos-beta-rpms 199 k zlib-devel x86_64 1.2.11-10.el8 Rhel-8-for-x86_64-baseos-beta-rpms 56 k pcre2-utf16 x86_64 10.31-11.el8 Rhel-8-for-x86_64-baseos-beta-rpms 223 k libverto-devel x86_64 0.3.0-5.el8 Rhel-8-for-x86_64-baseos-beta-rpms 18 k pcre2-utf32 x86_64 10.31-11.el8 Rhel-8-for-x86_64-baseos-beta-rpms 215 k Installing module profiles: nodejs/development Enabling module streams: nodejs 10 Transaction Summary ====================================================================================================================================================== Install 34 Packages
Allo stesso modo, per installare la versione 8 del runtime Javascript con il profilo predefinito, eseguiremmo:
$ sudo dnf module install nodejs:8
In questo caso, poiché volevamo utilizzare il profilo predefinito, abbiamo omesso di includerlo nel comando. Come puoi
verificare nell'output sottostante, la versione dei pacchetti da installare è cambiata di nuovo:
====================================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================================== Installing group/module packages: nodejs x86_64 1:8.11.4-2.el8+2022+2ec55091 Rhel-8-for-x86_64-appstream-beta-rpms 7.5 M npm x86_64 1:5.6.0-1.8.11.4.2.el8+2022+2ec55091 Rhel-8-for-x86_64-appstream-beta-rpms 4.1 M Installing dependencies: libuv x86_64 1:1.23.1-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 134 k http-parser x86_64 2.8.0-1.el8 Rhel-8-for-x86_64-appstream-beta-rpms 40 k Installing module profiles: nodejs/default Enabling module streams: nodejs 8 Transaction Summary ====================================================================================================================================================== Install 4 Packages
Supponiamo di aver confermato l'installazione dell'elenco di pacchetti sopra. Se ora eseguiamo:
$ sudo dnf module list nodejs
Possiamo vedere le modifiche riflesse dalla notazione utilizzata nell'output:
Name Stream Profiles Summary nodejs 10 [d] development, minimal, s2i, default [d] Javascript runtime nodejs 8 [e] development, minimal, s2i, default [d] [i] Javascript runtime Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
La versione 10
è ancora contrassegnato come predefinito, ma ora la versione 8
lo stream è contrassegnato da [e]
il che significa che è stato abilitato automaticamente. Inoltre, il [i]
mark viene utilizzato nella sezione profili dello stesso stream, vicino al nome di quello installato.
Cambio versione
Cosa succede se installiamo una versione specifica di Node.js e vogliamo cambiarne un'altra? Fondamentalmente, dobbiamo specificare la nuova versione da installare e il sistema si occuperà del resto. Ad esempio, per tornare alla versione 10
corriamo di nuovo:
$ sudo dnf module install nodejs:10/default
Le azioni che verrebbero eseguite per soddisfare la richiesta vengono calcolate e mostrate a noi. Nel Transaction Summary
sezione dell'output sottostante, possiamo infatti notare che 2 pacchetti (nodejs e npm) verrebbero aggiornati:
====================================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================================== Upgrading: npm x86_64 1:6.4.1-1.10.11.0.2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 3.6 M nodejs x86_64 1:10.11.0-2.el8+2021+27085a9b Rhel-8-for-x86_64-appstream-beta-rpms 8.4 M Switching module streams: nodejs 8 -> 10 Transaction Summary ====================================================================================================================================================== Upgrade 2 Packages
Conclusioni
Node.js è un runtime basato sul motore Javascript V8 creato da Google e originariamente utilizzato nel browser Chrome. Usandolo possiamo creare applicazioni usando Javascript al di fuori del contesto di un browser web. In questo tutorial abbiamo visto come installare il nodejs
pacchetto su sistema operativo RHEL/CentOS Linux 8, quali versioni del pacchetto sono disponibili nei repository di default, come è possibile installarne uno specifico e come, grazie a modules
, il nuovo modo di organizzare il software nell'ultima versione della distribuzione aziendale di Red Hat, possiamo passare da una versione all'altra.