前段时间apt-get install
我nginx 包在我的 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 二进制文件。
请您建议…
- 以这种方式构建 nginx 是否是满足我的需求的首选解决方案?
- 如果是这样,那么我怎样才能告诉 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 内核包,但现在已经忘记了细节。