诡异 YUM 问题: 无法找到(安装卸载)一个特定的包

2021-11-19 11:29:35 +08:00
 abcbuzhiming
CentOS 8.4 ,之前在 Nginx 官网,用编写 /etc/yum.repos.d/nginx.repo 的办法装上了 nginx stable 版本的 1.18 。

有新手在未通知我的情况下,给系统装了宝塔面板,然后我知道后,把宝塔面板给卸载了,然后噩梦就来了。

yum 安装其他包是正常的,唯独找不到 nginx 。为了确定问题在哪里,我进行了一系列测试

======
执行:yum install nginx
All matches were filtered out by exclude filtering for argument: nginx
Error: Unable to find a match: nginx

======
执行:yum remove nginx (我之前装的 nginx 还在系统上跑着,nginx 的命令还能用)
All matches were filtered out by exclude filtering for argument: nginx
No packages marked for removal.
Dependencies resolved.
Nothing to do.
Complete!


看到了吗?也找不到。于是我怀疑我的 /etc/yum.repos.d/ 路径下仓库配置文件被动过,于是全部删除,从正常机器上拷贝过来,然后 yum clean all ,yum makecache ,yum update 。全部执行后,问题造就。

======
执行命令: yum repolist all
nginx-stable nginx stable repo enabled

nginx 的仓库和其它正常机器上一模一样没问题


======
执行命令: yum list |grep nginx
好,现在区别来了,正常机器上有这两行
nginx.x86_64 1:1.20.1-1.el8.ngx @nginx-stable
nginx.x86_64 1:1.20.2-1.el8.ngx nginx-stable

而我的机器上缺这两行,其它的 nginx 模块都不缺。

======
执行命令: yum list installed |grep nginx
我的机器没有任何反馈,这表明 yum 认为自己未安装 nginx


现在,这个 Nginx 在我的机器上好像失踪了一般,无法被 yum 找到,但是之前被 yum 安装上去的那个 nginx 版本,还在正常的跑。我实在想不通这种现象如何产生的,我放狗翻遍国内国外社区,尝试了所有能找到的办法,除了把 yum 整个卸载重装以外的一切重置方法,我都试验过了,yum 还是找不到 Nginx ,但是安装其它的东西一切正常。
3666 次点击
所在节点    Linux
33 条回复
abcbuzhiming
2021-11-19 14:31:53 +08:00
@dreasye 那宝塔写入的源到底要如何清洗掉,我都把 /etc/yum.repos.d/ 清洗了一遍了
dreasye
2021-11-19 14:47:42 +08:00
@abcbuzhiming 那会我折腾半天弄不好,网上也没找到相关的问题,加上没有重要的东西在上面,直接重置镜像了。没法做参考(掩面
neilyoone
2021-11-19 15:16:35 +08:00
干了这么多年 运维
好奇的我去 Google 一下“宝塔面板” 是虾米

这个针对小白用户 可能有点用处, 几百几千台的 VM 资源 肯定不适用了吧
yjd
2021-11-19 15:58:49 +08:00
skiy
2021-11-19 16:05:13 +08:00
# yum install nginx
Last metadata expiration check: 1:57:02 ago on Fri 19 Nov 2021 02:04:51 PM CST.
Dependencies resolved.
===================================================================================================================================================================================================================
Package Architecture Version Repository Size
===================================================================================================================================================================================================================
Installing:
nginx x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 appstream 570 k
Installing dependencies:
nginx-all-modules noarch 1:1.14.1-9.module_el8.0.0+184+e34fea82 appstream 23 k
nginx-filesystem noarch 1:1.14.1-9.module_el8.0.0+184+e34fea82 appstream 24 k
nginx-mod-http-image-filter x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 appstream 35 k
nginx-mod-http-perl x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 appstream 45 k
nginx-mod-http-xslt-filter x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 appstream 33 k
nginx-mod-mail x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 appstream 64 k
nginx-mod-stream x86_64 1:1.14.1-9.module_el8.0.0+184+e34fea82 appstream 85 k

Transaction Summary
===================================================================================================================================================================================================================
Install 8 Packages

Total download size: 881 k
Installed size: 2.0 M
Is this ok [y/N]:


********************************************************************

看了下,是 appstream 源的,你看看有没有这个文件:
/etc/yum.repos.d/CentOS-Linux-AppStream.repo
[appstream]
name=CentOS Linux $releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
leeyuzhe
2021-11-19 16:07:07 +08:00
那就真的有点奇怪了,我现在的想法跟一楼一样了
Droi
2021-11-19 17:15:49 +08:00
yum list available | grep nginx 看看源里有没有包
yum install --downloadonly --downloaddir=/tmp nginx 只下载试试

还不行就安装 RPM 包或者源码吧
learningman
2021-11-19 17:33:19 +08:00
宝塔有两种安装模式,源码 make install 或者一个他们自己打包的 rpm
先检查下 nginx 有没有指向的程序,再一步步分析吧
abcbuzhiming
2021-11-19 19:47:34 +08:00
@yjd 试过了,没有用


@skiy 我有这个 /etc/yum.repos.d/CentOS-Linux-AppStream.repo 文件,内容和你一样,没用,我现在感觉不是这类文件的问题,因为 /etc/yum.repos.d/目录下的所有文件都被我删除了然后从正常机器里拷贝了一个过来


@Droi 你这个是能显示出包来,但是还是一样,看上去都是周边的包,最关键的 nginx.x86_64 ,这个,就没有


@learningman 我现在感到困惑的是,就算宝塔给我装了一个 [自定义版 Nginx] 进来,它也不应该干扰到 Yum 自己的包管理,yum install 也找不到 Nginx 到底是什么鬼。按理说 yum 的所有源配置文件都在 /etc/yum.repos.d/ 目录下,问题是这个目录都被我洗了一遍了,yum 还是无法恢复正常,而且神奇的是,只有这个包如此
skiy
2021-11-19 20:21:13 +08:00
@abcbuzhiming 刚刚在一台装了 BT 的机子上面去运行 yum install nginx ,也是没找到。

No match for argument: nginx
Error: Unable to find a match

不过我的是 8.0 的系统,没有 Stream 。
用其它那些工具安装一个试试,看看能不能修复?比如 oneinstack 或 lnmp.org

感觉你这个问题得找 BT 官方问一下吧。
abcbuzhiming
2021-11-19 20:31:06 +08:00
@skiy 我现在怀疑 BT 的脚本应该是触发了 yum 的什么 bug ,只能这么估计了
skiy
2021-11-19 20:40:55 +08:00
@abcbuzhiming

找到这个文件:/etc/yum.conf ,将 exclude 这一行注释掉就行了。


------------------------------------------

[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
exclude=httpd nginx php mysql mairadb python-psutil python2-psutil
abcbuzhiming
2021-11-19 20:48:36 +08:00
@skiy 老哥 666666 ,解决了。问题就在这,我头一次知道 yum 还在这里藏着一个屏蔽软件包的配置。靠啊,BT 面板写了这个文件,卸载的时候居然不还原,坑死个人

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/816495

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX