Node.js
Paquet d’installation silencieuse pour Node.js
25.4.0-7
Development
Development
Les paquets PREPROD sont des paquets construits via LUTI.
Ils restent généralement 5 jours en PREPROD, après quoi un deuxième scan VirusTotal est effectué pour vérifier que le status n'a pas changé.
Si le paquet réussit ce dernier contrôle, il est promu en PROD et publié sur le store.
- package: tis-nodejs
- name: Node.js
- version: 25.4.0-7
- categories: Development
- maintainer: WAPT Team,Tranquil IT,Jimmy PELÉ
- editor: OpenJS Foundation
- licence: opensource_free,cpe:/a:mit:x11_license,wapt_public
- locale: all
- target_os: linux
- impacted_process: node
- architecture: x64
- signature_date:
- size: 28.69 Mo
- installed_size: 83.45 Mo
- homepage : https://nodejs.org/
package : tis-nodejs
version : 25.4.0-7
architecture : x64
section : base
priority : optional
name : Node.js
categories : Development
maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ
description : Node.js is an open-source, cross-platform, JavaScript runtime environment that executes JavaScript code outside a web browser
depends :
conflicts :
maturity : PREPROD
locale : all
target_os : linux
min_wapt_version : 2.3
sources : https://nodejs.org/en/download/current/
installed_size : 83446606
impacted_process : node
description_fr : Node.js est un environnement d'exécution JavaScript ouvert, multiplateforme, qui exécute du code JavaScript en dehors d'un navigateur web
description_pl : Node.js to open-source'owe, wieloplatformowe środowisko uruchomieniowe JavaScript, które wykonuje kod JavaScript poza przeglądarką internetową
description_de : Node.js ist eine quelloffene, plattformübergreifende JavaScript-Laufzeitumgebung, die JavaScript-Code außerhalb eines Webbrowsers ausführt
description_es : Node.js es un entorno de ejecución de JavaScript de código abierto y multiplataforma que ejecuta código JavaScript fuera de un navegador web
description_pt : Node.js é um ambiente de código aberto, multi-plataforma, JavaScript runtime que executa o código JavaScript fora de um navegador web
description_it : Node.js è un ambiente runtime JavaScript open-source e multipiattaforma che esegue codice JavaScript al di fuori di un browser web
description_nl : Node.js is een open-source, cross-platform, JavaScript runtime omgeving die JavaScript code uitvoert buiten een web browser
description_ru : Node.js - это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом, которая выполняет код JavaScript вне веб-браузера
audit_schedule :
editor : OpenJS Foundation
keywords : javascript,js,node,open,code
licence : opensource_free,cpe:/a:mit:x11_license,wapt_public
homepage : https://nodejs.org/
package_uuid : 83e46b66-3d8e-4de6-ac54-8f58a3cbc7ad
valid_from :
valid_until :
forced_install_on :
changelog : https://github.com/nodejs/node/blob/master/CHANGELOG.md
min_os_version : 6.3
max_os_version :
icon_sha256sum : 77ad7394671d64dc6a1045c837364be28fabdc7dfa7299d29b76fe1c4c2d7769
signer : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date : 2026-01-19T17:54:27.000000
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
signature : VTBW7C91v1HfDo2HlFcH/X/V/b5SpPOrbpDMUxLBviUO8FGiiItvfIdraW6JlCPsrPwUSlkP8p0qQX7Ki0KyLd1/d9d2gEbXP9f6mHZB7qAwpD+ivimb4StgU4vZm9MqpS/68GZdStWp1WG+u2mbS5egvE7KkzC6Rq9AvlOXqiEYVSnP/xLoBzN11pzEZ5Vthf/UuG4TodgVvsZe7nc3v8jS/66Jn63AWn0j1txFPmcZV0cdZWAQrt6igXAjztsrvNCIZKdbWVwUlKdcKxizndZXKsPvZnEhYZfP7+splp1kJumNi4p9t9P19oQDvNYHvb+kN3UcpLaBCJjaBcXn0g==
# -*- coding: utf-8 -*-
from setuphelpers import *
import tarfile
dir_name = "nodejs"
app_dir = "/opt/nodejs"
usr_local_bin = "/usr/local/bin"
def install():
zip_name = glob.glob("node-v*-linux-x64.tar.xz")[0]
print(f"Extracting: {zip_name}")
unzipped_dir = makepath(os.getcwd(), zip_name.split(".tar.xz")[0])
if isdir(unzipped_dir):
remove_tree(unzipped_dir)
if isdir(dir_name):
remove_tree(dir_name)
with tarfile.open(zip_name, "r:xz") as tar:
tar.extractall()
# Renaming unzipped_dir
print(f"Renaming: {unzipped_dir} to: {dir_name}")
run(f"mv {unzipped_dir} {dir_name}") # mv command in linux can be used to rename files or directories
# Moving unzipped_dir to app_dir
if isdir(app_dir):
remove_tree(app_dir)
mkdirs(app_dir)
print(f"Moving: {dir_name} to: {app_dir}")
move_directory(dir_name, app_dir)
# Creating symbolic links from app_dir/bin to /usr/local/bin
for binary in glob.glob(makepath(app_dir, "bin", "*")):
symlink_path = makepath(usr_local_bin, binary.split("/")[-1])
if isfile(symlink_path):
remove_file(symlink_path)
print(f"Creating symbolic link of: {binary} to: {usr_local_bin}")
run(f"ln -s {binary} {symlink_path}")
def audit():
audit_status = "OK"
# Checking if the application directory is here
if not isdir(app_dir) or dir_is_empty(app_dir):
print("ERROR: Application directory is not present")
audit_status = "ERROR"
# Checking symbolic links located in /usr/local/bin
symlink_list = ["node", "npm", "npx"]
for symlink in symlink_list:
symlink_path = makepath(usr_local_bin, symlink)
if not os.path.islink(symlink_path):
print(f"ERROR: Symbolic link: {symlink_path} is not present")
audit_status = "ERROR"
return audit_status
def uninstall():
# Removing symbolic links located in /usr/local/bin
for binary in glob.glob(makepath(app_dir, "bin", "*")):
symlink_path = makepath(usr_local_bin, binary.split("/")[-1])
if isfile(symlink_path):
print(f"Removing symbolic link: {symlink_path}")
remove_file(symlink_path)
# Removing app directory
if isdir(app_dir):
print(f"Removing application directory: {app_dir}")
remove_tree(app_dir)
def move_directory(source, destination):
"""
Moves a directory safely, avoiding unnecessary subfolders.
Args:
source (str): The path of the directory to move.
destination (str): The destination path where the directory will be moved to.
Returns:
bool: True if the directory was successfully moved, False otherwise.
"""
try:
if not os.path.exists(destination):
os.makedirs(destination)
for item in os.listdir(source):
item_path = os.path.join(source, item)
if os.path.isfile(item_path):
shutil.move(item_path, destination)
if os.path.islink(item_path):
shutil.move(item_path, destination)
elif os.path.isdir(item_path):
new_destination = os.path.join(destination, item)
shutil.move(item_path, new_destination)
os.rmdir(source)
return True
except Exception as e:
print(f"ERROR: {e}")
return False
# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import bs4 as BeautifulSoup
from urllib.parse import urlparse, urljoin
import requests
def update_package():
# Declaring local variables
package_updated = False
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
base_url = "https://nodejs.org"
url = "https://nodejs.org/dist/latest/"
#latest_url = requests.head(url).headers['Location']
download_dict = {
"windows-arm64": "-arm64.msi",
"windows-x64": "-x64.msi",
"windows-x86": "-x86.msi",
"windows-all": "-x86.msi",
"darwin-x64": "-darwin-x64.tar.xz",
"darwin-arm64": "-darwin-arm64.tar.xz",
"linux-x64": "-linux-x64.tar.xz",
"linux-arm64": "-linux-arm64.tar.xz ",
}
# Getting latest version information from official sources
print("URL used is: %s" % url)
links = bs_find_all(url,'a','href')
to_download = download_dict[control.target_os + "-" + ensure_list(control.architecture)[0]]
for link in links:
if link['href'].endswith(to_download):
download_url = base_url + link['href']
latest_bin = link.text
version = latest_bin.split("-")[1].replace("v", "")
# Downloading latest binaries
print("Latest %s version is: %s" % (control.name, version))
print("Download URL is: %s" % download_url)
if not isfile(latest_bin):
print("Downloading: %s" % latest_bin)
wget(download_url, latest_bin, proxies=proxies)
else:
print("Binary is present: %s" % latest_bin)
for f in glob.glob(f'*{to_download}'):
if f != latest_bin:
remove_file(f)
# Checking version from file
if get_os_name() == "Windows" and "windows" in control.target_os.lower():
version_from_file = get_version_from_binary(latest_bin)
if Version(version_from_file, 4) == Version(version, 4):
print(f"INFO: Binary file version ({version_from_file}) corresponds to online version ({version})")
else:
error(f"ERROR: Binary file version ({version_from_file}) do NOT corresponds to online version ({version})")
# Changing version of the package
if Version(version, 4) > Version(control.get_software_version(), 4):
print("Software version updated (from: %s to: %s)" % (control.get_software_version(), Version(version)))
package_updated = True
else:
print("Software version up-to-date (%s)" % Version(version))
control.set_software_version(version)
control.save_control_to_wapt()
# Validating or not update-package-sources
return package_updated
01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
61f991a4334e79b9d9e0cd2299ddd1c458b63dd93c3b61bcef721742f9f2ccf3 : WAPT/control
77ad7394671d64dc6a1045c837364be28fabdc7dfa7299d29b76fe1c4c2d7769 : WAPT/icon.png
37e19d4ef0184b8e4bed68e6c79ccfcb4ad6801acb66b981d840232b2fd2e07c : luti.json
f3bde66a96c232f34cdd9f4fea6b551f915f8f3ac0952793eef903b3e35df037 : node-v25.4.0-linux-x64.tar.xz
3e9c65f37f975527143838f26813a5d612a205fb640165420a1d5a927374af7f : setup.py
c7d187b9be719ce064253e2518c2dcefe7d9a1d4972cd3f89a005819401a3edf : update_package.py