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

Thorsten Leemhuis fedora at leemhuis.info
Thu Sep 29 14:58:13 UTC 2005


Hi All!

I (once again) played a bit around with kernel-modules and a scheme for
packaging those for fedora-extras. A patch for mock to pass the
kernel-version for which the kernel-module-pkg should be build and a
discussion about it and its usage in plague currently happens on
fedora-buildsys-list.

I also did some experiments with binary packages based on the
KernelModuleProposal 2 (
http://www.fedoraproject.org/wiki/Extras/KernelModuleProposal
) and how yum handles those. To make my life easier I hacked up a
test-script that creates a kernel-module testing-repo for yum. Those
interested can find everything needed at
http://www.leemhuis.info/files/fedorarpms/MISC.fdr/km-testing-yum

Warning, use at your own risk. create_testrepo.sh creates a testrepo
with ndiswrapper-rpms build from the two SRPMS (they are nearly
identical with those from the KernelModuleProposal 2 with some slightly
changes to simplify testing) in that dir. You need to install the SRPMS
to your rpmbuild folder manually. You probably also need to adjust some
variables in the script and copy two kernels from updates-testing over.

The problems that showed up during the tests (on a fresh FC4, only
UP-Kernel installed and yum updated to the latest version from
updates-released [no other update]) are described below. Note, this is
not meant as a rant against yum. I really like yum. It just meant as a
"that the state with kernel-module{s,-proposal} and yum ATM -- if we
like it or not". Seth (or anybody else), if you're interested in more
details, debug output or even bug reports filled: just say and I'll do
what I can.

If anybody else has ideas what also could or should be tested send a
mail and I'll add it.

#######################
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:

