装有 Nginx 的 Centos 7 服务器在更新软件包时报告错误

装有 Nginx 的 Centos 7 服务器在更新软件包时报告错误

我有一台安装了 Nginx 的 CentOS 7 VM。我使用 Webmin 来管理服务器。

它通常会自动安装更新,但 nginx 更新失败,因此我尝试手动进行更新。它返回以下内容:

Installing package(s) with command /bin/yum -y install nginx ..
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.netsite.dk
 * epel: mirror.netsite.dk
 * extras: mirror.netsite.dk
 * updates: mirror.netsite.dk
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 1:1.20.1-9.el7 will be updated
--> Processing Dependency: nginx(abi) = 1.20.1 for package: 1:nginx-mod-mail-1.20.1-9.el7.x86_64
--> Processing Dependency: nginx(abi) = 1.20.1 for package: 1:nginx-mod-stream-1.20.1-9.el7.x86_64
--> Processing Dependency: nginx(abi) = 1.20.1 for package: 1:nginx-mod-http-perl-1.20.1-9.el7.x86_64
--> Processing Dependency: nginx(abi) = 1.20.1 for package: 1:nginx-mod-http-image-filter-1.20.1-9.el7.x86_64
--> Processing Dependency: nginx(abi) = 1.20.1 for package: 1:nginx-mod-http-xslt-filter-1.20.1-9.el7.x86_64
---> Package nginx.x86_64 1:1.20.2-1.el7.ngx will be an update
--> Finished Dependency Resolution
Error: Package: 1:nginx-mod-http-perl-1.20.1-9.el7.x86_64 (@epel)
           Requires: nginx(abi) = 1.20.1
           Removing: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Updated By: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Not found
Error: Package: 1:nginx-mod-stream-1.20.1-9.el7.x86_64 (@epel)
           Requires: nginx(abi) = 1.20.1
           Removing: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Updated By: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Not found
Error: Package: 1:nginx-mod-mail-1.20.1-9.el7.x86_64 (@epel)
           Requires: nginx(abi) = 1.20.1
           Removing: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Updated By: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Not found
Error: Package: 1:nginx-mod-http-image-filter-1.20.1-9.el7.x86_64 (@epel)
           Requires: nginx(abi) = 1.20.1
           Removing: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Updated By: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Not found
Error: Package: 1:nginx-mod-http-xslt-filter-1.20.1-9.el7.x86_64 (@epel)
           Requires: nginx(abi) = 1.20.1
           Removing: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Updated By: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Not found
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
.. install failed!

我尝试运行建议的 rpm 命令 - 然后重新执行软件包更新。但这并没有什么效果。

我还尝试安装其他 19 个软件包 - 它们都安装正确。然后我重试了 Nginx - 但仍然失败并出现相同的错误... 我还尝试依次禁用 nginx 存储库和 epel 存储库(以防两个存储库之间发生冲突) - 但没有任何效果。

有谁知道是什么导致了这个问题 - 以及如何解决它?

提前致谢!

/约翰

答案1

我已经为我的系统解决了这个问题,但我的解决方案可能并不适用于所有人,这取决于您是否使用nginx-*导致依赖问题的模块。


我的解决方案是移除nginx-mod-http-perlnginx-mod-streamnginx-mod-mailnginx-mod-http-image-filternginx-mod-http-xslt-filter,然后我就能够yum upgrade获取最新的 nginx 版本。

编辑添加:除了删除这些软件包之外,我还更新/etc/yum.repos.d/epel.repoexclude=nginx*,以防止@epel重新安装提供的 nginx 软件包。

这对我来说很有用,因为我实际上并不使用这些软件包提供的功能;我有一种预感,它们是由 Webmin 安装的(和 OP 一样,我也在使用它),以支持它的一些功能提供。

如果您正在使用这些模块提供的功能,那么我认为解决方案(至少目前而言)是禁用 nginx 存储库,并在发布兼容模块时重新启用它@epel。如果这样做,您将没有任何可用的 nginx 升级,因为 上没有可用的 1.20.2 @epel


核心问题似乎是您(和我)已经nginx-1.20.1-9.el7.x86_64 (@epel)安装,但同时@epel启用nginx了 repos。

11 月 16 日左右,该nginx仓库发布了nginx-1.20.2,因此 yum 正在尝试更新到该版本。但是,安装的各种模块(无论是还是)都没有相应的1.20.2更新,因此无法更新。这些模块还需要,它是提供的(但它确实nginx-*@epelnginxnginx(abi) = 1.20.1@epelnginx不是似乎提供)因此依赖性检查失败。

边注:在我们的案例中,我们做过nginx在某个时间点安装了提供的核心包,并且在某个时间点用该版本替换它-@epel这是来自 yum 日志:

# zgrep -h nginx.x86 /var/log/yum.log-202* /var/log/yum.log
Apr 22 03:55:37 Updated: nginx.x86_64 1:1.18.0-1.el7.ngx
Oct 30 09:27:11 Updated: nginx.x86_64 1:1.18.0-2.el7.ngx
Apr 21 08:48:33 Updated: nginx.x86_64 1:1.20.0-1.el7.ngx
May 26 04:20:28 Updated: nginx.x86_64 1:1.20.1-1.el7.ngx
Jun 18 06:46:31 Installed: nginx.x86_64 1:1.20.1-2.el7
Oct 27 04:51:03 Updated: nginx.x86_64 1:1.20.1-9.el7

6 月 18 日,该.ngx软件包被 提供的软件包替换@epel。这可能与当前的问题有关,也可能无关。

答案2

yum remove nginx-mod-http-perl*
yum remove nginx-mod-stream*
yum remove nginx-mod-mail*
yum remove nginx-mod-http-image-filter*
yum remove nginx-mod-http-xslt-filter*

也不要惊慌,nginx-all-modules 将被删除

https://yum-info.contradodigital.com/view-package/epel/nginx-all-modules/

相关内容