在安装本地.deb之后,Apt-Get冲突

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

要用这个选项安装nginx,我做了下面的事情:

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

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


请你能build议…

  1. 用这种方式构buildnginx是我需要的首选解决scheme吗?
  2. 如果是这样,我怎么可以告诉我,我不想再安装二进制nginx而不remove

我想你正在寻找的是一个包装的能力。 当一个软件包被拿着的时候不会试图升级或者改变它。

像这样的命令将设置nginx被保留。

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

你可能会想要记下你做到了这一点。 当需要升级到下一个主要版本时,您可能需要删除该保留。

我不明白你想要什么 – 你不想安装nginx,但你也不想删除它? 这是没有意义的。 如果要确保包构build保持安装状态,并且未升级到标准版本,则需要使用包装固定,如apt_preferences手册页中所述。

在运行dpkg-buildpackage之前,在源目录中运行dch -lxslt以增加版本号并添加更改日志条目。 这将停止升级它,虽然如果一个新的版本出来(例如安全),它会再次升级。 为了避免这种情况,通过将debian/control的版本号预先设置为1来增加软件包的时间,除非您从Debian存储库中降级到版本,否则将停止升级软件包(包括安全修复程序)。 所以如果你这样做,你需要注意安全版本并手动重build。

你正在寻找的方式可能会追加到包版本的后缀。 在Ubuntu的包装指南和Recipes / PackageUpdate中有一些信息。

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