编译内核时遇到“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与debian/control文件中包名不匹配导致。解决方案包括更新kernel-package到最新版本,或者手动修改debian/control文件中package和source name,添加与编译过程中一致的后缀。

      在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中

qab@qab:~$ sudo apt-get install apt-transport-https 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 apt-transport-https 已经是最新版 (2.0.11)。 下列软件包是自动安装的并且现在不需要了: linux-headers-5.15.0-67-generic linux-hwe-5.15-headers-5.15.0-67 linux-image-5.15.0-67-generic linux-modules-5.15.0-67-generic linux-modules-extra-5.15.0-67-generic 使用'sudo apt autoremove'来卸载它(它们)。 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。 有 1 个软件包没有被完全安装或卸载。 解压缩后会消耗 0 B 的额外空间。 您希望继续执行吗? [Y/n] y 正在设置 librealsense2-dkms (1.3.27-0ubuntu1) ... Removing old librealsense2-dkms-1.3.27 DKMS files... ------------------------------ Deleting module version: 1.3.27 completely from the DKMS tree. ------------------------------ Done. Loading new librealsense2-dkms-1.3.27 DKMS files... Building for 5.15.0-140-generic Building initial module for 5.15.0-140-generic ERROR (dkms apport): kernel package linux-headers-5.15.0-140-generic is not supported Error! Bad return status for module build on kernel: 5.15.0-140-generic (x86_64) Consult /var/lib/dkms/librealsense2-dkms/1.3.27/build/make.log for more information. dpkg: 处理软件包 librealsense2-dkms (--configure)出错: 已安装 librealsense2-dkms 软件包 post-installation 脚本 子进程返回错误状态 10 在处理有错误发生: librealsense2-dkms E: Sub-process /usr/bin/dpkg returned an error code (1)
最新发布
12-13
### 关于 `dpkg-query` 返回错误状态 127 的解决方案 错误状态码 **127** 通常表示命令未找到或环境变量配置不正确。针对 `dpkg-query` 出现此类问题的原因可能涉及以下几个方面: --- #### 1. 命令不可用 如果系统中缺少必要的二进制文件,则可能会触发此错误。验证是否安装了 `dpkg` 工具链: ```bash which dpkg-query ``` 如果没有输出,表明该工具尚未安装。可以通过以下方式修复: ```bash sudo apt-get update sudo apt-get install --reinstall dpkg ``` 重新安装后再次测试命令是否存在[^4]。 --- #### 2. 环境变量 PATH 配置异常 即便已经安装好相关组件,但如果 `$PATH` 不包含 `/usr/bin` 或其他标准目录位置的话也会引发相同现象。检查当前用户的路径设置情况如下所示: ```bash echo $PATH ``` 确保其中至少含有类似这样的条目:`/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:` 。如果不是,请编辑个人 profile 文件来修正这个问题。例如修改 ~/.bashrc 添加下面这一行之后保存退出再登录生效即可: ```bash export PATH=$PATH:/usr/bin source ~/.bashrc ``` --- #### 3. 权限不足 运行某些子功能需要超级用户权限才能完成操作。假如普通账户下执行报错而切换成 root 后恢复正常工作,则证明确实是授权层面出了差错。尝试加 sudo 测试效果如何: ```bash sudo dpkg-query -l ``` --- #### 4. 数据库损坏 偶尔会发生 APT/DPKG 内部索引遭到破坏的情形从而引起各种奇怪的表现形式包括但不限于这里提到的现象。对此建议先清理缓存重建设备表单试试看能否改善现状: ```bash sudo rm -rf /var/lib/dpkg/status* sudo dpkg --clear-avail sudo dpkg --update-avail sudo apt-get clean sudo apt-get autoclean sudo apt-get update sudo apt-get dist-upgrade ``` 接着再调用原初指令看看还有没有残留影响因素存在[^5]。 --- #### 5. 特定场景下的依赖冲突 正如先前讨论过的有关 Redis 和 MySQL 的例子那样,有候即使表面上看起来只是单一模块出状况实际上背后隐藏着复杂的连锁反应链条。所以当常规手段均失效的候不妨考虑是否存在潜在的包间矛盾干扰到了整体流程运转顺畅度。利用专门设计用来诊断这类疑难杂症的功能选项逐一排查定位根本源头所在之处: ```bash dpkg --audit ``` 根据反馈信息采取针对性措施消除隐患点位[^6]。 --- ### 总结 通过以上几个维度全方位剖析并给出对应处置策略希望能够有效解决您遇到的实际困难。当然每种情形的具体表现形态千变万化不可能穷尽列举出来所有可能性,但掌握这些基础思路足以应对大多数日常维护工作中碰到的技术挑战啦! ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值