[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: override kernel version with make-kpkg



On Mon, 09 Dec 2013 15:39:29 -0500 (EST), Michael Gulick wrote:
> 
> Hi,
> 
> I'm looking for a way to override the default kernel package versions
> generated by make-kpkg.  With 3.0+ kernels, the kernel sublevel (as in
> VERSION.PATCHLEVEL.SUBLEVEL), which is incremented when there are stable
> updates for a kernel release, is used to generate the package name.  This
> produces packages with names like
> 'linux-image-3.10.22-mycustomversion_amd64.deb'.

Actually, the pattern is more like

   linux-image-3.10.22-mycustomversion_3.10.22-1_amd64.deb
> 
> Unfortunately this means
> you can't upgrade these packages automatically with apt-get because apt-get
> thinks this is a new version of the package (instead of just an updated
> revision of the existing package version).

You don't use apt-get (or aptitude) to install such a package, you use
dpkg.  For example,

   dpkg -i linux-image-3.10.22-mycustomversion_3.10.22-1_amd64.deb

dpkg treats this as a new package, not an upgrade to an existing package,
that's true.  And for custom kernels, that's probably what you want.

> I would like to be able to make packages called
> 'linux-image-3.10-myversion_amd64.deb', or
> 'linux-image-3.10.0-myversion_amd64.deb', so that these packages can be
> automatically upgraded via apt-get and a self-hosted repository.

Ah, a self-hosted repository.  OK, in that case, apt-get or aptitude is
what you would use.  Unfortunately, I know of no way to do what you want
to do.  Keep this in mind.  Up until etch, the Debian kernel team used
make-kpkg to produce its stock Debian kernels.  But beginning with lenny,
the Debian kernel team stopped using make-kpkg to produce its stock
kernel packages and went their own way.  But all three levels of the
kernel version name (VERSION, PATCHLEVEL, and SUBLEVEL) were still
used, at first, in the stock kernel version name, just as make-kpkg
does it.  But recently, the kernel team has started forcing the
sublevel to zero in the linux image package name, such as in the
stable kernels, or eliminating it altogether, such as in the
testing kernels.  The actual SUBLEVEL persists in the package version,
but not in the kernel version included in the package name.  That is
a naming convention change for linux kernel images that has been
recently adopted by the Debian kernel team.  make-kpkg still does things
the old way.  It includes the SUBLEVEL in the package name.  There is
an --append-to-version option which can be used to append your own
qualifiers, but no option that I know of to eliminate the SUBLEVEL from
the name.

If you want to do this, you won't be able to use make-kpkg.  You will
need to do something like make a modified version of the Debian source
package, linux, and build it with dpkg-buildpackage.  But you want to
use upstream sources.  Hmm.  No easy way to get from point A to point B.
I haven't tried "make deb-pkg" in a while, but I suspect that it includes
the SUBLEVEL in the package name as well.  Give it a try and let me know
what it does on current kernels, will you?

I have a web page on the subject at

   http://users.wowway.com/~zlinuxman/Kernel.htm

You might want to give it a read.  Let me know if there's anything there
that's out of date.

-- 
  .''`.     Stephen Powell    
 : :'  :
 `. `'`
   `-


Reply to: