source: projects/specs/trunk/a/apt/remove-old-kernels.lua @ 2107

Revision 2107, 2.0 KB checked in by daisuke, 14 years ago (diff)

apt: import remove-old-kernels.lua to svn repo

  • Property svn:executable set to *
Line 
1-- This script will clean up all kernels older than current version.
2--
3-- This script must be plugged in the following slots:
4--
5--   Scripts::AptGet::Upgrade
6--   Scripts::AptGet::DistUpgrade
7--   Scripts::Synaptic::Upgrade
8--   Scripts::Synaptic::DistUpgrade
9--
10-- Author: Daisuke SUZUKI <daiuske@linux.or.jp>
11
12
13if confget("RPM::Remove-Old-Kernels/b", "true") == "false" then
14  return
15end
16
17-- remove old kernel and kernel-devel
18knames = {'kernel', 'kernel%-pae', 'kernel%-smp', 'kernel%-devel', 'kernel%-pae%-devel', 'kernel%-smp%-devel'}
19
20-- get current running kernel version
21function get_running_kernel_ver()
22    local inp = io.popen("uname -r")
23    local currentver = nil
24    for line in inp.lines(inp) do
25        currentver = string.gsub(line,"pae$","")
26    end
27    if currentver then
28        return currentver
29    else
30        return 0
31    end
32end
33
34-- get kernel version of vmlinuz.old
35function get_old_kernel_ver()
36    local inp = io.popen("readlink /boot/vmlinuz.old")
37    local oldver = nil
38    for line in inp.lines(inp) do
39        oldver = string.gsub(string.gsub(line,"pae$",""),"^vmlinuz%-","")
40    end
41    if oldver then
42        return oldver
43    else
44        return 0
45    end
46end
47
48-- remove all kernels older than current or vmlinuz.old
49function remove_old_kernels()
50    rkver = get_running_kernel_ver()
51    okver = get_old_kernel_ver()
52    pkgs = pkglist()
53    for i, pkg in ipairs(pkgs) do
54        ver = pkgvercur(pkg)
55        if not pkgisvirtual(pkg) and ver then
56            for j, kname in ipairs(knames) do
57                if string.find(pkgname(pkg), kname..'#') then
58                    if ( verstrcmp(verstr(ver), rkver) < 0 and
59                         verstrcmp(verstr(ver), okver) < 0 ) then
60                        markremove(pkg)
61                    end
62                end
63            end
64        end
65    end
66end
67
68--
69if script_slot == "Scripts::AptGet::DistUpgrade" or
70   script_slot == "Scripts::AptGet::Upgrade" or
71   script_slot == "Scripts::Synaptic::DistUpgrade" or
72   script_slot == "Scripts::Synaptic::Upgrade" then
73    remove_old_kernels()
74end
75
76-- vim:ts=4:sw=4:et
Note: See TracBrowser for help on using the repository browser.