所有的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。