def install_dependencies_centos_rhel_rocky()

in linux/install_gpu_driver.py [0:0]


def install_dependencies_centos_rhel_rocky(system: System, version: str) -> bool:
    """
    Installs required kernel-related packages and pciutils for CentOS and RHEL.
    """
    if version.startswith("8"):
        binary = "dnf"
    else:
        binary = "yum"
    run(f"{binary} clean all")
    general_update = run(f"{binary} update -y --skip-broken")
    if "kernel" in general_update.stdout.decode():
        return True  # Kernel update requires a reboot before continuing
    kernel_install = run(f"{binary} install -y kernel")
    kernel_version = run("uname -r").stdout.decode().strip()
    if "already installed" not in kernel_install.stdout.decode():
        return True  # Kernel update requires a reboot
    if system == System.Rocky:
        if version.startswith("8"):
            run("dnf config-manager --set-enabled powertools")
        run(
            f"dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel{version[0]}/x86_64/cuda-rhel{version[0]}.repo"
        )
        run("dnf update -y --skip-broken")
        run("dnf install -y epel-release")
        run(
            f"dnf install -y kernel-devel-{kernel_version} kernel-headers-{kernel_version}"
        )
    elif system == System.CentOS and version.startswith("8"):
        run("dnf config-manager --set-enabled powertools")
        run("dnf install -y epel-release epel-next-release")
    elif system == System.CentOS and version.startswith("9"):
        run(
            "dnf install -y https://dl.fedoraproject.org/pub/epel/next/9/Everything/x86_64/Packages/e/epel-next-release-9-1.el9.next.noarch.rpm"
        )
        run(
            "dnf install -y https://dl.fedoraproject.org/pub/epel/next/9/Everything/x86_64/Packages/e/epel-release-9-1.el9.next.noarch.rpm"
        )
    elif system == System.RHEL and version[0] in ("8", "9"):
        run(
            f"dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel{version[0]}/x86_64/cuda-rhel{version[0]}.repo"
        )
        run("dnf update -y --skip-broken")
        run(
            f"dnf install -y kernel-devel-{kernel_version} kernel-headers-{kernel_version}"
        )
        run(
            f"dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-{version[0]}.noarch.rpm"
        )

    run(
        f"{binary} install -y kernel-devel epel-release "
        f"kernel-headers pciutils gcc make dkms acpid "
        f"libglvnd-glx libglvnd-opengl libglvnd-devel pkgconfig"
    )

    return False