如何设置软件包以使用我编译的依赖项版本

如何设置软件包以使用我编译的依赖项版本

我已经用它checkinstall来替换旧版本,但是依赖它的其他软件包报告损坏或不接受我的新版本。

我的重新编译包是ppp(点对点协议守护进程),因为我正在处理的项目中存在安全问题,需要将包更新到 2.4.8。但是 ubuntu repo 上的预编译二进制文件还没有该版本。所以我提取了源代码、配置、make 和 checkinstall。但从那时起,apt 就抱怨我有 umet 依赖项。

Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 network-manager : Breaks: ppp (>= 2.4.7-3~) but 2.4.8-1 is to be installed
 network-manager-pptp : Depends: ppp (< 2.4.7-3~) but 2.4.8-1 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

我真的不想卸载网络管理器并手动安装它以及数百个依赖项,只是为了一个单独的包需要不同的版本。

我的问题是,我们怎样才能告诉包管理员取消对包的管理,并让我承受我的罪孽?

答案1

这不是一个直接的解决方案,但这是我所做的:

您无法绕过 deb 包的要求。因此,我最终删除/清除了 repo 版本的网络管理器,然后从源代码编译网络管理器以及它需要的一些其他库。然后使用checkinstall在本地生成网络管理器的 deb 包,将该 deb 包存储在某个地方以进行管理。

诀窍是使用 apt 安装我的新网络管理器最需要的库,然后将库标记为正在hold使用apt-mark,这样 apt 就不会认为我保留了不必要的库并且autoremove不会删除它们。

当然,最后我需要标记所有本地构建的软件包,hold否则将来的 apt upgrade 会破坏它们。

相关内容