所有的Linux系统中都带有包管理器命令,比如Ubuntu发行版里的dpkg命令,CentOS/RHEL发行版里带的yum和rpm命令,下面我就以自己比较熟悉的CentOS/RHEL系列发行版来讲解,以nginx这个常用的web软件为例。

查看系统上是否安装了nginx

命令

rpm -qa | grep nginx 

结果如下面图中所示:

从上面的图中可以看到,确实已经安装好了nginx这个软件,rpm -qa命令的含义是查询所有安装到系统上的软件,而grep是从查询的结果中搜索。如果没有返回结果,那么可以使用yum命令来安装。命令是:

yum install nginx -y 

安装完成后就能够看到对应的搜索结果,我们就可以使用自带的包管理器yum和rpm命令来删除这个软件。

yum命令 卸载

yum erase nginx -y 

执行结果如下所示:

看到complete的提示说明已经成功删除,此时再执行nginx命令查看软件是否存在,结果如下所示,从图中可以看到提示的意思是没有找到这个命令,说明nginx软件已经被成功卸载。

rpm命令卸载软件

rpm命令卸载软件的格式是:

rpm -e softwarename

softwarename 指的是软件名称,比如我们要卸载nginx就是:

rpm -e nginx 

然后等到命令执行完成,结果如下,从结果中我们可以看到,这个命令更直接了,能成功删除的时候没有任何提示。

同样的,我们通过nginx命令来验证一下,如下面图中所示,可以看到,也提示没有找到这个命令,说明nginx这个软件确实被成功卸载了。至此通过包管理器命令来卸载软件就讲解完毕了。其他发行版的包管理器命令例如dpkg,dnf等都大同小异,都是通过相关参数来删除。读者可以举一反三。

通过rm命令来删除软件

上面讲解的是通过包管理器命令来卸载软件,但是有的时候,可能软件卸载过程中出错,导致软件并没有被完全删除。此时可能是卸载失败的,因此就需要通过rm命令来帮助继续删除软件。同样的以nginx为例,首先我们来看一下安装好的nginx有多少文件,如下面图中所示,查询命令是:

rpm -ql nginx 

从上面的图中,我们可以看到,nginx安装后生成的文件还是比较多的,且主要分为5类,分别是:

1. 配置文件,保存在/etc/nginx/目录下,以及/etc/目录下

2. 库文件,保存在/usr/lib,/usr/lib64,/usr/libexec目录下

3. 命令文件,保存在/usr/sbin目录下

4. 帮助文档,保存在/usr/share/doc/nginx-1.14.0/和/usr/share/nginx目录下

5. 日志和缓存文件,保存在/var/log/nginx和/var/cache/nginx目录下

如下面途中所示:

因此我们就需要通过rm命令依次删除这些目录下的文件,命令如下:

rm -rf /etc/nginx/

rm -rf /sysconfig/nginx*

rm -rf /usr/lib/systemd/system/nginx*

rm -rf /usr/lib64/nginx

rm -rf /usr/libexec/initscripts/legacy-actions/nginx/

rm -rf /usr/sbin/nginx*

rm -rf /usr/share/nginx*

rm -rf /usr/share/doc/nginx*

rm -rf /usr/share/man/man8/nginx*

删除完毕后,我们同样通过nginx命令来测试一下,可以看到提示没有找到nginx命令,说明nginx确实已经被删除掉了。但是我们再通过rpm -qa命令查询一下,发现还能查到记录。这是因为并没有通过rpm删除nginx的记录,因此nginx还保存在rpm命令数据库中。但是实际上nginx软件的所有文件已经被删除了。这就是通过rm命令删除或者说卸载软件的一个弊端。除此之外,这个记录还会阻止我们重新按照nginx命令。

重新安装nginx

如下面图中所示,因为我们已经通过rm命令删除了所有的nginx文件,此时想通过yum命令来重新安装,但是可以看到它提示我们nginx已经安装且是最新版本,Nothing to do,表示什么都不做。这也是通过rm命令删除软件的弊端。

这个时候如果想安装,就需要通过强制安装或者重新安装命令来执行,如下所示:

yum reinstall nginx -y 

结果如图二所示,可以看到此时才能重新安装nginx。