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