几天前我在我的CentOS5networking服务器上运行了yum update 。 今天我只注意到我有3个httpd- * rpms!
我怎样才能得到三个httpd的RPM(我的其他服务器只有一个httpd rpm)。 我想确保我的服务器有一个补丁,更新版本的/usr/sbin/httpd 。 我怎么知道哪个包在/usr/sbin/httpd提供了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
更新 :回答Mark Wagner的问题:
[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 :试图重buildRPM数据库,没有运气
[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]#
我也会重buildrpm数据库。 我通常只是做:
cd /var/lib/rpm rm __db* rpm --rebuilddb
但是这是更长,更安全的官方方法:
这看起来像中断更新的经典案例。 更新分两个阶段完成:安装新文件并将新包添加到数据库,然后删除所有旧文件,并将旧包从数据库中删除。 如果更新在这两个步骤之间中断,则会出现这种不一致。
我要处理这种情况(这将需要一个简短的维护时间):
保存您的configuration文件的副本。 无论如何,RPM会为您修改的任何文件使用.rpmsave扩展名执行此操作,但最好加倍确定。
强制删除所有的软件包:
rpm -e --allmatches httpd
重新安装包装:
yum -y install httpd
恢复您的configuration文件。