yum update
几天前,我在我的 CentOS5 网络服务器上运行了它。今天我才注意到我有 3 个 httpd-* rpm!
我怎么会得到三个 httpd RPM(我的其他服务器只有一个 httpd rpm)。我想确保我的服务器有一个修补过的、更新过的版本/usr/sbin/httpd
。我如何知道这些包中的哪一个提供了 httpd 二进制文件/usr/sbin/httpd
?
[root@node1 ~]# rpm -q httpd
httpd-2.2.3-76.el5.centos
httpd-2.2.3-78.el5.centos
httpd-2.2.3-83.el5.centos
[root@node1 ~]# /usr/sbin/httpd -V |grep version
Server version: Apache/2.2.3
[root@node1 ~]# rpm -q httpd-2.2.3-76.el5.centos --list |grep -w /usr/sbin/httpd
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
[root@node1 ~]# rpm -q httpd-2.2.3-78.el5.centos --list |grep -w /usr/sbin/httpd
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
[root@node1 ~]# rpm -q httpd-2.2.3-83.el5.centos --list |grep -w /usr/sbin/httpd
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
[root@node1 ~]#
root@node1 ~]# rpm -q --provides httpd |grep -w httpd
config(httpd) = 2.2.3-76.el5.centos
httpd-mmn = 20051115
httpd = 2.2.3-76.el5.centos
config(httpd) = 2.2.3-78.el5.centos
httpd-mmn = 20051115
httpd = 2.2.3-78.el5.centos
config(httpd) = 2.2.3-83.el5.centos
httpd-mmn = 20051115
httpd = 2.2.3-83.el5.centos
更新:回答马克·瓦格纳的问题:
[root@node1 ~]# rpm -q -f /usr/sbin/httpd
httpd-2.2.3-76.el5.centos
httpd-2.2.3-78.el5.centos
httpd-2.2.3-83.el5.centos
[root@node1 ~]# rpm -V httpd-2.2.3-83.el5.centos
S.5..... c /etc/logrotate.d/httpd
S.5..... c /etc/rc.d/init.d/httpd
....L... /var/www
更新2:尝试重建 RPM 数据库,但没有成功
[root@node1 ~]# cd /var/lib
[root@node1 lib]# tar zcvf /var/preserve/rpmdb-`date +"%d%m%Y"`.tar.gz rpm
[root@node1 lib]# cd /var/lib/rpm
[root@node1 rpm]# rm -f __db*
[root@node1 rpm]# /usr/lib/rpm/rpmdb_verify Packages
[root@node1 rpm]# mv Packages Packages.orig
[root@node1 rpm]# /usr/lib/rpm/rpmdb_dump Packages.orig | /usr/lib/rpm/rpmdb_load P
ackages
[root@node1 rpm]# /usr/lib/rpm/rpmdb_verify Packages
[root@node1 rpm]# rpm -qa 1> /dev/null
[root@node1 rpm]# rpm -v --rebuilddb
[root@node1 rpm]# rpm -q httpd
httpd-2.2.3-76.el5.centos
httpd-2.2.3-78.el5.centos
httpd-2.2.3-83.el5.centos
[root@node1 rpm]#
答案1
我也会重建 rpm 数据库。我通常这样做:
cd /var/lib/rpm
rm __db*
rpm --rebuilddb
但这里有更长、更安全、更官方的方法:
答案2
这看起来像是中断更新的典型案例。更新分为两个阶段:安装新文件并将新软件包添加到数据库,然后删除所有旧文件并将旧软件包从数据库中删除。如果更新在这两个步骤之间中断,就会出现这种不一致的情况。
针对这种情况我会采取以下措施(这需要一个短暂的维护期):
保存配置文件的副本。RPM 无论如何都会执行此操作,并
.rpmsave
为您修改的任何文件添加扩展名,但最好再三确认。强行移除全部软件包:
rpm -e --allmatches httpd
重新安装包:
yum -y install httpd
恢复您的配置文件。