Skip to content

Lineax17/tuxgrade

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

229 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tuxgrade

A robust and automated system upgrade script for multiple Linux distributions. It streamlines the update process for APT, DNF, Flatpak, Snap, and Homebrew, while ensuring system stability — especially for NVIDIA users.

Supported Distributions:

  • Fedora/RHEL based
    • Fedora
    • RHEL
    • Alma
    • Rocky
  • Debian/Ubuntu based
    • Debian
    • Ubuntu
    • Pop OS
    • Linux Mint
    • Zorin OS
  • Any distribution with Flatpak, Snap, or Homebrew

Features

  • Multi-Distribution Support: Automatically detects your Linux distribution and uses the appropriate package manager (DNF for Fedora/RHEL, APT for Ubuntu/Debian)
  • Comprehensive Updates: Updates system packages, Flatpak, Snap, and optionally Homebrew
  • Kernel Safety: Detects kernel updates on rolling release distros (like Fedora), requests user confirmation, and automatically rebuilds initramfs
  • NVIDIA Driver Support: Checks and rebuilds NVIDIA drivers to ensure they persist across kernel updates (Fedora/RHEL)
  • Modes:
    • Silent (Default): Clean interface with progress spinners
    • Verbose (-l / --verbose): Detailed output for debugging or monitoring
  • Maintenance: Automatically cleans old package caches and metadata

Usage

tuxgrade [options]

Note: For backward compatibility, the commands fedora-update and fedora-upgrade still work as aliases.

Options

  • -l, --verbose: Enable detailed output.
  • -b, --brew: Include Homebrew packages in the update.

Installation

Fedora / RHEL / Rocky / AlmaLinux

  1. Add repository (GPG key is imported automatically):

    sudo curl -fsSL -o /etc/yum.repos.d/tuxgrade.repo \
      https://raw.githubusercontent.com/Lineax17/tuxgrade/master/extras/tuxgrade.repo
  2. Install:

    sudo dnf install tuxgrade

    Note: DNF will automatically import and verify the GPG key on first install.

Debian / Ubuntu / Linux Mint / Pop!_OS / Zorin OS

Note: The Debian repository does not work at the moment. I am still figuring out how to properly implement the GPG verification.

  1. Import GPG signing key:

    sudo mkdir -p /usr/share/keyrings
    sudo curl -fsSL -o /usr/share/keyrings/tuxgrade-archive-keyring.gpg \
      https://Lineax17.github.io/tuxgrade/deb/tuxgrade-archive-keyring.gpg
  2. Add repository:

    sudo curl -fsSL -o /etc/apt/sources.list.d/tuxgrade.list \
      https://raw.githubusercontent.com/Lineax17/tuxgrade/master/extras/tuxgrade.list
  3. Install:

    sudo apt update
    sudo apt install tuxgrade

From Source

For other distributions or development purposes:

git clone https://github.com/Lineax17/tuxgrade.git
cd tuxgrade
pip install .

Security & Verification

All repository metadata is cryptographically signed with our GPG key to ensure authenticity and integrity.

Signature Coverage:

  • DEB (APT): Repository metadata is signed. Packages are not.
  • RPM (DNF/YUM): Repository metadata is signed (repo_gpgcheck=1), individual packages are currently unsigned

Key Details:

  • Algorithm: RSA 4096-bit
  • Fingerprint: F7CF 5667 CC26 2DDC 072F 2274 496C BE37 E61D EE21
  • Valid until: February 2031
  • Post-Quantum migration: Planned for 2030-2031 (ML-DSA/Dilithium)

Verify the public key:

curl -fsSL https://Lineax17.github.io/tuxgrade/deb/tuxgrade-archive-keyring.gpg | gpg --show-keys

Manual signature verification:

DEB repository:

wget https://Lineax17.github.io/tuxgrade/deb/InRelease
wget https://Lineax17.github.io/tuxgrade/deb/tuxgrade-archive-keyring.gpg
gpg --import tuxgrade-archive-keyring.gpg
gpg --verify InRelease

RPM repository:

wget https://Lineax17.github.io/tuxgrade/rpm/repodata/repomd.xml
wget https://Lineax17.github.io/tuxgrade/rpm/repodata/repomd.xml.asc
wget https://Lineax17.github.io/tuxgrade/rpm/RPM-GPG-KEY-tuxgrade
gpg --import RPM-GPG-KEY-tuxgrade
gpg --verify repomd.xml.asc repomd.xml

Documentation

📚 Complete Documentation

Contributing

Contributions are welcome! Please read the Developer Guide for details on:

  • Setting up development environment
  • Running tests
  • Code style guidelines
  • Submitting pull requests

License

This project is licensed under the MIT License - see the LICENSE file for details.

AI Assistance

AI tools were used to assist in the development of this project, primarily for documentation, help with the build pipeline, and the creation of the DNF and APT repositories.

The main project (src) contains a few lines of AI-generated code as well, but these have been thoroughly reviewed and tested by me. This project is not AI-generated slop.

About

System upgrade utility for Linux

Resources

License

Stars

Watchers

Forks

Packages