今天由于某些原因需要卸载掉服务器上的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啊。
本博客文章除特别声明,全部都是原创!原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【rpm卸载软件忽略循环依赖】(https://www.iteblog.com/archives/1731.html)