#!/usr/bin/apt-get script -- apt kernel upgrade script by pmatilai at laiskiainen.org -- modified by JH -- intented to use with RedHat kernel naming conventions -- revision 2 / 2003-07-30 function get_running_kernel_ver() inp = io.popen("uname -r") for line in inp.lines(inp) do return line end end kernelnames = {"bigmem", "smp"} function get_kerneltype() for i, ktype in ipairs(kernelnames) do if string.find(get_running_kernel_ver(), ktype) then return "kernel-"..ktype end end return "kernel" end function get_latest(kname) pkgs = pkglist() latest = "0" for i, pkg in ipairs(pkgs) do if not pkgisvirtual(pkg) and string.find(pkgname(pkg), kname.."#") then ver = pkgvercur(pkg) if not ver then ver = pkgvercand(pkg) end if ver and verstrcmp(verstr(ver), latest) > 0 then latest = verstr(ver) latestpkg = pkg end end end return latestpkg end function remove_old_kernels(kname) kver = get_running_kernel_ver() pkgs = pkglist() for i, pkg in ipairs(pkgs) do if not pkgisvirtual(pkg) and string.find(pkgname(pkg), kname.."#") and pkgvercur(pkg) then if verstrcmp(verstr(pkgvercur(pkg)), kver) < 0 then markremove(pkg) end end end end if not confget("RPM::Upgrade-Kernel/b") == "true" then return end kname = get_kerneltype() latest = get_latest(string.gsub(kname, "-", "--")) if latest then markinstall(latest) if confget("RPM::Remove-Old-Kernels/b") == "true" then remove_old_kernels(kname) end end