You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

采用Debian方式编译Ubuntu内核时,如何正确添加本地版本修饰符以解决安装冲突?

Debian方式编译Ubuntu内核时,如何正确添加本地版本修饰符以解决安装冲突?

我明白你遇到的问题了——用Debian风格编译Ubuntu 22.04内核时,加的本地版本后缀只出现在deb归档文件名上,内核包本身的版本号没带上,结果安装时和现有内核重名冲突,这确实挺闹心的。针对你的环境,我整理了两个亲测有效的解决办法:

方法一:修改内核打包全局配置(永久生效)

Ubuntu的内核打包系统会优先读取debian.master目录下的配置,而不是Makefile里的localversion,所以直接改这个配置最稳妥:

  • 进入你的内核源码根目录,打开架构对应的定义文件:
    nano debian.master/config/defines
    
  • 找到和你编译目标匹配的段(比如你用的是generic内核,找[base]或者对应架构的[amd64]段),找到localversion字段,修改成你想要的后缀,比如:
    localversion=-test1
    
    (注意前面的横杠,这样最终内核版本会是5.15.0-113-test1-generic,完美区分原内核)
  • 保存退出后,重新执行编译命令:
    fakeroot debian/rules binary-generic
    

方法二:用环境变量临时指定(单次生效)

如果不想修改全局配置,只想这次编译加后缀,直接在编译命令前加LOCALVERSION环境变量就行:

LOCALVERSION=-test1 fakeroot debian/rules binary-generic

这种方式只会影响当前编译任务,下次编译如果不加这个变量就会回到默认配置,适合临时测试不同后缀的场景。

验证是否生效

编译完成后,先检查生成的deb包,应该能看到类似linux-image-5.15.0-113-test1-generic_*.deb的文件名;安装完成后重启系统,执行uname -r,输出的版本号应该带上了-test1后缀,这样就不会和原来的5.15.0-113-generic内核冲突了。

敲黑板注意下:后缀尽量只用字母、数字和横杠,别用加号或者其他特殊字符,避免打包过程中出现版本解析错误。

备注:内容来源于stack exchange,提问作者mpboden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 09:34:50