Hi,

For quite a bit I'm using this script to update my stable Gentoo system:

        $ cat $(which sysupdate)
        #!/bin/sh
        # Update the whole system
        
        set -e
        
        echo "==> Syncing Portage tree..."
        emerge --sync --quiet
        
        echo "==> Updating world..."
        emerge -auDU --with-bdeps=y @world
        
        echo "==> Removing old dependencies..."
        emerge -qc
        
        echo "==> Upgrading Perl packages (if needed)..."
        perl-cleaner --quiet --modules --ph-clean --delete-leftovers
        
        # TODO: Check errors
        cur_kver=$(readlink /usr/src/linux | sed 's/linux-//')
        new_kver=$(cd /usr/src && ls -1d linux-* | sort -Vr | head -1 | sed 
's/linux-//')
        
        if [ "${cur_kver}" != "${new_kver}" ]; then
                echo "==> Switching to kernel ${new_kver}..."
                eselect kernel set linux-${new_kver}
                if [ ! -e "/boot/vmlinuz-${new_kver}" ]; then
                        echo "==> Building kernel ${new_kver}..."
                        genkernel kernel
                fi
        else
                # Rebuild initramfs if third-party modules were updated
                if [ -n $(find /lib/modules/${cur_kver} \
                                -newer /boot/initramfs-${cur_kver}.img) ]; then
                        dracut -f
                fi
        fi

Still, it won't catch some issues with Go or Haskell (as there are
separate app-admin/go-updater and app-admin/haskell-updater ebuilds
still around in the Tree) + there is a separate genkernel post-install
script that cleans up old kernels during the kernel update.

So, I was wondering -- maybe there is a
fool-proof-one-command-that-do-it-all solution wondering somewhere?

Reply via email to