Charlie Brady wrote:

First off, excuse my ignorance of much of yum and python. New territory for me.

I'm investigating use of yumdownloader to marshall a coherent set of RPMs for a small CentOS based iso image. Although my target is CentOS5, my development platform is FC6, so I started with yum-3.0.5-2 and yum-utils-1.0.3. I was able to patch yumdownloader to take a --installroot arg (see end of post).

This gave me something that ran, but not to completion:

$ ./yumdownloader-1.0.3 -c yum.conf --installroot installroot --destdir RPMS.x --resolve bash smeos 100% |=========================| 951 B 00:00 smetest 100% |=========================| 951 B 00:00 c5 100% |=========================| 951 B 00:00

Traceback (most recent call last):
  File "./yumdownloader-1.0.3", line 199, in ?
    main()
  File "./yumdownloader-1.0.3", line 167, in main
    if not pkg in toDownload:
File "/usr/lib/python2.4/site-packages/yum/packages.py", line 191, in __eq__
    if other == None:
File "/usr/lib/python2.4/site-packages/yum/transactioninfo.py", line 403, in __cmp__
    if self.name > other.name:
AttributeError: 'NoneType' object has no attribute 'name'

This patch to /usr/lib/python2.4/site-packages/yum/packages.py fixed that little problem:

    def __eq__(self, other):
#        if other == None:
#            return False
if comparePoEVR(self, other) == 0 and self.arch == other.arch and self.name == other.name:
            return True
        return False

OK, now it runs, but it doesn't "resolve" a very complete RPM set:

$ ls RPMS.x/
bash-3.1-16.1.i386.rpm
$

No glibc, etc.

So now I'm trying again, but with yum-3.1.6 and yum-install-1.1.2. I now find that yumdownloader requires various things to already exist in the installroot which it was happy and able to create in the earlier version. Specifically it expects the installroot to already include an rpmdb and cache directories for each repository (both of which I've found workarounds for), and then also demands to find a pre-cached repomd.xml file per repository.

Are these intentional changes of behaviour, or are they regressions which I can help to debug?
This is not intentional :-)

Here's the --installroot patch for yum-utils-1.0.3:


-def initYum(yumconfigfile):
+def initYum(opts):
     global logger
     my = yum.YumBase()
- my.doConfigSetup(fn=yumconfigfile,init_plugins=False) # init yum, without plugins + my.doConfigSetup(fn=opts.config,init_plugins=False) # init yum, without plugins
     my.conf.uid = os.geteuid()
     if my.conf.uid != 0:
         cachedir = getCacheDir()
@@ -62,6 +62,8 @@
       help='operate on source packages')
parser.add_option("-e","--enablerepo", default=[], action="append", dest="repo",
       help='enable repository')
+    parser.add_option("", "--installroot", default="/",
+        help="set install root")

     (opts, args) = parser.parse_args()
     if len(args) < 1:
@@ -73,7 +75,13 @@
     global logger
     logger = logging.getLogger("yum.verbose.yumdownloader")
     (opts, args) = parseArgs()
-    my = initYum(opts.config)
+    my = initYum(opts)



_______________________________________________
Yum-devel mailing list
[EMAIL PROTECTED]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel
yumdownloader in yum-utils 1.1.x has been redesigned to inherit to options from the yum-cli, it look like it have introduced some regressions. You installroot patches look fine to me, if no one have any objections, i will add the patches.

Tim

_______________________________________________
Yum-devel mailing list
[EMAIL PROTECTED]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to