编译内核时遇到“dpkg-gencontrol: error: package not in control info”的解决办法

      在Ubuntu 10.10下编译Linux 2.6.35内核时,编译过程中止,并提示:

 

      dpkg-gencontrol: error: package not in control info

 

      国内论坛上没有搜到相关的任何信息,在国外的论坛上搜到了一些解决办法。这个问题是make-kpkg(属于kernel package)的一个bug,大致原因如下:

     make-kpkg会在编译过程中会给linux kernel image的名字后面再追加一些后缀,在网看到有些后缀为“+”,有些为“-wl”,我这里的后缀为"-ice",不知道这个后缀是否跟版本有关。但是在源代码的debian/control文件中,kernel image的名字后面并没有追加这些后缀,两边不匹配,所以才会报错。

 

     基于这个原因,修改办法也比较简单,修改debian/control文件即可,将里面所有的package和source name加上和编译过程中我们看到的后缀相同的字母即可。注意,由于每次编译内核时都会重新生成debian/control,因此该修改必须在编译开始后进行。

 

     上述方法我自己没有验证,因为在另外的论坛中看到有人说kernel package最新的版本12.036已经解决了这个问题,那么为什么不更新至最新的kernel package呢? 手动在网站下载package更新的办法我暂时不会,用apt-get更新,可惜Ubuntu 10.10自带的源中还没有最新的package,最后功夫不负有心人,找到了另外的源,里面包含了最新的kernel package,在sources.list中添加如下即可:

 

     deb http://ppa.launchpad.net/brian-rogers/ppa/ubuntu maverick main

     deb-src http://ppa.launchpad.net/brian-rogers/ppa/ubuntu maverick main

 

     详情可以参考https://launchpad.net/~brian-rogers/+archive/ppa

 

     添加后,运行如下命令:

 

sudo apt-get update

sudo apt-get install kernel-package

    提示后更新即可,这样再重新编译kernel,便没有了上面的问题,另外查看debian/control文件,发现名字后面已经默认添加了所需要的后缀。

你可能感兴趣的:(linux,image,ubuntu,Deb)