今天由于某些原因需要卸载掉服务器上的php软件,然后我使用下面命令显示出本机安装的所有和php相关的软件,如下: iteblog$ rpm -qa | grep php
php-mysqlnd-5.6.25-0.1.RC1.el6.remi.x86_64
php-fpm-5.6.25-0.1.RC1.el6.remi.x86_64
php-pecl-jsonc-1.3.10-1.el6.remi.5.6.x86_64
php-pecl-memcache-3.0.8-3.el6.remi.5.6.x86_64
php-pdo-5.6.25-0.1.RC1.el6.remi.x86_64
php-mbstring-5.6.25-0.1.RC1.el6.remi.x86_64
php-pear-1.9.4-4.el6.noarch
php-cli-5.6.25-0.1.RC1.el6.remi.x86_64
php-gd-5.6.25-0.1.RC1.el6.remi.x86_64
php-pecl-zip-1.13.4-1.el6.remi.5.6.x86_64
php-pecl-apcu-4.0.11-2.el6.remi.5.6.x86_64
php-common-5.6.25-0.1.RC1.el6.remi.x86_64
php-5.6.25-0.1.RC1.el6.remi.x86_64
php-mcrypt-5.6.25-0.1.RC1.el6.remi.x86_64
然后我一一把它们卸载掉,如下: iteblog$ rpm -e php-mysqlnd-5.6.25-0.1.RC1.el6.remi.x86_64
一切都很正常,但是当卸载到php-pecl-jsonc-1.3.10-1.el6.remi.5.6.x86_64和php-pecl-zip-1.13.4-1.el6.remi.5.6.x86_64的时候出现以下的错误: [iteblog@iteblog.com ~] $ rpm -e php-pecl-jsonc-1.3.10-1.el6.remi.5.6.x86_64
error: Failed dependencies:
php-pecl-jsonc(x86-64) is needed by (installed) php-common-5.6.25-0.1.RC1.el6.remi.x86_64
[iteblog@iteblog.com ~] $ rpm -e php-pecl-zip-1.13.4-1.el6.remi.5.6.x86_64
error: Failed dependencies:
php-pecl-zip(x86-64) is needed by (installed) php-common-5.6.25-0.1.RC1.el6.remi.x86_64
很容易就可以看出php-pecl-jsonc和php-pecl-zip都被php-common-5.6.25-0.1.RC1.el6.remi.x86_64依赖,所有理所当然的想到先卸载php-common-5.6.25-0.1.RC1.el6.remi.x86_64,如下: [root@iteblog.com ~] $ rpm -e php-common-5.6.25-0.1.RC1.el6.remi.x86_64
error: Failed dependencies:
php(api) = 20131106-64 is needed by (installed) php-pecl-jsonc-1.3.10-1.el6.remi.5.6.x86_64
php(api) = 20131106-64 is needed by (installed) php-pecl-zip-1.13.4-1.el6.remi.5.6.x86_64
php(zend-abi) = 20131226-64 is needed by (installed) php-pecl-jsonc-1.3.10-1.el6.remi.5.6.x86_64
php(zend-abi) = 20131226-64 is needed by (installed) php-pecl-zip-1.13.4-1.el6.remi.5.6.x86_64
当看到上面的错误信息的时候我只想说fuck!php-common居然又被php-pecl-jsonc和php-pecl-zip依赖,这岂不是变成了循环依赖了吗?这时候我想到了man命令,看到了rmp命令还有个--nodeps参数: [root@iteblog.com ~] $ man rpm
........................这里省略了很多输出.....................
--nodeps
Don’t do a dependency check before installing or upgrading a package.
........................这里省略了很多输出.....................
这不就是卸载的时候忽略依赖检测吗?然后我使用下面命令顺利地卸载了上面三个软件包: [root@iteblog.com ~] $ rpm --nodeps -e php-common-5.6.25-0.1.RC1.el6.remi.x86_64
[root@iteblog.com ~] $ rpm --nodeps -e php-pecl-zip-1.13.4-1.el6.remi.5.6.x86_64
[root@iteblog.com ~] $ rpm --nodeps -e php-pecl-jsonc-1.3.10-1.el6.remi.5.6.x86_64
[root@iteblog.com ~] $ rpm -qa|grep php
终于卸载干净了!有困难找man啊。