安装本地 .deb 后 Apt-Get 发生冲突

安装本地 .deb 后 Apt-Get 发生冲突

前段时间apt-get installnginx 包在我的 debian/squeeze 服务器上。我的需求现在已经改变,我需要安装 nginx --with-http_xslt_module

要使用此选项安装 nginx,我执行以下操作:

  • apt-get build-dep nginx
  • apt-get source nginx
  • 修改 debian/rules 以添加所需选项
  • dpkg-buildpackage -rfakeroot -uc -b
  • dpkg -i nginx_0.7.62-4_amd64.deb

这一切似乎都运行良好,但是现在当我这样做时,apt-get dist-upgrade它会尝试再次安装 nginx 二进制文件。


请您建议…

  1. 以这种方式构建 nginx 是否是满足我的需求的首选解决方案?
  2. 如果是这样,那么我怎样才能告诉 apt 我不想再安装二进制 nginx 而不执行remove

答案1

我认为你正在寻找的是抓住软件包。当软件包被保留时,apt 将不会尝试以任何方式升级或更改它。

这样的命令将会设置 nginx 被暂停。

dpkg --get-selections | grep 'nginx' | sed -e 's/install/hold/' | sudo dpkg --set-selections

您可能希望记下您已执行此操作。当需要升级到下一个主要版本时,您可能需要删除此保留。

答案2

我不太明白你想要什么——你不想安装 nginx,但你也不想删除它?这毫无意义。如果你想确保你的软件包的构建保持安装状态,并且不会升级到标准版本,那么您需要使用软件包固定,如apt_preferences手册页中所述。

答案3

在运行 之前dpkg-buildpackage,请dch -lxslt在源目录中运行以增加版本号并添加更改日志条目。这将阻止 apt 对其进行升级,但如果有新版本发布(例如安全版本),它将再次升级。要阻止这种情况,请在 中的版本号前面加上 1: 来增加软件包的纪元debian/control,这将阻止 apt 升级软件包(包括安全修复程序),直到/除非您降级到 Debian 存储库中的版本。因此,如果您这样做,您需要留意安全版本并手动重建。

答案4

你正在寻找的方法可能是在软件包版本后附加后缀。Ubuntu 打包指南中提供了一些信息这里 以及在 Recipes/PackageUpdate 中。

我记得大约 7 年前成功掌握了 Debian 内核包,但现在已经忘记了细节。

相关内容