Re: Bug#219582: ITP: linux -- Linux 2.4 kernel
On Tue, Nov 11, 2003 at 12:21:32PM +0100, Robert Millan wrote:
> or who pretend the dessign of my package is broken in a way that I
> can't solve such trivial bugs.
Look, you see whatever you want to see, but you are still missing the
forest for the trees. When I mentioned System.map this was an
_example_, get it?
The fundamental problem with your package is that you have:
Package: linux-2.4
Version: 2.4.22-1
/boot/vmlinuz-2.4.22
/boot/System.map-2.4.22
/lib/modules/2.4.22/...
and you have to handle upgrades to either of:
Package: linux-2.4
Version: 2.4.22-2
/boot/vmlinuz-2.4.22
/boot/System.map-2.4.22
/lib/modules/2.4.22/...
or:
Package: linux-2.4
Version: 2.4.23-1
/boot/vmlinuz-2.4.23
/boot/System.map-2.4.23
/lib/modules/2.4.23/...
I'll just assume you can follow that. You have to handle the following
upgrades:
a) linux-2.4 (2.4.22-1) -> linux-2.4 (2.4.22-2)
b) linux-2.4 (2.4.22-1) -> linux-2.4 (2.4.23-1)
Right?
Assuming the user is running 2.4.22, in case a) you are replacing the
_running_ kernel image. In particular, the System.map file _on disk_
does not correspond to the running kernel image anymore. Stuff like
top, ps, klogd and ksymoops won't work properly (if you have to ask why
or why this is important, just go RTFM). The _modules_ on disk don't
correspond to the loaded modules, and it's possible that they don't
even load anymore. In this situation the most sensible thing to do is
reboot. It's a PITA but it can't be worked around without changing the
kernel's idea of its own version (or better said, without ensuring
somehow that 2.4.22-1 and 2.4.22-2 exist at the same time on the
machine, which we don't support, this is not rpm)
Still with me?
In b) you _still_ have this problem because dpkg is going to remove
linux-2.4 (2.4.22-1)'s files and put linux-2.4 (2.4.23-1)'s in place.
Still there?
By this point the problem should be self evident, but since we've
gotten to the point where I have to spell this out for you, I'll just
keep explaining.
The situation is now worse: there are _no traces_ of 2.4.22 left on the
system. Loading modules will just fail, because the modules are _not_
there. System.map-2.4.22 is gone for good, so any sort of debugging at
this level will be just harder if not impossible (if you like decoding
kernel addresses in your head for breakfast that's fine, but I know
plenty of people who don't). The user _has_ to reboot into a kernel
that he's not even sure _works_. If you claim that _every_ time you
have upgraded a kernel it's worked right out of the box, I'm going to
ask the Smithsonian to put you on exhibition. I'm sure it will be more
successful than that lame Star Wars thing.
Still following?
With the current kernel-image-2.4.22-1-i386 packages you have:
Package: kernel-image-2.4.22-1-i386
Version: 2.4.22-1
/boot/vmlinuz-2.4.22
/boot/System.map-2.4.22
/lib/modules/2.4.22/...
Package: kernel-image-2.4.22-1-i386
Version: 2.4.22-2
/boot/vmlinuz-2.4.22
/boot/System.map-2.4.22
/lib/modules/2.4.22/...
Package: kernel-image-2.4.23-1-i386
Version: 2.4.23-1
/boot/vmlinuz-2.4.23
/boot/System.map-2.4.23
/lib/modules/2.4.23/...
[ Here I'll just state that I don't know if the -1- bit in the package
name modifies the kernel version in any way because it's been ages
since the last time I used the official debian kernel images. ]
With this we have:
c) kernel-image-2.4.22-1-i386 2.4.22-1 -> 2.4.22-2
and that's it. There's no 2.4.22-1 to 2.4.23-1 upgrade path because
that _is not_ an upgrade with this scheme. That's a feature.
Installing kernel-image-2.4.23-1-i386 doesn't nuke
kernel-image-2.4.22-1-i386.
Is that clear with you?
Since the only upgrade to handle is 2.4.22-1 -> 2.4.22-2 we still have
the same problem that I described before with System.map and the
modules, but _only_ that problem. We don't have the things gone for
good problem and we don't have the very ugly "is this thing going to
work at all?" problem.
Do you see the forest now?
> > How do you propose to do that without changing the package name,
> > and without leaving old System.map junk around for eternity? I
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > don't see how it can be possible.
>
> I don't like turning this ITP into a technical discussion to prove
> either my dessign is consistent or I'm capable as a maintainer.
You are proposing to package a fundamental piece of software in a way
that's prone to _break_. Since this ITP is _only_ about repackaging
something we already provide, the discussion about the design
decisions is more than justified.
> However I'll respond to your question this time:
Oh, thanks, you answer questions for a change.
> Place the package files in /usr/lib, and copy them conditionaly
> (debconf) into /boot. The debconf question would properly explain
> that if per chooses to update it, then the system must be rebooted
> promptly.
You mean you want to have unmanaged files under /usr/lib? What's the
point of providing a binary debian package then? Do notice that you
have to hand-manage the kernel image, System.map, the modules, some
include files and the configuration files (that is if you want to do it
right). Not actually a small number of junk.
See the underlined question from Colin above, you forgot to answer
that.
> I don't feel it necessary. But this is not the first trivial
> maintainer issue I'm being pointed at in this ITP, and I'm getting
> the impression that some people are doing it deliberately.
Yes, Robert, join #we-r-out-to-get-robert (password is
debian-can't-handle-upgrades) and have some fun with us. Don't mind
the black choppers parked at the door.
--
Marcelo
Reply to: