Squashed 'nodesource/' content from commit ba48c1f
git-subtree-dir: nodesource git-subtree-split: ba48c1fe6e843e9ffb60aefc5da5d00234c83f04
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# Node.js Version Setup Scripts
|
||||
|
||||
This repository contains scripts for setting up different versions of Node.js on Debian based Linux systems.
|
||||
|
||||
## Modifying the Scripts
|
||||
|
||||
Each script in this repository sets up a specific version of Node.js. The version is specified in the line `NODE_VERSION="XX.x"` in each script. To modify the version, simply replace `"XX.x"` with the desired version, e.g., `"18.x"`.
|
||||
|
||||
For example, to modify the `setup_18.x` script to install Node.js version 20.x instead, you would change the line to `NODE_VERSION="20.x"`.
|
||||
|
||||
## Running the Scripts
|
||||
|
||||
To run a script, navigate to the directory containing the script and run the following command:
|
||||
|
||||
```bash
|
||||
sudo bash setup_XX.x
|
||||
```
|
||||
|
||||
Replace `XX.x` with the version number of the script you want to run. For example, to run the `setup_18.x` script, you would use the command `sudo bash setup_18.x`.
|
||||
|
||||
## How It Works
|
||||
|
||||
Each script in this repository performs the following steps:
|
||||
|
||||
1. Checks if the system is an Debian based Linux distribution.
|
||||
2. Configures the NodeSource Node.js DEB repository for the specified version of Node.js.
|
||||
3. Logs a message indicating that the repository is configured and updated, and instructs the user to run `apt-get install nodejs -y` to complete the installation.
|
||||
|
||||
The `setup_current` and `setup_latest` scripts are special scripts that install the current and latest versions of Node.js, respectively. The current version is 20.x and the latest version is 21.x.
|
||||
|
||||
## Updating the Scripts
|
||||
|
||||
If you make a change to the base script, you can regenerate all the version-specific scripts by running the generator script:
|
||||
|
||||
```bash
|
||||
bash generator.sh
|
||||
```
|
||||
|
||||
This script iterates over a list of versions (currently 18.x, 20.x, and 21.x), and creates a new script for each version with the updated base script. It also creates setup_current and setup_latest scripts for the current and latest versions of Node.js, respectively.
|
||||
|
||||
## Deploying the Scripts
|
||||
|
||||
After generating the scripts, you can deploy them to an S3 bucket using the AWS CLI. Here is the command to do so:
|
||||
|
||||
```bash
|
||||
aws s3 sync scripts/deb/ s3://deb.nodesource.com/ --exclude "*/**"
|
||||
```
|
||||
|
||||
This command syncs all the files in the scripts/deb/ directory (but not its subdirectories) with the s3://deb.nodesource.com/ bucket. Make sure to replace s3://deb.nodesource.com/ with the path to your own S3 bucket.
|
||||
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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_os() {
|
||||
if ! [ -f "/etc/debian_version" ]; then
|
||||
echo "Error: This script is only supported on Debian-based systems."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to Install the script pre-requisites
|
||||
install_pre_reqs() {
|
||||
log "Installing pre-requisites" "info"
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
fi
|
||||
|
||||
# Run 'apt-get install'
|
||||
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then
|
||||
handle_error "$?" "Failed to install packages"
|
||||
fi
|
||||
|
||||
if ! mkdir -p /usr/share/keyrings; then
|
||||
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo"
|
||||
fi
|
||||
|
||||
rm -f /usr/share/keyrings/nodesource.gpg || true
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list || true
|
||||
|
||||
# Run 'curl' and 'gpg' to download and import the NodeSource signing key
|
||||
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to download and import the NodeSource signing key"
|
||||
fi
|
||||
|
||||
# Explicitly set the permissions to ensure the file is readable by all
|
||||
if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to configure the Repo
|
||||
configure_repo() {
|
||||
local node_version=$1
|
||||
|
||||
arch=$(dpkg --print-architecture)
|
||||
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then
|
||||
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported."
|
||||
fi
|
||||
|
||||
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
|
||||
|
||||
# N|solid Config
|
||||
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
|
||||
# Nodejs Config
|
||||
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
else
|
||||
log "Repository configured successfully."
|
||||
log "To install Node.js, run: apt-get install nodejs -y" "info"
|
||||
log "You can use N|solid Runtime as a node.js alternative" "info"
|
||||
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success"
|
||||
fi
|
||||
}
|
||||
|
||||
# Define Node.js version
|
||||
NODE_VERSION="XX.x"
|
||||
|
||||
# Check OS
|
||||
check_os
|
||||
|
||||
# Main execution
|
||||
install_pre_reqs || handle_error $? "Failed installing pre-requisites"
|
||||
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
|
||||
@@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Function to create a script for a given Node.js version
|
||||
create_script() {
|
||||
local version=$1
|
||||
local script_name=$2
|
||||
local target_script="../setup_$script_name.x"
|
||||
|
||||
echo "Creating script for Node.js version $version.x"
|
||||
if sed "s/NODE_VERSION=\"XX.x\"/NODE_VERSION=\"$version.x\"/g" "$base_script" > "$target_script"; then
|
||||
echo "Script created successfully: $target_script"
|
||||
chmod +x "$target_script"
|
||||
echo "Execute permissions set for: $target_script"
|
||||
else
|
||||
echo "Error: Failed to create script for version $version.x"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if the base script exists
|
||||
base_script="./base_script.sh"
|
||||
if [ ! -f "$base_script" ]; then
|
||||
echo "Error: Base script not found at $base_script"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# List of versions
|
||||
versions=("18" "20" "22" "23" "24")
|
||||
|
||||
# Iterate over the versions and create scripts
|
||||
for version in "${versions[@]}"; do
|
||||
create_script "$version" "$version"
|
||||
done
|
||||
|
||||
# Define LTS and current Node.js versions
|
||||
lts_version="22"
|
||||
current_version="24"
|
||||
|
||||
# Create setup_lts and setup_current scripts
|
||||
create_script "$lts_version" "lts"
|
||||
create_script "$current_version" "current"
|
||||
Executable
+172
@@ -0,0 +1,172 @@
|
||||
#!/bin/bash
|
||||
|
||||
if test -t 1; then # if terminal
|
||||
ncolors=$(which tput > /dev/null && tput colors) # supports color
|
||||
if test -n "$ncolors" && test $ncolors -ge 8; then
|
||||
termcols=$(tput cols)
|
||||
bold="$(tput bold)"
|
||||
underline="$(tput smul)"
|
||||
standout="$(tput smso)"
|
||||
normal="$(tput sgr0)"
|
||||
black="$(tput setaf 0)"
|
||||
red="$(tput setaf 1)"
|
||||
green="$(tput setaf 2)"
|
||||
yellow="$(tput setaf 3)"
|
||||
blue="$(tput setaf 4)"
|
||||
magenta="$(tput setaf 5)"
|
||||
cyan="$(tput setaf 6)"
|
||||
white="$(tput setaf 7)"
|
||||
fi
|
||||
fi
|
||||
|
||||
print_bold() {
|
||||
title="$1"
|
||||
text="$2"
|
||||
|
||||
echo
|
||||
echo "${red}================================================================================${normal}"
|
||||
echo "${red}================================================================================${normal}"
|
||||
echo
|
||||
echo -e " ${bold}${yellow}${title}${normal}"
|
||||
echo
|
||||
echo -en " ${text}"
|
||||
echo
|
||||
echo "${red}================================================================================${normal}"
|
||||
echo "${red}================================================================================${normal}"
|
||||
}
|
||||
|
||||
|
||||
# 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}"
|
||||
}
|
||||
|
||||
# Send deprecation Warning
|
||||
node_deprecation_warning() {
|
||||
print_bold \
|
||||
" DEPRECATION WARNING " "\
|
||||
${bold}${underline} Node.js 16.x is no longer actively supported!${normal}
|
||||
|
||||
${bold}You will not receive security or critical stability updates${normal} for this version.
|
||||
|
||||
You should migrate to a supported version of Node.js as soon as possible.
|
||||
Use the installation script that corresponds to the version of Node.js you
|
||||
wish to install. e.g.
|
||||
|
||||
* ${red}https://deb.nodesource.com/setup_16.x — Node.js 16 \"Gallium\" ${bold}(deprecated)${normal}
|
||||
* ${green}https://deb.nodesource.com/setup_18.x — Node.js 18 \"Hydrogen\" (Maintenance)${normal}
|
||||
* ${red}https://deb.nodesource.com/setup_19.x — Node.js 19 \"Nineteen\" ${bold}(deprecated)${normal}
|
||||
* ${bold}${green}https://deb.nodesource.com/setup_20.x — Node.js 20 LTS \"Iron\" (recommended)${normal}
|
||||
* ${green}https://deb.nodesource.com/setup_21.x — Node.js 21 \"Iron\" (current)${normal}
|
||||
|
||||
|
||||
|
||||
Please see ${bold}https://github.com/nodejs/Release${normal} for details about which
|
||||
version may be appropriate for you.
|
||||
|
||||
The ${green}${bold}NodeSource${normal} Node.js distributions repository contains
|
||||
information both about supported versions of Node.js and supported Linux
|
||||
distributions. To learn more about usage, see the repository:
|
||||
${underline}${bold}https://github.com/nodesource/distributions${normal}
|
||||
"
|
||||
echo
|
||||
echo "Continuing in 10 seconds ..."
|
||||
echo
|
||||
sleep 10
|
||||
|
||||
}
|
||||
|
||||
# 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_os() {
|
||||
if ! [ -f "/etc/debian_version" ]; then
|
||||
echo "Error: This script is only supported on Debian-based systems."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to Install the script pre-requisites
|
||||
install_pre_reqs() {
|
||||
log "Installing pre-requisites" "info"
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
fi
|
||||
|
||||
# Run 'apt-get install'
|
||||
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then
|
||||
handle_error "$?" "Failed to install packages"
|
||||
fi
|
||||
|
||||
if ! mkdir -p /usr/share/keyrings; then
|
||||
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run 'mkdir -p /usr/share/keyrings' with sudo"
|
||||
fi
|
||||
|
||||
rm -f /usr/share/keyrings/nodesource.gpg || true
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list || true
|
||||
|
||||
# Run 'curl' and 'gpg'
|
||||
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to download and import the NodeSource signing key"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to configure the Repo
|
||||
configure_repo() {
|
||||
local node_version=$1
|
||||
|
||||
arch=$(dpkg --print-architecture)
|
||||
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then
|
||||
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported."
|
||||
fi
|
||||
|
||||
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
|
||||
|
||||
# Nodejs Config
|
||||
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
else
|
||||
log "Repository configured successfully. To install Node.js, run: apt-get install nodejs -y" "success"
|
||||
fi
|
||||
}
|
||||
|
||||
# Define Node.js version
|
||||
NODE_VERSION="16.x"
|
||||
|
||||
# Check OS
|
||||
check_os
|
||||
|
||||
# Main execution
|
||||
node_deprecation_warning
|
||||
install_pre_reqs || handle_error $? "Failed installing pre-requisites"
|
||||
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
|
||||
Executable
+113
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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_os() {
|
||||
if ! [ -f "/etc/debian_version" ]; then
|
||||
echo "Error: This script is only supported on Debian-based systems."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to Install the script pre-requisites
|
||||
install_pre_reqs() {
|
||||
log "Installing pre-requisites" "info"
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
fi
|
||||
|
||||
# Run 'apt-get install'
|
||||
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then
|
||||
handle_error "$?" "Failed to install packages"
|
||||
fi
|
||||
|
||||
if ! mkdir -p /usr/share/keyrings; then
|
||||
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo"
|
||||
fi
|
||||
|
||||
rm -f /usr/share/keyrings/nodesource.gpg || true
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list || true
|
||||
|
||||
# Run 'curl' and 'gpg' to download and import the NodeSource signing key
|
||||
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to download and import the NodeSource signing key"
|
||||
fi
|
||||
|
||||
# Explicitly set the permissions to ensure the file is readable by all
|
||||
if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to configure the Repo
|
||||
configure_repo() {
|
||||
local node_version=$1
|
||||
|
||||
arch=$(dpkg --print-architecture)
|
||||
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then
|
||||
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported."
|
||||
fi
|
||||
|
||||
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
|
||||
|
||||
# N|solid Config
|
||||
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
|
||||
# Nodejs Config
|
||||
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
else
|
||||
log "Repository configured successfully."
|
||||
log "To install Node.js, run: apt-get install nodejs -y" "info"
|
||||
log "You can use N|solid Runtime as a node.js alternative" "info"
|
||||
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success"
|
||||
fi
|
||||
}
|
||||
|
||||
# Define Node.js version
|
||||
NODE_VERSION="18.x"
|
||||
|
||||
# Check OS
|
||||
check_os
|
||||
|
||||
# Main execution
|
||||
install_pre_reqs || handle_error $? "Failed installing pre-requisites"
|
||||
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
|
||||
Executable
+113
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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_os() {
|
||||
if ! [ -f "/etc/debian_version" ]; then
|
||||
echo "Error: This script is only supported on Debian-based systems."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to Install the script pre-requisites
|
||||
install_pre_reqs() {
|
||||
log "Installing pre-requisites" "info"
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
fi
|
||||
|
||||
# Run 'apt-get install'
|
||||
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then
|
||||
handle_error "$?" "Failed to install packages"
|
||||
fi
|
||||
|
||||
if ! mkdir -p /usr/share/keyrings; then
|
||||
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo"
|
||||
fi
|
||||
|
||||
rm -f /usr/share/keyrings/nodesource.gpg || true
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list || true
|
||||
|
||||
# Run 'curl' and 'gpg' to download and import the NodeSource signing key
|
||||
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to download and import the NodeSource signing key"
|
||||
fi
|
||||
|
||||
# Explicitly set the permissions to ensure the file is readable by all
|
||||
if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to configure the Repo
|
||||
configure_repo() {
|
||||
local node_version=$1
|
||||
|
||||
arch=$(dpkg --print-architecture)
|
||||
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then
|
||||
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported."
|
||||
fi
|
||||
|
||||
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
|
||||
|
||||
# N|solid Config
|
||||
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
|
||||
# Nodejs Config
|
||||
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
else
|
||||
log "Repository configured successfully."
|
||||
log "To install Node.js, run: apt-get install nodejs -y" "info"
|
||||
log "You can use N|solid Runtime as a node.js alternative" "info"
|
||||
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success"
|
||||
fi
|
||||
}
|
||||
|
||||
# Define Node.js version
|
||||
NODE_VERSION="20.x"
|
||||
|
||||
# Check OS
|
||||
check_os
|
||||
|
||||
# Main execution
|
||||
install_pre_reqs || handle_error $? "Failed installing pre-requisites"
|
||||
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
|
||||
Executable
+113
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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_os() {
|
||||
if ! [ -f "/etc/debian_version" ]; then
|
||||
echo "Error: This script is only supported on Debian-based systems."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to Install the script pre-requisites
|
||||
install_pre_reqs() {
|
||||
log "Installing pre-requisites" "info"
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
fi
|
||||
|
||||
# Run 'apt-get install'
|
||||
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then
|
||||
handle_error "$?" "Failed to install packages"
|
||||
fi
|
||||
|
||||
if ! mkdir -p /usr/share/keyrings; then
|
||||
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo"
|
||||
fi
|
||||
|
||||
rm -f /usr/share/keyrings/nodesource.gpg || true
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list || true
|
||||
|
||||
# Run 'curl' and 'gpg' to download and import the NodeSource signing key
|
||||
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to download and import the NodeSource signing key"
|
||||
fi
|
||||
|
||||
# Explicitly set the permissions to ensure the file is readable by all
|
||||
if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to configure the Repo
|
||||
configure_repo() {
|
||||
local node_version=$1
|
||||
|
||||
arch=$(dpkg --print-architecture)
|
||||
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then
|
||||
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported."
|
||||
fi
|
||||
|
||||
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
|
||||
|
||||
# N|solid Config
|
||||
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
|
||||
# Nodejs Config
|
||||
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
else
|
||||
log "Repository configured successfully."
|
||||
log "To install Node.js, run: apt-get install nodejs -y" "info"
|
||||
log "You can use N|solid Runtime as a node.js alternative" "info"
|
||||
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success"
|
||||
fi
|
||||
}
|
||||
|
||||
# Define Node.js version
|
||||
NODE_VERSION="21.x"
|
||||
|
||||
# Check OS
|
||||
check_os
|
||||
|
||||
# Main execution
|
||||
install_pre_reqs || handle_error $? "Failed installing pre-requisites"
|
||||
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
|
||||
Executable
+113
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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_os() {
|
||||
if ! [ -f "/etc/debian_version" ]; then
|
||||
echo "Error: This script is only supported on Debian-based systems."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to Install the script pre-requisites
|
||||
install_pre_reqs() {
|
||||
log "Installing pre-requisites" "info"
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
fi
|
||||
|
||||
# Run 'apt-get install'
|
||||
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then
|
||||
handle_error "$?" "Failed to install packages"
|
||||
fi
|
||||
|
||||
if ! mkdir -p /usr/share/keyrings; then
|
||||
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo"
|
||||
fi
|
||||
|
||||
rm -f /usr/share/keyrings/nodesource.gpg || true
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list || true
|
||||
|
||||
# Run 'curl' and 'gpg' to download and import the NodeSource signing key
|
||||
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to download and import the NodeSource signing key"
|
||||
fi
|
||||
|
||||
# Explicitly set the permissions to ensure the file is readable by all
|
||||
if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to configure the Repo
|
||||
configure_repo() {
|
||||
local node_version=$1
|
||||
|
||||
arch=$(dpkg --print-architecture)
|
||||
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then
|
||||
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported."
|
||||
fi
|
||||
|
||||
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
|
||||
|
||||
# N|solid Config
|
||||
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
|
||||
# Nodejs Config
|
||||
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
else
|
||||
log "Repository configured successfully."
|
||||
log "To install Node.js, run: apt-get install nodejs -y" "info"
|
||||
log "You can use N|solid Runtime as a node.js alternative" "info"
|
||||
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success"
|
||||
fi
|
||||
}
|
||||
|
||||
# Define Node.js version
|
||||
NODE_VERSION="22.x"
|
||||
|
||||
# Check OS
|
||||
check_os
|
||||
|
||||
# Main execution
|
||||
install_pre_reqs || handle_error $? "Failed installing pre-requisites"
|
||||
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
|
||||
Executable
+113
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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_os() {
|
||||
if ! [ -f "/etc/debian_version" ]; then
|
||||
echo "Error: This script is only supported on Debian-based systems."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to Install the script pre-requisites
|
||||
install_pre_reqs() {
|
||||
log "Installing pre-requisites" "info"
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
fi
|
||||
|
||||
# Run 'apt-get install'
|
||||
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then
|
||||
handle_error "$?" "Failed to install packages"
|
||||
fi
|
||||
|
||||
if ! mkdir -p /usr/share/keyrings; then
|
||||
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo"
|
||||
fi
|
||||
|
||||
rm -f /usr/share/keyrings/nodesource.gpg || true
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list || true
|
||||
|
||||
# Run 'curl' and 'gpg' to download and import the NodeSource signing key
|
||||
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to download and import the NodeSource signing key"
|
||||
fi
|
||||
|
||||
# Explicitly set the permissions to ensure the file is readable by all
|
||||
if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to configure the Repo
|
||||
configure_repo() {
|
||||
local node_version=$1
|
||||
|
||||
arch=$(dpkg --print-architecture)
|
||||
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then
|
||||
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported."
|
||||
fi
|
||||
|
||||
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
|
||||
|
||||
# N|solid Config
|
||||
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
|
||||
# Nodejs Config
|
||||
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
else
|
||||
log "Repository configured successfully."
|
||||
log "To install Node.js, run: apt-get install nodejs -y" "info"
|
||||
log "You can use N|solid Runtime as a node.js alternative" "info"
|
||||
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success"
|
||||
fi
|
||||
}
|
||||
|
||||
# Define Node.js version
|
||||
NODE_VERSION="23.x"
|
||||
|
||||
# Check OS
|
||||
check_os
|
||||
|
||||
# Main execution
|
||||
install_pre_reqs || handle_error $? "Failed installing pre-requisites"
|
||||
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
|
||||
Executable
+113
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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_os() {
|
||||
if ! [ -f "/etc/debian_version" ]; then
|
||||
echo "Error: This script is only supported on Debian-based systems."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to Install the script pre-requisites
|
||||
install_pre_reqs() {
|
||||
log "Installing pre-requisites" "info"
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
fi
|
||||
|
||||
# Run 'apt-get install'
|
||||
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then
|
||||
handle_error "$?" "Failed to install packages"
|
||||
fi
|
||||
|
||||
if ! mkdir -p /usr/share/keyrings; then
|
||||
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo"
|
||||
fi
|
||||
|
||||
rm -f /usr/share/keyrings/nodesource.gpg || true
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list || true
|
||||
|
||||
# Run 'curl' and 'gpg' to download and import the NodeSource signing key
|
||||
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to download and import the NodeSource signing key"
|
||||
fi
|
||||
|
||||
# Explicitly set the permissions to ensure the file is readable by all
|
||||
if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to configure the Repo
|
||||
configure_repo() {
|
||||
local node_version=$1
|
||||
|
||||
arch=$(dpkg --print-architecture)
|
||||
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then
|
||||
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported."
|
||||
fi
|
||||
|
||||
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
|
||||
|
||||
# N|solid Config
|
||||
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
|
||||
# Nodejs Config
|
||||
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
else
|
||||
log "Repository configured successfully."
|
||||
log "To install Node.js, run: apt-get install nodejs -y" "info"
|
||||
log "You can use N|solid Runtime as a node.js alternative" "info"
|
||||
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success"
|
||||
fi
|
||||
}
|
||||
|
||||
# Define Node.js version
|
||||
NODE_VERSION="24.x"
|
||||
|
||||
# Check OS
|
||||
check_os
|
||||
|
||||
# Main execution
|
||||
install_pre_reqs || handle_error $? "Failed installing pre-requisites"
|
||||
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
|
||||
Executable
+113
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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_os() {
|
||||
if ! [ -f "/etc/debian_version" ]; then
|
||||
echo "Error: This script is only supported on Debian-based systems."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to Install the script pre-requisites
|
||||
install_pre_reqs() {
|
||||
log "Installing pre-requisites" "info"
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
fi
|
||||
|
||||
# Run 'apt-get install'
|
||||
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then
|
||||
handle_error "$?" "Failed to install packages"
|
||||
fi
|
||||
|
||||
if ! mkdir -p /usr/share/keyrings; then
|
||||
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo"
|
||||
fi
|
||||
|
||||
rm -f /usr/share/keyrings/nodesource.gpg || true
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list || true
|
||||
|
||||
# Run 'curl' and 'gpg' to download and import the NodeSource signing key
|
||||
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to download and import the NodeSource signing key"
|
||||
fi
|
||||
|
||||
# Explicitly set the permissions to ensure the file is readable by all
|
||||
if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to configure the Repo
|
||||
configure_repo() {
|
||||
local node_version=$1
|
||||
|
||||
arch=$(dpkg --print-architecture)
|
||||
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then
|
||||
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported."
|
||||
fi
|
||||
|
||||
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
|
||||
|
||||
# N|solid Config
|
||||
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
|
||||
# Nodejs Config
|
||||
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
else
|
||||
log "Repository configured successfully."
|
||||
log "To install Node.js, run: apt-get install nodejs -y" "info"
|
||||
log "You can use N|solid Runtime as a node.js alternative" "info"
|
||||
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success"
|
||||
fi
|
||||
}
|
||||
|
||||
# Define Node.js version
|
||||
NODE_VERSION="24.x"
|
||||
|
||||
# Check OS
|
||||
check_os
|
||||
|
||||
# Main execution
|
||||
install_pre_reqs || handle_error $? "Failed installing pre-requisites"
|
||||
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
|
||||
Executable
+113
@@ -0,0 +1,113 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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_os() {
|
||||
if ! [ -f "/etc/debian_version" ]; then
|
||||
echo "Error: This script is only supported on Debian-based systems."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to Install the script pre-requisites
|
||||
install_pre_reqs() {
|
||||
log "Installing pre-requisites" "info"
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
fi
|
||||
|
||||
# Run 'apt-get install'
|
||||
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then
|
||||
handle_error "$?" "Failed to install packages"
|
||||
fi
|
||||
|
||||
if ! mkdir -p /usr/share/keyrings; then
|
||||
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo"
|
||||
fi
|
||||
|
||||
rm -f /usr/share/keyrings/nodesource.gpg || true
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list || true
|
||||
|
||||
# Run 'curl' and 'gpg' to download and import the NodeSource signing key
|
||||
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to download and import the NodeSource signing key"
|
||||
fi
|
||||
|
||||
# Explicitly set the permissions to ensure the file is readable by all
|
||||
if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then
|
||||
handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to configure the Repo
|
||||
configure_repo() {
|
||||
local node_version=$1
|
||||
|
||||
arch=$(dpkg --print-architecture)
|
||||
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then
|
||||
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported."
|
||||
fi
|
||||
|
||||
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
|
||||
|
||||
# N|solid Config
|
||||
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
|
||||
|
||||
# Nodejs Config
|
||||
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
|
||||
|
||||
# Run 'apt-get update'
|
||||
if ! apt-get update -y; then
|
||||
handle_error "$?" "Failed to run 'apt-get update'"
|
||||
else
|
||||
log "Repository configured successfully."
|
||||
log "To install Node.js, run: apt-get install nodejs -y" "info"
|
||||
log "You can use N|solid Runtime as a node.js alternative" "info"
|
||||
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success"
|
||||
fi
|
||||
}
|
||||
|
||||
# Define Node.js version
|
||||
NODE_VERSION="22.x"
|
||||
|
||||
# Check OS
|
||||
check_os
|
||||
|
||||
# Main execution
|
||||
install_pre_reqs || handle_error $? "Failed installing pre-requisites"
|
||||
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
|
||||
@@ -0,0 +1,50 @@
|
||||
# Node.js Version Setup Scripts
|
||||
|
||||
This repository contains scripts for setting up different versions of Node.js on RPM-based Linux systems.
|
||||
|
||||
## Modifying the Scripts
|
||||
|
||||
Each script in this repository sets up a specific version of Node.js. The version is specified in the line `NODE_VERSION="XX.x"` in each script. To modify the version, simply replace `"XX.x"` with the desired version, e.g., `"18.x"`.
|
||||
|
||||
For example, to modify the `setup_18.x` script to install Node.js version 20.x instead, you would change the line to `NODE_VERSION="20.x"`.
|
||||
|
||||
## Running the Scripts
|
||||
|
||||
To run a script, navigate to the directory containing the script and run the following command:
|
||||
|
||||
```bash
|
||||
sudo bash setup_XX.x
|
||||
```
|
||||
|
||||
Replace `XX.x` with the version number of the script you want to run. For example, to run the `setup_18.x` script, you would use the command `sudo bash setup_18.x`.
|
||||
|
||||
## How It Works
|
||||
|
||||
Each script in this repository performs the following steps:
|
||||
|
||||
1. Checks if the system is an RPM-based Linux distribution.
|
||||
2. Configures the NodeSource Node.js RPM repository for the specified version of Node.js.
|
||||
3. Checks if `dnf`, `yum` or `microdnf` is available and updates the system using the available package manager.
|
||||
4. Logs a message indicating that the repository is configured and updated, and instructs the user to run `dnf install nodejs -y`, `yum install nodejs -y` or `microdnf install nodejs -y` to complete the installation.
|
||||
|
||||
The `setup_current` and `setup_latest` scripts are special scripts that install the current and latest versions of Node.js, respectively. The current version is 20.x and the latest version is 21.x.
|
||||
|
||||
## Updating the Scripts
|
||||
|
||||
If you make a change to the base script, you can regenerate all the version-specific scripts by running the generator script:
|
||||
|
||||
```bash
|
||||
bash generator.sh
|
||||
```
|
||||
|
||||
This script iterates over a list of versions (currently 18.x, 20.x, and 21.x), and creates a new script for each version with the updated base script. It also creates setup_current and setup_latest scripts for the current and latest versions of Node.js, respectively.
|
||||
|
||||
## Deploying the Scripts
|
||||
|
||||
After generating the scripts, you can deploy them to an S3 bucket using the AWS CLI. Here is the command to do so:
|
||||
|
||||
```bash
|
||||
aws s3 sync scripts/rpm/ s3://rpm.nodesource.com/ --exclude "*/**"
|
||||
```
|
||||
|
||||
This command syncs all the files in the scripts/rpm/ directory (but not its subdirectories) with the s3://rpm.nodesource.com/ bucket. Make sure to replace s3://rpm.nodesource.com/ with the path to your own S3 bucket.
|
||||
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
|
||||
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="XX.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
|
||||
@@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Function to create a script for a given Node.js version
|
||||
create_script() {
|
||||
local version=$1
|
||||
local script_name=$2
|
||||
local target_script="../setup_$script_name.x"
|
||||
|
||||
echo "Creating script for Node.js version $version.x"
|
||||
if sed "s/NODE_VERSION=\"XX.x\"/NODE_VERSION=\"$version.x\"/g" "$base_script" > "$target_script"; then
|
||||
echo "Script created successfully: $target_script"
|
||||
chmod +x "$target_script"
|
||||
echo "Execute permissions set for: $target_script"
|
||||
else
|
||||
echo "Error: Failed to create script for version $version.x"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if the base script exists
|
||||
base_script="./base_script.sh"
|
||||
if [ ! -f "$base_script" ]; then
|
||||
echo "Error: Base script not found at $base_script"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# List of versions
|
||||
versions=("18" "20" "22" "23" "24")
|
||||
|
||||
# Iterate over the versions and create scripts
|
||||
for version in "${versions[@]}"; do
|
||||
create_script "$version" "$version"
|
||||
done
|
||||
|
||||
# Define LTS and current Node.js versions
|
||||
lts_version="22"
|
||||
current_version="24"
|
||||
|
||||
# Create setup_lts and setup_current scripts
|
||||
create_script "$lts_version" "lts"
|
||||
create_script "$current_version" "current"
|
||||
Executable
+152
@@ -0,0 +1,152 @@
|
||||
#!/bin/bash
|
||||
|
||||
if test -t 1; then # if terminal
|
||||
ncolors=$(which tput > /dev/null && tput colors) # supports color
|
||||
if test -n "$ncolors" && test $ncolors -ge 8; then
|
||||
termcols=$(tput cols)
|
||||
bold="$(tput bold)"
|
||||
underline="$(tput smul)"
|
||||
standout="$(tput smso)"
|
||||
normal="$(tput sgr0)"
|
||||
black="$(tput setaf 0)"
|
||||
red="$(tput setaf 1)"
|
||||
green="$(tput setaf 2)"
|
||||
yellow="$(tput setaf 3)"
|
||||
blue="$(tput setaf 4)"
|
||||
magenta="$(tput setaf 5)"
|
||||
cyan="$(tput setaf 6)"
|
||||
white="$(tput setaf 7)"
|
||||
fi
|
||||
fi
|
||||
|
||||
print_bold() {
|
||||
title="$1"
|
||||
text="$2"
|
||||
|
||||
echo
|
||||
echo "${red}================================================================================${normal}"
|
||||
echo "${red}================================================================================${normal}"
|
||||
echo
|
||||
echo -e " ${bold}${yellow}${title}${normal}"
|
||||
echo
|
||||
echo -en " ${text}"
|
||||
echo
|
||||
echo "${red}================================================================================${normal}"
|
||||
echo "${red}================================================================================${normal}"
|
||||
}
|
||||
|
||||
|
||||
# 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}"
|
||||
}
|
||||
|
||||
# Send deprecation Warning
|
||||
node_deprecation_warning() {
|
||||
print_bold \
|
||||
" DEPRECATION WARNING " "\
|
||||
${bold}${underline} Node.js 16.x is no longer actively supported!${normal}
|
||||
|
||||
${bold}You will not receive security or critical stability updates${normal} for this version.
|
||||
|
||||
You should migrate to a supported version of Node.js as soon as possible.
|
||||
Use the installation script that corresponds to the version of Node.js you
|
||||
wish to install. e.g.
|
||||
|
||||
* ${red}https://rpm.nodesource.com/setup_16.x — Node.js 16 \"Gallium\" ${bold}(deprecated)${normal}
|
||||
* ${green}https://rpm.nodesource.com/setup_18.x — Node.js 18 \"Hydrogen\" (Maintenance)${normal}
|
||||
* ${red}https://rpm.nodesource.com/setup_19.x — Node.js 19 \"Nineteen\" ${bold}(deprecated)${normal}
|
||||
* ${bold}${green}https://rpm.nodesource.com/setup_20.x — Node.js 20 LTS \"Iron\" (recommended)${normal}
|
||||
* ${green}https://rpm.nodesource.com/setup_21.x — Node.js 21 \"Iron\" (current)${normal}
|
||||
|
||||
|
||||
|
||||
Please see ${bold}https://github.com/nodejs/Release${normal} for details about which
|
||||
version may be appropriate for you.
|
||||
|
||||
The ${green}${bold}NodeSource${normal} Node.js distributions repository contains
|
||||
information both about supported versions of Node.js and supported Linux
|
||||
distributions. To learn more about usage, see the repository:
|
||||
${underline}${bold}https://github.com/nodesource/distributions${normal}
|
||||
"
|
||||
echo
|
||||
echo "Continuing in 10 seconds ..."
|
||||
echo
|
||||
sleep 10
|
||||
|
||||
}
|
||||
|
||||
|
||||
# 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
|
||||
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="16.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/NODESOURCE-GPG-SIGNING-KEY-EL
|
||||
module_hotfixes=1"
|
||||
|
||||
# Write Node.js repository content
|
||||
echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null
|
||||
|
||||
# Check for availability of dnf or yum
|
||||
if command_exists dnf; then
|
||||
log "dnf available, updating..." "info"
|
||||
dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
|
||||
log "Repository is configured and updated. 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"
|
||||
log "Repository is configured and updated. Run 'yum install nodejs -y' to complete the installation." "info"
|
||||
else
|
||||
handle_error 1 "Neither yum nor dnf package manager was found. Please update your system using your package manager."
|
||||
fi
|
||||
Executable
+132
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
|
||||
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
|
||||
Executable
+132
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
|
||||
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="20.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
|
||||
Executable
+107
@@ -0,0 +1,107 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
|
||||
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="21.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
|
||||
|
||||
# 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"
|
||||
|
||||
# Check if Node.js version is an LTS version
|
||||
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]]; then
|
||||
# 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" --enablerepo="nodesource-nsolid"
|
||||
log "Repository is configured and updated." "info"
|
||||
log "Run 'dnf install nodejs -y' to complete the installation." "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\n" "success"
|
||||
exit 0
|
||||
elif command_exists yum; then
|
||||
log "yum available, updating..." "info"
|
||||
yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs" --enablerepo="nodesource-nsolid"
|
||||
log "Repository is configured and updated." "info"
|
||||
log "Run 'yum install nodejs -y' to complete the installation." "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"
|
||||
elif command_exists microdnf; then
|
||||
log "microdnf available, updating..." "info"
|
||||
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs" --enablerepo="nodesource-nsolid"
|
||||
log "Repository is configured and updated. 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
|
||||
Executable
+132
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
|
||||
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="22.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
|
||||
Executable
+132
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
|
||||
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="23.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
|
||||
Executable
+132
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
|
||||
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="24.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
|
||||
Executable
+132
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
|
||||
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="24.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
|
||||
Executable
+132
@@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
|
||||
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="22.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
|
||||
Reference in New Issue
Block a user