[Yum-devel] yumdownloader (1.1.2/3.1.6) with --installroot
Tim Lauridsen
tla at rasmil.dk
Fri Apr 13 06:55:39 UTC 2007
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
> Yum-devel at linux.duke.edu
> 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
More information about the Yum-devel
mailing list