> [...]
> Dependencies Resolved
> 
> =============================================================================
> Package                 Arch       Version          Repository
> Size
> =============================================================================
> Installing:
> kernel-module-ndiswrapper  i686       1.1-1.2.6.11_1.1369_FC4smp
> step_1            3.3 k
> Installing for dependencies:
> kernel-smp              i686       2.6.11-1.1369_FC4  base
> 13 M
> ndiswrapper             i386       1.1-1            step_1
> 22 k
> 
> Transaction Summary
> =============================================================================
> Install      3 Package(s)his
> [...]

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 :-( 

#######################
Nearly the same problem as above happened when I used 

># yum --disablerepo=updates-released --enablerepo=step_1 ndiswrapper

> [...]
> Dependencies Resolved
> 
> =============================================================================
> Package                 Arch       Version          Repository
> Size
> =============================================================================
> Installing:
> ndiswrapper             i386       1.1-1            step_1
> 22 k
> Installing for dependencies:
> kernel-module-ndiswrapper  i686       1.1-1.2.6.11_1.1369_FC4smp
> step_1            3.3 k
> kernel-smp              i686       2.6.11-1.1369_FC4  base
> 13 M
> 
> Transaction Summary
> =============================================================================
> Install      3 Package(s)
> [...]
> 

#######################
Okay, next test; Both UP- and SMP-Kernel are installed now (as it
normally is the case on SMP-Systems). typing

> # yum --disablerepo=updates-released --enablerepo=step_1 install 'kernel-module-ndiswrapper'
or
> # yum --disablerepo=updates-released --enablerepo=step_1 ndiswrapper
will result in something like this:

> [...]
> Dependencies Resolved
> 
> =============================================================================
> Package                 Arch       Version          Repository
> Size
> =============================================================================
> Installing:
> kernel-module-ndiswrapper  i686       1.1-1.2.6.11_1.1369_FC4smp
> step_1            3.3 k
> Installing for dependencies:
> ndiswrapper             i386       1.1-1            step_1
> 22 k
> 
> Transaction Summary
> =============================================================================
> Install      2 Package(s)
> [...]

In and ideal world yum would install modules for both up and smp in that
case.

Note: The problems described up until here probably can happen with the
naming schemes currently used by Livna (where uname is in the name of
the package, e.g.
kernel-module-ndiswrapper-2.6.11_1.1369_FC4smp-1.1-1.i686.rpm), too. We
had some of those problems in the past.

#######################
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.


> [...]
> Dependencies Resolved
> 
> =============================================================================
> Package                 Arch       Version          Repository
> Size
> =============================================================================
> Installing:
> kernel-module-ndiswrapper  i686       1.1-2.2.6.11_1.1369_FC4smp
> step_2            3.3 k
> Updating:
> ndiswrapper             i386       1.1-2            step_2
> 21 k
> Removing:
> kernel-module-ndiswrapper  i686       1.1-1.2.6.11_1.1369_FC4smp
> installed           11
> 
> Transaction Summary
> =============================================================================
> Install      1 Package(s)
> Update       1 Package(s)
> Remove       1 Package(s)
> [...]

#######################
I did two further test it this point (also only with SMP-kernel) and
they worked like they should:

- I added a new kernel (2.6.12-1.1447_FC4) to the repo but the
ndiswrapper-module was not yet in the repo -- yum updated the kernel

- later I added the module
(kernel-module-ndiswrapper-1.1-2.2.6.12_1.1447_FC4smp); yum installed it

#######################
Last Test (for now). I placed another updated kernel and (at the same
time) a update of ndiswrapper itself in the repo:

> kernel-2.6.12-1.1447_FC4.i686.rpm
> kernel-2.6.12-1.1456_FC4.i686.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
> 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
> kernel-module-ndiswrapper-1.1-2.2.6.12_1.1447_FC4.i686.rpm
> kernel-module-ndiswrapper-1.1-2.2.6.12_1.1447_FC4smp.i686.rpm
> kernel-module-ndiswrapper-1.2-1.2.6.12_1.1456_FC4.i686.rpm
> kernel-module-ndiswrapper-1.2-1.2.6.12_1.1456_FC4smp.i686.rpm
> kernel-smp-2.6.12-1.1447_FC4.i686.rpm
> kernel-smp-2.6.12-1.1456_FC4.i686.rpm
> ndiswrapper-1.1-1.i386.rpm
> ndiswrapper-1.1-2.i386.rpm
> ndiswrapper-1.2-1.i386.rpm

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:

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

And it did -- a bit:

> [...]
> 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
> 
> kernel-smp              i686       2.6.12-1.1456_FC4  step_5
> 14 M
> Updating:
> ndiswrapper             i386       1.2-1            step_5
> 21 k
> 
> Transaction Summary
> =============================================================================
> Install      2 Package(s)
> Update       1 Package(s)
> Remove       0 Package(s)
> 
> Is this ok [y/N]: y
> Downloading Packages:
> Running Transaction Test
> Finished Transaction Test
> Transaction Test Succeeded
> Running Transaction
>   Installing: kernel-smp                   #########################
> [1/4]
>   Installing: kernel-module-ndiswrapper    #########################
> [2/4]
>   Updating  : ndiswrapper                  #########################
> [3/4]
>   Cleanup   : ndiswrapper                  #########################
> [4/4]
> 
> Installed: kernel-module-ndiswrapper.i686 0:1.2-1.2.6.12_1.1456_FC4smp
> kernel-smp.i686 0:2.6.12-1.1456_FC4
> Updated: ndiswrapper.i386 0:1.2-1
> Replaced: kernel-module-ndiswrapper.i686 0:1.1-2.2.6.11_1.1369_FC4smp
> kernel-module-ndiswrapper.i686 0:1.1-2.2.6.12_1.1447_FC4smp
> Complete!

But huuuh, why are they still installed? afterwards?

> $ rpm -qa 'kernel-module-ndiswrapper*'
> kernel-module-ndiswrapper-1.1-2.2.6.11_1.1369_FC4smp
> kernel-module-ndiswrapper-1.1-2.2.6.12_1.1447_FC4smp
> kernel-module-ndiswrapper-1.2-1.2.6.12_1.1456_FC4smp
> $ rpm -Va 'kernel-module-ndiswrapper*' && echo okay
> okay

Something seems wrong here. Anybody any idea what?
-- 
Thorsten Leemhuis <fedora at leemhuis.info>




More information about the packaging mailing list