Proposed change: add "-D" to download without installing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Greetings,

My company maintains Linux server appliances in the field at our client sites. Our customer service is very high-touch -- when it's time to upgrade the appliances, members of our client services team visit each client in person and install the upgrade on-site. Our appliance platform is RPM-based, and we distribute updates with yum, so "yum update" is part of pretty much every client upgrade.

The problem we run into is that it can take upwards of an hour for all of the RPMs to download before the upgrade actually starts. We'd rather not have our client services team sitting around twiddling their thumbs for an hour waiting for bits to download, so what we're like to be able to do is to download all the RPMs in advance of the on-site client upgrade visit. We'd like the process of doing this download to be as straightforward as possible; in particular, we'd like our client services folks to use yum for the download, just like they would use yum for the update.

I know about yumdownloader, and it can certainly be made to download packages, but it doesn't really have the "smarts" that we're looking for -- it won't calculate which packages to download automatically a la "yum update", and it won't put all the downloaded packages in the right subdirectories of /var/cache/yum.

Therefore, to solve this problem, I came up with the following minimal change to yum. It is very useful to us, and I think it will be sufficiently useful to others that I'd like to ask you to consider merging it into the mainline. The idea is simple: When "-D" is specified on the command line, yum should stop what it's doing after downloading but before installing. Our client services folks can thus run "yum -D update" before going on-site, and then "yum update" when they get there to do the upgrade.

The implementation is also simple :-). See the attached patch against yum 3.2.0 (or at least the version of yum 3.2.0 that's in Fedora Core).

Thanks,

 Jonathan Kamens

--- config.py~	2007-05-16 23:25:51.000000000 -0400
+++ config.py	2007-06-17 19:54:58.000000000 -0400
@@ -613,6 +613,7 @@
     yumconf.yumvar = yumvars
     yumconf.uid = 0
     yumconf.cache = 0
+    yumconf.downloadonly = 0
     yumconf.progess_obj = None
     
     # propagate the debuglevel and errorlevel values:
--- yum.8.orig	2007-06-18 00:36:27.000000000 -0400
+++ yum.8	2007-06-18 00:36:07.000000000 -0400
@@ -174,6 +174,10 @@
 .IP "\fB\-C\fP" 
 Tells yum to run entirely from cache - does not download or update any
 headers unless it has to to perform the requested action.
+.IP "\fB\-D\fP" 
+Tells yum to stop after downloading packages into the cache but before
+installing them.  This allows you to prime the cache for a later install
+or update.
 .IP "\fB\-\-version\fP" 
 Reports the \fByum\fP version number and exits.
 .IP "\fB\-\-installroot=root\fP" 
--- cli.py~	2007-05-16 23:25:51.000000000 -0400
+++ cli.py	2007-06-17 20:14:01.000000000 -0400
@@ -346,7 +346,12 @@
         
         # unset the sigquit handler
         signal.signal(signal.SIGQUIT, signal.SIG_DFL)
-        
+
+        if self.conf.downloadonly == 1:
+            self.verbose_logger.log(yum.logginglevels.INFO_2,
+                                    'Exiting after successful download')
+            sys.exit(0)
+
         self.initActionTs() # make a new, blank ts to populate
         self.populateTs(keepold=0) # populate the ts
         self.ts.check() #required for ordering
@@ -1114,6 +1119,8 @@
             # if not root then caching is enabled
             if opts.cacheonly or self.base.conf.uid != 0:
                 self.base.conf.cache = 1
+            if opts.downloadonly:
+                self.base.conf.downloadonly = 1
 
             if opts.obsoletes:
                 self.base.conf.obsoletes = 1
@@ -1194,6 +1201,9 @@
         self.add_option("-C", "", dest="cacheonly",
                 action="store_true", default=False,
                 help="run entirely from cache, don't update cache")
+        self.add_option("-D", "", dest="downloadonly",
+                action="store_true", default=False,
+                help="download without installing")
         self.add_option("-c", "", dest="conffile", action="store", 
                 default='/etc/yum/yum.conf', help="config file location",
                 metavar=' [config file]')
_______________________________________________
Yum mailing list
Yum@xxxxxxxxxxxxxxxxxxxx
https://lists.dulug.duke.edu/mailman/listinfo/yum

[Index of Archives]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]

  Powered by Linux