Zeilennummern ein/ausschalten
1
2 import os
3
4 def get_all_rpms():
5 result = os.popen("rpm -qa --qf '%{name}\n'| sort").readlines()
6 return map(lambda x: x.strip(), result)
7
8 def get_depends(package):
9 result = os.popen(r"""apt-cache whatdepends %s | grep -v '^ %s-[^-]\+-[^-]\+$' |\
10 grep '^ [^ ]' | sed -e 's/ \(.*\)-[^-]\+-[^-]\+$/\1/' | sort -u""" % (package, package)).readlines()
11 return map(lambda x: x.strip(), result)
12
13 def have_same_entry(list1, list2):
14 i1, i2 = 0, 0
15 l1 , l2 = len(list1), len(list2)
16 while (i1<l1) and (i2<l2):
17 if (list1[i1]<list2[i2]): i1 += 1
18 elif (list1[i1]>list2[i2]): i2 += 1
19 else: return 1
20 return 0
21
22 def get_lists():
23 all_rpms = get_all_rpms()
24 remove = []
25 keep = []
26 print "Calculating Depends:"
27 for pkg in all_rpms:
28 depends = get_depends(pkg)
29 if have_same_entry(all_rpms, depends):
30 remove.append(pkg)
31 print "%s removed" % pkg
32 else:
33 keep.append(pkg)
34 print "%s kept" % pkg
35 return keep, remove
36
37 keep, remove = get_lists()
38
39 def write(filename, list):
40 f = file(filename, "w")
41 for i in list:
42 f.write(i)
43 f.write("\n")
44 f.close()
45
46 print "Needed packeges"
47 print keep
48 write("rpms.keep", keep)
49 print "other packages"
50 print remove
51 write("rpms.remove", remove)