[Fedora-packaging] kernel-module-proposal 2 and yum: some tests

Thorsten Leemhuis fedora at leemhuis.info
Thu Sep 29 16:47:10 UTC 2005


Am Donnerstag, den 29.09.2005, 11:31 -0400 schrieb seth vidal:
> > #######################
> > Adding a repo with
> > 
> > > ndiswrapper-1.1-1.i386.rpm
> > > kernel-module-ndiswrapper-1.1-1.2.6.11_1.1369_FC4.i686.rpm     
> > > kernel-module-ndiswrapper-1.1-1.2.6.11_1.1369_FC4smp.i686.rpm 
> > 
> > in it and typing 
> > 
> > ># yum --disablerepo=updates-released --enablerepo=step_1 install 'kernel-module-ndiswrapper'
> > 
> > will result in:
> > 
> > [...]
> >
> > Seems yum prefers to install the kernel-module for the smp kernel and
> > therefor also installs that kernel even when a UP-Kernel is installed
> > already. Not very nice :-( 
> 
> how should yum have known which of those two you wanted? what are the
> clues it should use to know which of those to install? They're both
> named the same thing.
>[...]
> #######################
> > Okay, next test; Both UP- and SMP-Kernel are installed now (as it
> > normally is the case on SMP-Systems). typing
> > [...] 
> > In and ideal world yum would install modules for both up and smp in that
> > case.
> 
> okay but HOW can it know? You've described what you see as problem but
> you haven't described any way yum can know about what's you think
> _should_ be going on.

But it is a problem and we should (read: need to) solve it imho. How?
I'm not sure. We could

- package modules for all kernels in one package (I don't really like
this idea, but if this is the only solution we need to go it imho)
- fix our proposal so it works better with yum (hint's from you are
greatly appreciated)
- add support for yum somehow so it can resolve the dep correctly. I
unfortunately don't know neither yum nor python enough to fix that
myself :-|

> > #######################
> > Next test (only with SMP-kernel): New Ndiswrapper-Version. This is in
> > the repo now:
> > 
> > > kernel-module-ndiswrapper-1.1-1.2.6.11_1.1369_FC4.i686.rpm
> > > kernel-module-ndiswrapper-1.1-1.2.6.11_1.1369_FC4smp.i686.rpm
> > > kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4.i686.rpm
> > > kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4smp.i686.rpm
> > > ndiswrapper-1.1-1.i386.rpm
> > > ndiswrapper-1.1-2.i386.rpm
> > 
> > Works now! Did not with older yum version. Problem was: kernel-modules
> > normally are installed, not updated. But in this case the pgk needs to
> > be updated cause the files in the package would conflict otherwise.
> 
> is this item marked as provided 'kernel-module'?

Yes, both 'kernel-module' and 'kernel-modules'. But while at it: What of
those two is the correct one? I see both in different areas of yum:

$ grep kernel-module  $(rpm -ql yum | grep -v -e ChangeLog -e '.pyc$' )
/usr/lib/python2.4/site-packages/yum/config.py:                                              'kernel-modules',
/usr/lib/python2.4/site-packages/yum/depsolve.py:                    if txmbr.po.name.startswith("kernel-module-"):

> > Yum installs the new kernel, new ndiswrapper and new
> > kernel-module-ndiswrapper (as it should). But here we hit a problem with
> > our proposal. Older kernel-module-versions stay installed, but they
> > probably won't work with the new ndiswrapper-utils-package (maybe not in
> > the case of ndiswrapper, but ati-fglrx, nvidia-glx, qemu and other pkg.
> > likely will have this problem). I thought a Obsoletes in the
> > kernel-module-ndiswraper.spec like the following might help:
>
> so you think yum should remove other, older kernel modules even though
> it doesn't have the info available to know to do that?

If there is something like

Obsoletes: kernel-module-%{mainpkgname} < %{version}-%{release}

then IMHO yes. This (or something similar) afaics is needed when for
example 

kernel-module-ndiswrapper-1.1-1.2.6.11_1.1369_FC4.i686.rpm

works with this

ndiswrapper-1.1-2.i386.rpm

userland package. But after a kernel update and a pgk-update this might
be installed:

kernel-module-ndiswrapper-1.1-2.2.6.12_1.1447_FC4.i686.rpm
ndiswrapper-1.2-1.i386.rpm

But ndiswrapper-1.2 might not work with the kernel-module from
ndiswrapper-1.1 (in case you boot 2.6.11_1.1369_FC4 now)

One solution to avoid this would be to rebuild the kernel-module for all
kernels ever released. But yum needs to install all those
kenrel-module-pgk. for all kernels then, too. 

> > But huuuh, why are they still installed? afterwards?
> I'm not sure I understand the case you're describing here.

Look, it works if you use just rpm:

