Ubuntu 16.04中的Nginx安装错误


57
:〜$ sudo apt-get remove nginx * && sudo apt-get install nginx-full *

正在阅读包装清单...完成
建立依赖树       
正在读取状态信息...完成

执行此操作后,将使用5,579 kB的额外磁盘空间。
你想继续吗?[Y / n] y
获取:1 http://in.archive.ubuntu.com/ubuntu xenial-updates / universe amd64 nginx-full-dbg amd64 1.10.0-0ubuntu0.16.04.1 [3,789 kB]
33秒内获得3,789 kB(112 kB / s)                                             
选择以前未选择的软件包nginx-common。
(正在读取数据库... 189767当前安装的文件和目录。)
正在准备解压... / nginx-common_1.10.0-0ubuntu0.16.04.1_all.deb ...
正在解压缩nginx-common(1.10.0-0ubuntu0.16.04.1)...
选择以前未选择的软件包nginx-full。
正在准备解压... / nginx-full_1.10.0-0ubuntu0.16.04.1_amd64.deb ...
正在解压缩nginx-full(1.10.0-0ubuntu0.16.04.1)...
选择以前未选择的软件包nginx-full-dbg。
正在准备解压... / nginx-full-dbg_1.10.0-0ubuntu0.16.04.1_amd64.deb ...
正在解压缩nginx-full-dbg(1.10.0-0ubuntu0.16.04.1)...
正在处理ufw(0.35-0ubuntu1)的触发器...
配置文件“ Apache Full”的规则已更新
配置文件“ Nginx HTTP”的规则已更新

正在处理systemd的触发器(229-4ubuntu4)...
正在处理尿素黑头(0.100.0-19)的触发器...
处理man-db的触发器(2.7.5-1)...
设置nginx-common(1.10.0-0ubuntu0.16.04.1)...
设置nginx-full(1.10.0-0ubuntu0.16.04.1)...
nginx.service的作业失败,因为控制进程退出并显示错误代码。有关详细信息,请参见“ systemctl status nginx.service”和“ journalctl -xe”。

invoke-rc.d:初始化脚本nginx,操作“启动”失败。

dpkg:错误处理软件包nginx-full(--configure):
 子进程已安装的安装后脚本返回错误退出状态1
dpkg:依赖性问题阻止对nginx-full-dbg的配置:
 nginx-full-dbg取决于nginx-full(= 1.10.0-0ubuntu0.16.04.1); 然而:
  软件包nginx-full尚未配置。

dpkg:错误处理软件包nginx-full-dbg(--configure):

 依赖性问题-未配置
未写入任何评估报告,因为该错误消息指示其来自先前故障的后续错误。

                          处理时遇到错误:
 完整的nginx

 Nginx的完整数据库

E:子进程/ usr / bin / dpkg返回错误代码(1)

尝试apt-get -f install不带任何包装
Motte001 '16

已经检查过,同样的错误!请看::〜$ sudo apt-get -f install nginx-full-dbg取决于nginx-full(= 1.10.0-0ubuntu0.16.04.1); 但是:软件包nginx-full尚未配置。dpkg:错误处理软件包nginx-full-dbg(--configure):依赖性问题-未配置处理时遇到错误:nginx-full nginx-full-dbg E:子进程/ usr / bin / dpkg返回了错误代码(1)
Mohit

1
在安装nginx之前,您是否已在端口80上安装并运行过Apache?编辑您的问题,包括输出systemctl -l status nginx,以及
托马斯·沃德

您是否还安装了其他版本的Nginx?我看到您运行了删除任务,但是如果旧配置仍然存在,则如果它们已弃用命令或包含类似内容,它们可能会中断安装。
托马斯·沃德

See "systemctl status nginx.service" and "journalctl -xe" for details.–您可以这样做并将输出包含在您的问题中吗?
David Foerster

Answers:


139

在安装nginx之前先关闭apache2应该可以解决此问题:

sudo service apache2 stop

3
欢迎来到Ask Ubuntu!我建议编辑此答案以将其扩展为有关如何执行此操作的特定详细信息。(另请参阅“我如何编写一个好的答案?”,以获取有关在Ask Ask Ubuntu上认为哪种答案最有价值的一般建议。)
David Foerster,2016年

这给了我我需要的提示。以我
为例

我遇到了同样的问题,但是找到了罪魁祸首netstat -tulpn | grep :80,在我的情况下,它是Varnish配置为侦听端口80。systemctl stop varnish然后安装Nginx,为我修复了它。为什么Debian / Ubuntu软件包尝试在安装时自行启动……我宁愿安装,按自己的喜好对其进行配置,然后再启动它:P
geerlingguy

28

陈伟业为我提供了正确的答案。为了扩展他的答案,这是您可以在命令行上执行的操作;

停止apache2

sudo systemctl stop apache2.service

防止apache2在启动时启动

sudo systemctl disable apache2.service

重新安装nginx

sudo apt-get install nginx


1
我建议你不要在启动禁用Apache2的,如果你需要它-有很多情况下,你不能,如果你最终将其配置为侦听其他端口需要禁用的Apache。自己完成此操作后,对于某些设置,我可以说说一些经验(我也在nginx程序包中做了很多工作,这就是这种经验的来源)
Thomas Ward

7

我只是遇到了这个问题,但是解决方案略有不同。

解决了简单的站点配置错误后,便能够更新nginx。

检查您的nginx错误日志

sudo cat /var/log/nginx/error.log|less

然后再试一次:

sudo apt-get update;sudo apt-get upgrade

记录FTW,在我的情况下,80端口已在使用中,这是导致错误的原因
xliiv

6

在我的情况下,错误是服务器禁用了IPv6。解:

编辑/etc/nginx/sites-enabled/default并注释掉IPv6:

listen [::]:80 default_server;

重新安装nginx:

apt purge nginx
apt autoremove
apt install nginx

@DavidFoerster使用apt 1.0,一个新的二进制引入收集很多之间的分配是熟悉的(子)的命令apt-getapt-cache等等。例如,apt updateequals apt-get updateapt search some-nameequals apt-cache search some-name等。在某些情况下,需要重新措辞,例如apt full-upgrade等于apt-get dist-upgrade。旧的二进制文件及其命令仍然可供那些喜欢它们的人使用。
Henning Kockerbeck '16

@HenningKockerbeck:谢谢。那时我真的不知道,并以为是错字,但与此同时我也接受了自我教育。
大卫·佛斯特

为我工作,但我无法在用于服务器部署的shell脚本中实现这一点,这
简直

1

当我检查/var/log/nginx/error.log时,我看到安装程序无法打开/ var / cache / nginx / microcache

目录列表显示没有/ var / cache / nginx目录,因此我创建了该目录,安装成功。


1

就我而言,它是/ etc / nginx / sites-enabled /中错误配置的文件,我将它们命名为.old文件,但这并不重要。将阅读它们,并可能阻止成功安装或启动该服务。请小心该文件夹中的文件,并仔细阅读@Taiger所述的错误输出


0

在安装之前,请从中删除任何手动添加的符号链接/sites-enabled


0

在我的情况下,没有任何帮助,除了:

sudo fuser -k 80/tcp

service nginx start
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.