@dead - I was able to get this modified version of the script to setup the jammy repo on a Ubuntu 24.04 LXC. I was able to install cockpit and the 45Drives benchmark module successfully. You’re welcome to check it out for your own use. Just remember the script and this configuration is unofficial and unsupported.
setup.sh
#!/bin/bash
# 2021 Dawson Della Valle <ddellavalle@45drives.com>
# 2025 Brett Kelly <bkelly@45drives.com>
# v2
# OS Supported
# Rocky 7,8,9
# Ubuntu 20,22
# Debian Bookworm
# THIS SCRIPT HAS BEEN MODIFIED TO PROVIDE UNOFFICIAL OS SUPPORT FOR UBUNTU 24
# THE OFFICIAL SCRIPT CAN BE FOUND AT https://repo.45drives.com/setup
# USE AT YOUR OWN RISK
function get_base_distro() {
local distro=$(cat /etc/os-release | grep '^ID_LIKE=' | head -1 | sed 's/ID_LIKE=//' | sed 's/"//g' | awk '{print $1}')
if [ -z "$distro" ]; then
distro=$(cat /etc/os-release | grep '^ID=' | head -1 | sed 's/ID=//' | sed 's/"//g' | awk '{print $1}')
fi
echo $distro
}
function get_distro() {
local distro=$(cat /etc/os-release | grep '^ID=' | head -1 | sed 's/ID=//' | sed 's/"//g' | awk '{print $1}')
echo $distro
}
function get_version_id() {
local version_id=$(cat /etc/os-release | grep '^VERSION_ID=' | head -1 | sed 's/VERSION_ID=//' | sed 's/"//g' | awk '{print $1}' | awk 'BEGIN {FS="."} {print $1}')
echo $version_id
}
function get_codename() {
local distro=$(cat /etc/os-release | grep '^VERSION_CODENAME' | cut -d = -f2)
echo $distro
}
euid=$(id -u)
if [ $euid -ne 0 ]; then
echo -e '\nYou must be root to run this utility.\n'
exit 1
fi
distro=$(get_base_distro)
custom_distro=$(get_distro)
distro_version=$(get_version_id)
distro_codename=$(get_codename)
if [ "$distro" == "rhel" ] || [ "$distro" == "fedora" ]; then
echo "Detected RHEL-based distribution. Continuing..."
items=$(find /etc/yum.repos.d -name '45drives.repo')
if [[ -z "$items" ]]; then
echo "There were no existing 45Drives repos found. Setting up the new repo..."
else
count=$(echo "$items" | wc -l)
echo "There were $count 45Drives repo(s) found. Archiving..."
mkdir -p /opt/45drives/archives/repos
mv /etc/yum.repos.d/45drives.repo /opt/45drives/archives/repos/45drives-$(date +%Y-%m-%d).repo
echo "The obsolete repos have been archived to '/opt/45drives/archives/repos'. Setting up the new repo..."
fi
curl -sSL https://repo.45drives.com/repofiles/rocky/45drives-enterprise.repo -o /etc/yum.repos.d/45drives-enterprise.repo
res=$?
if [ "$res" -ne "0" ]; then
echo "Failed to download the new repo file. Please review the above error and try again."
exit 1
fi
el_id="none"
if [[ "$distro_version" == "7" ]] || [[ "$distro_version" == "8" ]] || [[ "$distro_version" == "9" ]]; then
el_id=$distro_version
fi
if [[ "$el_id" == "none" ]]; then
echo "Failed to detect the repo that would best suit your system. Please contact repo@45drives.com to get this issue rectified!"
exit 1
fi
res=$?
if [ "$res" -ne "0" ]; then
echo "Failed to update the new repo file. Please review the above error and try again."
exit 1
fi
echo "The new repo file has been downloaded. Updating your package lists..."
pm_bin=dnf
command -v dnf > /dev/null 2>&1 || {
pm_bin=yum
}
echo "Using the '$pm_bin' package manager..."
$pm_bin clean all -y
res=$?
if [ "$res" -ne "0" ]; then
echo "Failed to run '$pm_bin clean all -y'. Please review the above error and try again."
exit 1
fi
echo "Success! Your repo has been updated to our new server!"
exit 0
fi
if [ "$distro" == "debian" ]; then
echo "Detected Debian-based distribution. Continuing..."
items=$(find /etc/apt/sources.list.d -name 45drives.list)
if [[ -z "$items" ]]; then
echo "There were no existing 45Drives repos found. Setting up the new repo..."
else
count=$(echo "$items" | wc -l)
echo "There were $count 45Drives repo(s) found. Archiving..."
mkdir -p /opt/45drives/archives/repos
mv /etc/apt/sources.list.d/45drives.list /opt/45drives/archives/repos/45drives-$(date +%Y-%m-%d).list
echo "The obsolete repos have been archived to '/opt/45drives/archives/repos'. Setting up the new repo..."
fi
if [[ -f "/etc/apt/sources.list.d/45drives.sources" ]]; then
rm -f /etc/apt/sources.list.d/45drives.sources
fi
echo "Updating ca-certificates to ensure certificate validity..."
apt update
apt install ca-certificates -y
echo "Installing gpg..."
apt install gpg -y
wget -qO - https://repo.45drives.com/key/gpg.asc | gpg --pinentry-mode loopback --batch --yes --dearmor -o /usr/share/keyrings/45drives-archive-keyring.gpg
res=$?
if [ "$res" -ne "0" ]; then
echo "Failed to add the gpg key to the apt keyring. Please review the above error and try again."
exit 1
fi
echo "Installing curl..."
apt install curl -y
if [ "$distro_codename" = "noble" ]; then\
curl -sSL https://repo.45drives.com/repofiles/$custom_distro/45drives-enterprise-jammy.list -o /etc/apt/sources.list.d/45drives-enterprise-jammy.list
else
curl -sSL https://repo.45drives.com/repofiles/$custom_distro/45drives-enterprise-$distro_codename.list -o /etc/apt/sources.list.d/45drives-enterprise-$distro_codename.list
fi
res=$?
if [ "$res" -ne "0" ]; then
echo "Failed to download the new repo file. Please review the above error and try again."
exit 1
fi
if [[ "$distro_codename" != "focal" ]] && [[ "$distro_codename" != "jammy" ]] && [[ "$distro_codename" != "bookworm" ]] && [[ "$distro_codename" != "noble" ]]; then
echo "You are on an unsupported version of Debian/Ubuntu. Current repo support is Ubuntu 22 (jammy), Ubuntu 20(focal), and Debian 12 (Bookworm)"
exit 1
fi
echo "The new repo file has been downloaded. Updating your package lists..."
pm_bin=apt
$pm_bin update -y
res=$?
if [ "$res" -ne "0" ]; then
echo "Failed to run '$pm_bin update -y'. Please review the above error and try again."
exit 1
fi
echo "Success! Your repo has been updated to our new server!"
exit 0
fi
echo -e "\nThis command has been run on a distribution that is not supported by the 45Drives Team.\n\nIf you believe this is a mistake, please contact our team at repo@45drives.com!\n"
exit 1