configs

configs
git clone https://git.prime8.dev/configs.git
Log | Files | Refs | README

commit 486d82b399d118358788ada886f6a39dfddfb9d6
parent 4091055f8093cebc22fcb03c11c5153863132d86
Author: Damian Myrda <damian@prime8.dev>
Date:   Sat, 31 Jan 2026 19:44:41 -0600

check rpm version to allow updates

Diffstat:
Msetup.sh | 46++++++++++++++++++++++++++++++++++++++--------
1 file changed, 38 insertions(+), 8 deletions(-)

diff --git a/setup.sh b/setup.sh @@ -160,19 +160,49 @@ if [ -d "$RPMS_DIR" ]; then continue fi - if rpm -q "$pkg_name" &>/dev/null; then - echo "Already installed: $pkg_name" + # Check if this exact version is installed + pkg_version=$(rpm -qp --queryformat '%{VERSION}-%{RELEASE}' "$rpm" 2>/dev/null) + installed_version=$(rpm -q --queryformat '%{VERSION}-%{RELEASE}' "$pkg_name" 2>/dev/null || echo "not-installed") + + if [ "$installed_version" = "$pkg_version" ]; then + echo "Already installed: $pkg_name-$pkg_version" else - echo "Will install: $pkg_name" + if [ "$installed_version" = "not-installed" ]; then + echo "Will install: $pkg_name-$pkg_version" + else + echo "Will update: $pkg_name from $installed_version to $pkg_version" + fi rpms_to_install+=("$rpm") fi done - # Install all at once if any found - if [ ${#rpms_to_install[@]} -gt 0 ]; then - echo "Installing ${#rpms_to_install[@]} RPM(s)..." - sudo rpm-ostree install --idempotent "${rpms_to_install[@]}" - else + # Separate new installs from updates + new_rpms=() + update_pkgs=() + update_rpms=() + for rpm in "${rpms_to_install[@]}"; do + pkg_name=$(rpm -qp --queryformat '%{NAME}' "$rpm" 2>/dev/null) + if rpm -q "$pkg_name" &>/dev/null; then + update_pkgs+=("$pkg_name") + update_rpms+=("$rpm") + else + new_rpms+=("$rpm") + fi + done + + # Handle updates first (uninstall old + install new in one transaction) + if [ ${#update_pkgs[@]} -gt 0 ]; then + echo "Updating ${#update_pkgs[@]} package(s)..." + sudo rpm-ostree uninstall "${update_pkgs[@]}" && sudo rpm-ostree install --idempotent "${update_rpms[@]}" + fi + + # Handle new installs + if [ ${#new_rpms[@]} -gt 0 ]; then + echo "Installing ${#new_rpms[@]} new package(s)..." + sudo rpm-ostree install --idempotent "${new_rpms[@]}" + fi + + if [ ${#rpms_to_install[@]} -eq 0 ]; then echo "All local RPMs already installed" fi fi