[yum-cvs] yum-utils package-cleanup.py,1.7,1.8

Panu Matilainen pmatilai at login.linux.duke.edu
Wed Jul 13 10:32:55 UTC 2005


Update of /home/groups/yum/cvs/yum-utils
In directory login:/tmp/cvs-serv26840

Modified Files:
	package-cleanup.py 
Log Message:
Add --orphans option to list locally installed packages, eg those which aren't
available in any currently configured repositories.


Index: package-cleanup.py
===================================================================
RCS file: /home/groups/yum/cvs/yum-utils/package-cleanup.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- package-cleanup.py	13 Jun 2005 17:48:33 -0000	1.7
+++ package-cleanup.py	13 Jul 2005 10:32:53 -0000	1.8
@@ -33,16 +33,19 @@
 from yum.logger import Logger
 from optparse import OptionParser
 from yum.packages import YumInstalledPackage
+from yum import Errors
 
-
-def initYum():
+def initYum(opts):
     my = yum.YumBase()
     my.doConfigSetup()
     my.log = Logger(threshold=my.conf.getConfigOption('debuglevel'), 
     file_object =sys.stdout)
-    # Disable all enabled repositories
-    for repo in my.repos.listEnabled():
-        my.repos.disableRepo(repo.id)
+    if opts.orphans:
+        my.doRepoSetup()
+    else:
+        # Disable all enabled repositories
+        for repo in my.repos.listEnabled():
+            my.repos.disableRepo(repo.id)
 
     my.doTsSetup()
     my.doSackSetup()
@@ -114,6 +117,17 @@
         if name.startswith('lib') or all:
             print "%s-%s-%s.%s" % (pkg[0],pkg[3],pkg[4],pkg[1])
 
+def listOrphans(my):
+    installed = my.rpmdb.getPkgList()
+    for pkgtup in installed:
+        (n,a,e,v,r) = pkgtup
+        if n == "gpg-pubkey":
+            continue
+
+        try:
+            po = my.getPackageObject(pkgtup)
+        except Errors.DepError:
+            print "%s-%s-%s.%s" % (n, v, r, a)
 
 def getKernels(my):
     """return a list of all installed kernels, sorted newest to oldest"""
@@ -236,6 +250,8 @@
       help='List leaf nodes in the local RPM database')
     parser.add_option("--all", default=False, dest="all",action="store_true",
       help='When listing leaf nodes also list leaf nodes that are not libraries')
+    parser.add_option("--orphans", default=False, dest="orphans",action="store_true",
+      help='List installed packages which are not available from currenly configured repositories.')
     parser.add_option("-q", "--quiet", default=False, dest="quiet",action="store_true",
       help='Print out nothing unecessary')
     parser.add_option("-y", default=False, dest="confirmed",action="store_true",
@@ -248,9 +264,9 @@
       help="Do not remove kernel-devel packages when removing kernels")
 
     (opts, args) = parser.parse_args()
-    if not exactlyOne((opts.problems,opts.leaves,opts.kernels)): 
+    if not exactlyOne((opts.problems,opts.leaves,opts.kernels,opts.orphans)): 
         parser.print_help()
-        print "Please specify either --problems, --leaves or --oldkernels"
+        print "Please specify either --problems, --leaves, --orphans or --oldkernels"
         sys.exit(0)
     return (opts, args)
     
@@ -258,7 +274,7 @@
     (opts, args) = parseArgs()
     if not opts.quiet:
         print "Setting up yum"
-    my = initYum()
+    my = initYum(opts)
     
     if (opts.kernels):
         if os.geteuid() != 0:
@@ -271,6 +287,10 @@
         listLeaves(opts.all)
         sys.exit(0)
 
+    if (opts.orphans):
+        listOrphans(my)
+        sys.exit(0)
+
     if not opts.quiet:
         print "Reading local RPM database"
     pkgs = getLocalRequires(my)




More information about the Yum-cvs-commits mailing list