33e0d2a CI: add NSOLID to the CI tests a9dab9a CI: add NSOLID to the CI tests b84e562 Update scripts to support new NSOLID version 7925aa5 Add node25 scripts 612077e Merge pull request #1890 from nodesource/alejo/fix-distributions 2e44c74 ci(rocky): use official Rocky mirrorlist and tolerate unavailable mirrors 904ee90 fix: update apt 3.0.0 (amd64) [#1874] (#1875) 044f89b doc: update docs git-subtree-dir: nodesource git-subtree-split: 33e0d2ac2a5421d45bfd9b9fdf04c1fcab35246b
162 lines
5.8 KiB
Bash
Executable File
162 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Send deprecation Warning
|
|
node_deprecation_warning() {
|
|
log "
|
|
===============================================================================
|
|
DEPRECATION WARNING
|
|
===============================================================================
|
|
Node.js 18.x is no longer actively supported!
|
|
You will not receive security or critical stability updates for this version.
|
|
|
|
You should migrate to a supported version of Node.js as soon as possible.
|
|
|
|
Please see https://nodesource.com/products/distributions for details about which
|
|
version may be appropriate for you.
|
|
|
|
The NodeSource Node.js distributions site contains
|
|
information both about supported versions of Node.js and N|Solid supported Linux
|
|
distributions. To learn more about usage, see:
|
|
https://nodesource.com/products/distributions
|
|
|
|
===============================================================================
|
|
|
|
Continuing in 10 seconds ...
|
|
" "error"
|
|
sleep 10
|
|
}
|
|
|
|
# Logger Function
|
|
log() {
|
|
local message="$1"
|
|
local type="$2"
|
|
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
|
local color
|
|
local endcolor="\033[0m"
|
|
|
|
case "$type" in
|
|
"info") color="\033[38;5;79m" ;;
|
|
"success") color="\033[1;32m" ;;
|
|
"error") color="\033[1;31m" ;;
|
|
*) color="\033[1;34m" ;;
|
|
esac
|
|
|
|
echo -e "${color}${timestamp} - ${message}${endcolor}"
|
|
}
|
|
|
|
# Error handler function
|
|
handle_error() {
|
|
local exit_code=$1
|
|
local error_message="$2"
|
|
log "Error: $error_message (Exit Code: $exit_code)" "error"
|
|
exit $exit_code
|
|
}
|
|
|
|
# Function to check for command availability
|
|
command_exists() {
|
|
command -v "$1" &> /dev/null
|
|
}
|
|
|
|
# Check if we are on an RPM-based system
|
|
if ! [ -f /etc/redhat-release ] && ! grep -q "Amazon Linux" /etc/system-release 2>/dev/null; then
|
|
handle_error 1 "This script is intended for RPM-based systems. Please run it on an RPM-based system."
|
|
fi
|
|
|
|
# Send deprecation Warning
|
|
node_deprecation_warning
|
|
|
|
log "Cleaning up old repositories..." "info"
|
|
rm -f /etc/yum.repos.d/nodesource*.repo
|
|
log "Old repositories removed" "info"
|
|
|
|
# Define Node.js version
|
|
NODE_VERSION="18.x"
|
|
|
|
# Get system architecture
|
|
SYS_ARCH=$(uname -m)
|
|
|
|
# Validate system architecture
|
|
case "$SYS_ARCH" in
|
|
aarch64|x86_64) log "Supported architecture: $SYS_ARCH" "info" ;;
|
|
*) handle_error 1 "Unsupported architecture: $SYS_ARCH. Only aarch64 and x86_64 are supported." ;;
|
|
esac
|
|
|
|
# Repository content for Node.js
|
|
NODEJS_REPO_CONTENT="[nodesource-nodejs]
|
|
name=Node.js Packages for Linux RPM based distros - $SYS_ARCH
|
|
baseurl=https://rpm.nodesource.com/pub_${NODE_VERSION}/nodistro/nodejs/$SYS_ARCH
|
|
priority=9
|
|
enabled=1
|
|
gpgcheck=1
|
|
gpgkey=https://rpm.nodesource.com/gpgkey/ns-operations-public.key
|
|
module_hotfixes=1"
|
|
|
|
# Write Node.js repository content
|
|
echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null
|
|
|
|
# Check if Node.js version is an LTS version
|
|
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then
|
|
# Repository content for N|Solid
|
|
NSOLID_REPO_CONTENT="[nodesource-nsolid]
|
|
name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH
|
|
baseurl=https://rpm.nodesource.com/pub_${NODE_VERSION}/nodistro/nsolid/$SYS_ARCH
|
|
priority=9
|
|
enabled=1
|
|
gpgcheck=1
|
|
gpgkey=https://rpm.nodesource.com/gpgkey/ns-operations-public.key
|
|
module_hotfixes=1"
|
|
|
|
# Write N|Solid repository content
|
|
echo "$NSOLID_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nsolid.repo > /dev/null
|
|
log "Added N|Solid repository for LTS version: $NODE_VERSION" "info"
|
|
fi
|
|
|
|
# Check for availability of dnf, yum or microdnf
|
|
if command_exists dnf; then
|
|
log "dnf available, updating..." "info"
|
|
dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
|
|
|
|
# Update N|Solid repository if it's LTS
|
|
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then
|
|
dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
|
|
log "Repository is configured and updated." "info"
|
|
log "You can use N|solid Runtime as a node.js alternative" "info"
|
|
log "To install N|solid Runtime, run: dnf install nsolid -y" "success"
|
|
else
|
|
log "Repository is configured and updated." "info"
|
|
fi
|
|
|
|
log "Run 'dnf install nodejs -y' to complete the installation." "info"
|
|
exit 0
|
|
elif command_exists yum; then
|
|
log "yum available, updating..." "info"
|
|
yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
|
|
|
|
# Update N|Solid repository if it's LTS
|
|
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then
|
|
yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
|
|
log "Repository is configured and updated." "info"
|
|
log "You can use N|solid Runtime as a node.js alternative" "info"
|
|
log "Run 'yum install nsolid -y' to complete the installation." "success"
|
|
else
|
|
log "Repository is configured and updated." "info"
|
|
fi
|
|
|
|
log "Run 'yum install nodejs -y' to complete the installation." "info"
|
|
elif command_exists microdnf; then
|
|
log "microdnf available, updating..." "info"
|
|
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
|
|
|
|
# Update N|Solid repository if it's LTS
|
|
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then
|
|
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
|
|
log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info"
|
|
else
|
|
log "Repository is configured and updated." "info"
|
|
fi
|
|
|
|
log "Run 'microdnf install nodejs -y' to complete the installation." "info"
|
|
else
|
|
handle_error 1 "Neither yum, dnf nor microdnf package manager was found. Please update your system using your package manager."
|
|
fi
|