Ubuntu 24.04.3 support for cockpit applications

Hello Community,

I am using cockpit to manage my local ubuntu server:
Description: Ubuntu 24.04.3 LTS
Release: 24.04
Codename: noble

And was trying to extened my control through cockpit’s extended applications developed by 45labs
But found out the repository https://repo.45drives.com/setup does not support the latest LTS version 24.

Line 172:
if [[ “$distro_codename” != “focal” ]] && [[ “$distro_codename” != “jammy” ]] && [[ “$distro_codename” != “bookworm” ]]; 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

My question is there any upcoming support for 24.04.3 coming soon or any workaround suggested to be able to use new applications in cockpit.

Please let me know if I you want any further information on my side.

Regards

We are not working on Ubuntu24 support at this time. We generally like to stay 1 major version behind for any bug fixes and issues that come up with the bleeding edge of software.

I’m sure once Ubuntu26 is released we will then start the process of creating Ubuntu24 packages.

1 Like

Back when 22.04 wasn’t supported, I spent an afternoon figuring out an unofficial setup script. Assuming there aren’t any major breaking changes between the versions, we should be able to do the same for 24.04. Just know it will be unofficial and, therefore, unsupported.

We should be able to get started by changing line 172 which you called out above to ignore distro_codename for noble .

if [[ “$distro_codename” != “focal” ]] && [[ “$distro_codename” != “jammy” ]] && [[ “$distro_codename” != “bookworm” ]] && [[ “$distro_codename” != “noble” ]]; then

If I get chance here, I’ll spin up an Ubuntu VM and try to work through it.

1 Like

@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


2 Likes

Hey @rymandle05 , thanks for providing this quick fix; I really appreciate it.

I was able to download all the applications.

Thank you for your assistance.

2 Likes