> [thl at localhost step_5]$ rpm -qa '*ndiswrapper*'
> [thl at localhost step_5]$ sudo rpm -Uvh ndiswrapper-1.1-2.i386.rpm kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4smp.i686.rpm
> Preparing...                ########################################### [100%]
>    1:kernel-module-ndiswrapp########################################### [ 50%]
> WARNING: Module /lib/modules/2.6.11-1.1369_FC4smp/extra/ndiswrapper/ndiswrapper.ko is not an elf object
>    2:ndiswrapper            ########################################### [100%]
> [thl at localhost step_5]$ rpm -qa '*ndiswrapper*'
> kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4smp
> ndiswrapper-1.1-2
> [thl at localhost step_5]$ sudo rpm -Uvh ndiswrapper-1.2-1.i386.rpm kernel-module-ndiswrapper-1.2-1.2.6.12_1.1456_FC4smp.i686.rpm
> Preparing...                ########################################### [100%]
>    1:kernel-module-ndiswrapp########################################### [ 50%]
>    2:ndiswrapper            ########################################### [100%]
> [thl at localhost step_5]$ rpm -qa '*ndiswrapper*'
> kernel-module-ndiswrapper-1.2-1.2.6.12_1.1456_FC4smp
> ndiswrapper-1.2-1
> [thl at localhost step_5]$ rpm -qp --obsoletes kernel-module-ndiswrapper-1.2-1.2.6.12_1.1456_FC4smp.i686.rpm
> kernel-module-ndiswrapper < 1.2-1
> [thl at localhost step_5]$

But not in yum (even if it says it removes the old stuff):

> [thl at localhost step_5]$ rpm -qa '*ndiswrapper*'
> kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4smp
> ndiswrapper-1.1-2
> [thl at localhost step_5]$ sudo yum --disablerepo=updates-released --enablerepo=step_5 update
> Setting up Update Process
> Setting up repositories
> step_5                    100% |=========================|  951 B    00:00
> extras                    100% |=========================| 1.1 kB    00:00
> base                      100% |=========================| 1.0 kB    00:00
> Reading repository metadata in from local files
> Resolving Dependencies
> --> Populating transaction set with selected packages. Please wait.
> ---> Package kernel-module-ndiswrapper.i686 0:1.2-1.2.6.12_1.1456_FC4smp set to be installed
> ---> Package ndiswrapper.i386 0:1.2-1 set to be updated
> --> Running transaction check
> 
> Dependencies Resolved
> 
> =============================================================================
>  Package                 Arch       Version          Repository        Size
> =============================================================================
> Installing:
>  kernel-module-ndiswrapper  i686       1.2-1.2.6.12_1.1456_FC4smp  step_5            3.4 k
>      replacing  kernel-module-ndiswrapper.i686 1.1-2.2.6.11_1.1369_FC4smp

       ^^^^^^^^ <-- ???

> Updating:
>  ndiswrapper             i386       1.2-1            step_5             21 k
> 
> Transaction Summary
> =============================================================================
> Install      1 Package(s)
> Update       1 Package(s)
> Remove       0 Package(s)
> Total download size: 25 k
> Is this ok [y/N]: y
> Downloading Packages:
> Running Transaction Test
> Finished Transaction Test
> Transaction Test Succeeded
> Running Transaction
>   Installing: kernel-module-ndiswrapper    ######################### [1/3]
>   Updating  : ndiswrapper                  ######################### [2/3]
>   Cleanup   : ndiswrapper                  ######################### [3/3]
> 
> Installed: kernel-module-ndiswrapper.i686 0:1.2-1.2.6.12_1.1456_FC4smp
> Updated: ndiswrapper.i386 0:1.2-1
> Replaced: kernel-module-ndiswrapper.i686 0:1.1-2.2.6.11_1.1369_FC4smp

 ^^^^^^^^ <-- ???

> Complete!
> [thl at localhost step_5]$ rpm -qa '*ndiswrapper*'
> kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4smp

still there ???

> kernel-module-ndiswrapper-1.2-1.2.6.12_1.1456_FC4smp
> ndiswrapper-1.2-1
> [thl at localhost step_5]$

Hope this makes things clearer.

> the biggest problem with the kernel-module packaging discussion is that
> all of the solutions y'all have come up with have been excruciatingly
> complex. We've discussed them on the yum-devel list and the result is
> 'ugh, these are painful' both to implement the code for and to develop
> the packages themselves. I'm not sure any solution will match up to
> everyone's concept of 'correct'.

Sure -- afaics everyone involved in this endless
kernel-module-proposal-discussion for fedora-extras had to accept some
things that he did not (and still does not) like (me, too). But we came
to no end. And I'd like to get this resolved even if I have to accept
more things I don't like -- as long as they work. I'm open for
suggestions. 

So 
-- 
Thorsten Leemhuis <fedora at leemhuis.info>




More information about the Fedora-packaging mailing list