[Yum] using createrepo to provide repodata for fedora-core iso
David Timms
dtimms at iinet.net.au
Wed Nov 22 21:44:47 UTC 2006
David Timms wrote: {adding info to coupla-week old thread}
> Tim Lauridsen wrote:
>> David Timms wrote:
>>> Anyone know how to use createrepo {or is there another tool} to
>>> create useful repodata for a mounted dvd.iso image for say fedora core.
>>>
>>> It seems that while the image includes a toplevel /repodata folder,
>>> when it is mounted and yum.repos.d/fedora-core.repo is pointed at the
>>> / of the mounted iso image, yum is not happy with what it finds.
>>>
>>> I have used createrepo folder option to create a new repodata
>>> directory and repo one folder above where the iso is mounted, so that
>>> the folder is read/write, and the create can succeed.
>>>
>>> createrepo -o . disc/Fedora/RPMS/
>>>
>>> What I find is that primary.xml does not include the relative path
>>> from the folder above the new repodata directory, and hence fails.
>>> {actually it includes only the filename of the rpm files not any path
>>> at all.}
>>>
>>> folder where iso is mounted:
>>> /home/install/software/linux/fedora/core/6/yum/i386/disc
>>>
>>> location of rpms:
>>> /home/install/software/linux/fedora/core/6/yum/i386/disc/Fedora/RPMS
>>>
>>> writable location: {where yum.repos.d/fedora-core.repo baseurl will
>>> point}
>>> /home/install/software/linux/fedora/core/6/yum/i386/
>>>
>>> What is the appropriate command to generate usable repodata ?
>>>
>>> DaveT.
>> Check this howto:
>>
>> http://www.city-fan.org/tips/YumRepoFromImages
> Paul's tip can work, but I found that there is another requirement: the
> r/w folder {i386} where subdir where .iso will be mounted {disc} must
> not have any other .rpm files any peer subdirs. Since my machine is laid
> out:
> /home/install/software/linux/fedora/core/6/i386/
> /home/install/software/linux/fedora/core/6/i386/disc {dvd mounted here}
> /home/install/software/linux/fedora/core/6/i386/disc/Fedora/RPMS
> /home/install/software/linux/fedora/core/6/i386/yum {normal yum cache,
> keepcache=1, so that cache doesn't fill up /var partition}
>
> If I then:
> $ cd /home/install/software/linux/fedora/core/6/i386/
> $ createrepo .
> repodata is created at:
> /home/install/software/linux/fedora/core/6/i386/repodata
> as expected, but the primary.gz includes all the rpms from the other yum
> folder {updates/extras and other repositories}.
>
> If there is no other way to generate repodata in this situation, then I
> would like to suggest that an additional option needs to be added to
> createrepo.
> --include=dir-to-include.
>
> Any thoughts on whether such a command option should be implemented ?
Hi, I thought my local fedora core 6 dvd repo using info from
http://www.city-fan.org/tips/YumRepoFromImages , and what I subsequently
learned about making sure there is no other rpms in any subdir under the
folder that is the target for createrepo, was succesful.
However, I performed a definite test by #commenting out other
fedora-core.repo baseurls and mirror settings, leaving only my local
repo entry.
This did not work. For example, even though createrepo was run at one
folder higher than where the dvd...iso is mounted {so that the repodata
folder can be created}, and during the process the rpm paths are shown
as disc/Fedora/RPMS/aa....i386.rpm, yum would fail to retrieve the
package information.
With debug yum -d 15, I could see that it was trying to download from
my-path/Fedora/RPMS/... rather than
my-path/disc/Fedora/RPMS/... which is where the files exist.
Redoing the process, into a new folder {dvd}, I found that still the
incorrect path was being used. primary.xml {one extracted} definitely
shows the paths as dvd/Fedora/RPMS/whatever.rpm
For more reliable tests, I ran yum clean metadata between test runs. It
hit me that something is still storing these old {incorrect} paths, in
fact the sqlite cache is still present on disk.
yum clean dbcache and then tested again. Works perfectly {picks up the
paths that are actually in the repo being requested}. :-)
This seems to be a fault in the way yum handles the sqlite db. While
there is a workaround {the motto should be "it just works" rather than
"you just need to find and do this workaround"}, to get around the
problem, would it be possible for yum to determine itself that it needs to:
- adjust the paths within the sqlite db ,and/or
- rebuild the sqlite db from scratch ?
David Timms.
More information about the Yum
mailing list