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

Ubuntu/Debian从源码编译Git生成Deb安装时依赖报错求助

问题分析与解决办法

问题根源

你遇到的依赖冲突是Debian/Ubuntu系包管理的**版本纪元(epoch)**特性导致的。系统里的官方Git包版本号带有前缀1:(比如1:2.1.3),这个前缀就是epoch,用来解决版本号回溯或格式变更时的版本比较问题。

而你通过checkinstall生成的Git包版本是2.16.2-1,没有这个epoch前缀。dpkg在比较版本时,会优先判断epoch:没有epoch的版本会被视为比任何带epoch的版本更低,哪怕后面的数字数值更大。所以libcgi-pm-perl的Breaks: git (<< 1:2.1.3)规则会错误地认为你的2.16.2-1版本低于1:2.1.3,进而触发依赖阻断,导致安装失败。

至于Ubuntu14.04和CentOS7能正常安装的原因:

  • Ubuntu14.04的libcgi-pm-perl可能没有设置这个针对Git版本的Breaks规则,或者官方Git包也没有使用epoch前缀;
  • CentOS使用RPM包管理系统,版本号规则和Debian系完全不同,不存在epoch这个概念,自然不会有这类冲突。

解决步骤

1. 清理系统残留的错误状态

首先把之前安装失败的Git包移除,修复系统依赖:

sudo dpkg -r git
sudo apt --fix-broken install

执行完后,确保系统回到没有未配置包的干净状态。

2. 重新生成带epoch的deb包

在执行checkinstall时,通过--pkgversion参数指定带epoch的版本号,和官方包格式对齐:

# 回到Git源码目录(如果之前的编译产物还在,可跳过make步骤,直接执行checkinstall)
sudo checkinstall --install=no --pkgversion=1:2.16.2-1

这个命令会生成版本号为1:2.16.2-1的deb包,dpkg就能正确识别它的版本高于1:2.1.3,不会触发libcgi-pm-perl的阻断规则。

3. 安装修复后的deb包

最后安装新生成的包即可:

sudo dpkg -i git_1:2.16.2-1_amd64.deb

这时应该能顺利完成安装,后续的apt-get upgrade也不会再出现依赖问题。

内容的提问来源于stack exchange,提问作者Alex.Volodin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:12:54