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?