我使用的是 14.04.5 LTS。运行常规 apt-get upgrade 时出现此错误:
Setting up nginx-common (1.10.1-3+trusty1) ...
dpkg: error processing package nginx-common (--configure):
subprocess installed post-installation script returned error exit status 1
我省略了由此引起的所有后续错误,“包 nginx-common 尚未配置。”等等。
我遵循了这个答案进行调试.postinst
,它永远不会超出第三行:. /usr/share/debconf/confmodule
——这就是返回的1
。
我试过了此解决方案但这没用,debconf 肯定是可以访问的。而且这些(错误仍然存在)。据我所知,我在任何包含的 conf 文件中都没有 ipv6 listen 指令。
我不知道如何调试 debconf 以查看失败的原因。有人知道我下一步该尝试什么吗?
编辑:新的更新,他们安装了,但最后我收到此错误:
Setting up nginx-full (1.10.1-3+trusty2) ...
initctl: invalid command: upgrade
Try `initctl --help' for more information.
invoke-rc.d: initscript nginx, action "upgrade" failed.
不确定是否应该标记为已解决。
答案1
此特定问题已修复,请更新您的软件包!
Ubuntu 存储库 (LP 错误 #1637058)
在Ubuntu Zesty 建议的存储库(这是一个正在开发中的版本,我希望你没有使用它......),1.10.1-0ubuntu5
解决了这个问题。
在Ubuntu Trusty、Xenial 和 Yakkety安全团队已发布更新版本的软件包来解决这个问题,并将其视为软件包的回归问题。此信息在错误中详细说明,并在相应的Ubuntu 安全通知 (USN-3114-2),但该问题已在以下版本的软件包中修复:
- Ubuntu Trusty:
1.4.6-1ubuntu3.7
(安全和更新存储库) - Ubuntu Xenial:
1.10.0-0ubuntu0.16.04.4
(安全和更新存储库) - Ubuntu Yakkety:
1.10.1-0ubuntu1.2
(安全和更新存储库)
版本Ubuntu Precise存储库不受影响,因为它们从未以引入 CVE 的方式发生改变,而 CVE 又促使最近的更新。(这仅适用于 Ubuntu 存储库,而不适用于 PPA。)
购电协议 (LP 错误 #1637200)
我已将修改后的软件包上传到临时 PPA 以解决此问题并实施修复。这些软件包构建时没有出现问题,并已于 2016 年 10 月 27 日下午 12:56(UTC-04:00)复制到 Launchpad 上的主要 Mainline 和 Stable PPA。
这包括修复Precise、Trusty、Xenial 和 Yakkety。PPA 尚未获得 Zesty 支持。
强制披露:
我是 Ubuntu 服务器团队中负责
nginx
软件包的主要人员。我还维护团队下的 PPAhttps://launchpad.net/~nginx。我对这个问题以及修复过程也有直接的了解,因为我帮助发现这个问题影响了最近的安全更新以及 Debian。
答案2
官方修复包已发布,请使用这些
总结滚动到底部
我自己刚刚遇到了这个问题。
为了进一步调试,我设置了以下环境变量:
export DEBCONF_DEBUG=developer
这样我们就能看到 debconf 正在做什么。
现在我们运行
dpkg --configure --pending
我们可以看到以下内容:
Setting up nginx-common (1.10.1-3+xenial1) ...
debconf (developer): frontend started
debconf (developer): frontend running, package name is nginx-common
debconf (developer): starting /var/lib/dpkg/info/nginx-common.config configure 1.10.1-3+xenial0
dpkg: error processing package nginx-common (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of libnginx-mod-http-image-filter:
libnginx-mod-http-image-filter depends on nginx-common (= 1.10.1-3+xenial1); however:
Package nginx-common is not configured yet.
现在我们可以编辑/var/lib/dpkg/info/nginx-common.config
脚本,并更改
#!/bin/sh
和
#!/bin/sh -x
以启用调试。
再次运行dpkg --configure --pending
会显示:
Setting up nginx-common (1.10.1-3+xenial1) ...
debconf (developer): frontend started
debconf (developer): frontend running, package name is nginx-common
debconf (developer): starting /var/lib/dpkg/info/nginx-common.config configure 1.10.1-3+xenial0
+ set -e
+ . /usr/share/debconf/confmodule
+ [ ! 1 ]
+ [ -z ]
+ exec
+ [ ]
+ exec
+ DEBCONF_REDIR=1
+ export DEBCONF_REDIR
+ logdir=/var/log/nginx
+ log_symlinks_check 1.10.1-3+xenial0
+ [ -z 1.10.1-3+xenial0 ]
+ dpkg --compare-versions 1.10.1-3+xenial0 lt-nl 1.10.1-0ubuntu1.1
+ return
dpkg: error processing package nginx-common (--configure):
现在我们可以在脚本中看到有问题的行
dpkg --compare-versions 1.10.1-3+xenial0 lt-nl 1.10.1-0ubuntu1.1
返回退出代码 1,正如它应该的那样——它正在进行版本比较并根据结果返回 0 或 1。
我不会评论如何正确修复它,因为它是一个实际的错误,正在跟踪#1637058(适用于 Ubuntu)和#1637200(针对 PPA)在 LP。
解决方法:
编辑/var/lib/dpkg/info/nginx-common.config
return
并在函数的第一行添加log_symlinks_check
。
例如:
log_symlinks_check() {
return <---- here
# Skip new installations
[ -z "$1" ] && return
这将允许升级过程继续。
编辑正如 @Thomas Ward 指出的那样,这将跳过设置步骤(修复 /var/log/nginx 中不安全的符号链接(如果有的话))
答案3
有同样的问题:
14.04.5 LTS (GNU/Linux 3.13.0-32-generic x86_64)
16.04.1 LTS (GNU/Linux 4.4.0-45-generic x86_64)
设置 nginx-common (1.10.1-3+trusty1) ... dpkg:错误处理软件包 nginx-common (--configure):子进程安装的安装后脚本返回错误退出状态 1 dpkg:依赖性问题阻止 libnginx-mod-http-auth-pam 的配置:libnginx-mod-http-auth-pam 依赖于 nginx-common (= 1.10.1-3+trusty1);但是:软件包 nginx-common 尚未配置。
dpkg:处理软件包 libnginx-mod-http-auth-pam (--configure) 时出错:依赖性问题 - 未配置 dpkg:依赖性问题阻止配置 libnginx-mod-http-echo:libnginx-mod-http-echo 依赖于 nginx-common (= 1.10.1-3+trusty1);但是:软件包 nginx-common 尚未配置。
dpkg:处理软件包 libnginx-mod-http-echo (--configure) 时出错:依赖性问题 - 未配置处理时遇到错误:nginx-common libnginx-mod-http-auth-pam libnginx-mod-http-echo
解决了
我可以通过首先备份该/etc/nginx
文件夹来解决该问题。
sudo tar -zcf ~/nginx.tgz /etc/nginx
然后我从系统中清除了与 nginx 有关的所有东西。我必须在触发依赖性问题时逐步执行此操作。
sudo apt-get purge nginx-full
sudo apt-get purge nginx-common
sudo apt-get purge nginx*
此后,将 nginx 安装回系统sudo apt-get install nginx-full
。
最后恢复/etc/nginx
文件夹sudo tar -zxf ~/nginx.tgz
并重新启动 nginxsudo service nginx restart
希望这可以帮助!