[Linux实用命令]-7-软件的安装与管理
引言
这篇文章介绍Linux四个运用最普遍的软件包管理器。使用CentOS和Ubuntu这两个不同的Linux发行版,分别介绍rpm、yum、dpkg和apt-get的使用方法。
文章目录
0×1.RPM和DPKG软件管理机制浅析
目前Linux大多数发行版中RPM和DPKG是两种比较常用的管理机制。RPM软件管理机制的主流发行版是Red Hat、CentOS、Fedora;DPKG软件管理机制的主流发行版是Debian、Ubuntu。这里不对这两种机制做过多的解释,只需要知道,两种软件管理机制使用的安装命令不一样就可以了。
Linux软件包的命名有一定的规律,一般的结构是"软件名称-版本-适合的系统平台.扩展名"。
例如,一个rpm安装包名称是"softname-3.2.6-i386.rpm",按照上面的结构就是,软件名称"softname",软件版本"3.2.6",适用的平台"i386"(x86构架);dpkg包的名称只是后缀不一样,其他命名规则差不多,例如"sogoupinyin_2.0.0.0068_amd64.deb",软件名称"sogoupinyin",版本"2.0.0.0068","amd64"适合64位系统平台,".deb"这是dpkg的安装包。
然而,不论哪种软件管理机制封装的安装包,都存在相关软件的依存问题,比如使用rpm或者dpkg安装软件A,A需要系统中已经安装好软件B和C,否则A将不能正常安装,这就带来一个非常麻烦的问题,如果A依赖的程序不止两个,而是几百个,这几百个软件又存在其它的软件依赖,手动安装这些依存程序显然非常麻烦。
所以,yum和apt-get这两种安装方式孕育而生。yum是RPM软件管理机制的在线安装方式,apt-get是DPKG软件管理机制的在线安装方式,它们都可以自动解决软件的依存问题,当某个需要安装的软件存在依存软件时,安装程序会自动搜索指定的网络服务器中是否存在这些依存的软件,如果存在,会将这些软件一次性全部安装好。
0×2.使用rpm命令安装卸载软件
这一部分实验是在"CentOS7"中完成的,软件的安装需要root权限(或将当前用户添加到/etc/sudoers文件中,然后使用sudo),我已经将CentOS的ISO载入光驱,在光盘的"Packages"目录中有很多rpm的安装包,本例使用其中的"zsh-5.0.2-14.el7.x86_64.rpm"这个安装包来演示rpm安装命令:
#为了使普通用户暂时获得root权限,首先将当前用户添加到sudoers文件中,切换到root用户编辑sudoers文件 [qingos@qingsword.com~]$ su root [root@qingsword.com~]# gedit /etc/sudoers #找到下面的位置,在root下方添加一条,当前用户名是qingos,后面的和root相同即可,保存退出 ## Allow root to run any commands anywhere root ALL=(ALL) ALL qingos ALL=(ALL) ALL #返回普通权限后就可以使用sudo命令了,CentOS7中默认光盘的挂载位置是在"/run/media/当前登陆用户用户名/光盘名称",进入光盘目录中的"Packages"目录 [root@qingsword.com~]# exit [qingos@qingsword.com~]$ cd /run/media/qingos/CentOS\ 7\ x86_64/Packages/ #使用rpm命令安装,因为这个软件包没有其他的依存关系,安装成功,参数"i"是安装的意思,"v"是显示详细信息,"h"是显示进度条。 [qingos@qingsword.com Packages]$ sudo rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm 准备中... ###### [100%] 正在升级/安装... 1:zsh-5.0.2-14.el7 ###### [100%] #查看软件都被释放到了系统的哪些位置 [qingos@qingsword.com Packages]$ rpm -qpl zsh-5.0.2-14.el7.x86_64.rpm
使用rpm卸载软件:
#与安装相同,只需要将参数i替换成e就能卸载软件,所不同的是,卸载软件只需要输入软件的名称 [qingos@qingsword.com Packages]$ sudo rpm -evh zsh
0×3.使用yum安装卸载软件
前面已经介绍过,rpm和dpkg在安装软件包的时候存在依存属性的问题,这个问题是软件的发布者在封装这个软件的时候的系统环境所决定的,yum在线安装很好的解决了这个问题。
首先复现一下rpm依存问题,使用rpm安装CentOS7系统盘中的"yp-tools-2.14-3.el7.x86_64.rpm"会遇到依存属性的问题,然后使用yum在线安装的功能自动搜索并安装这些依存软件:
#如果使用rpm安装一个有依存属性的软件就会出现下面这样的提示 [qingos@qingsword.com Packages]$ sudo rpm -ivh yp-tools-2.14-3.el7.x86_64.rpm 错误:依赖检测失败: ypbind 被 yp-tools-2.14-3.el7.x86_64 需要 #确保网络畅通,使用yum来安装 [qingos@qingsword.com~]$ sudo yum install yp-tools #显示需要下载的依存软件包数量和大小 安装 1 软件包 (+1 依赖软件包) 总下载量:141 k 安装大小:299 k Is this ok [y/d/N]: y #输入y回车就开始下载安装了
如果想要删除这个软件,只需要将install替换成remove,对应的依赖包也会被自动删除:
[qingos@qingsword.com~]$ sudo yum remove yp-tools 移除 1 软件包 (+1 依赖软件包) 安装大小:299 k 是否继续?[y/N]:y
yum自动升级系统中所有软件到最新版本:
#更新系统所有软件包 [qingos@qingsword.com~]$ sudo yum update 安装 2 软件包 (+1 依赖软件包) 升级 184 软件包 总计:369 M 总下载量:354 M Is this ok [y/d/N]: y #单独更新一个软件,只需要在上面的命令后面加上需要更新的软件名称即可 [qingos@qingsword.com~]$ sudo yum update openssh-server
列出是否已安装某个软件包以及这个软件包是否有可用更新:
[qingos@qingsword.com~]$ yum list openssh-server #如果这个软件包已经安装,会在输出列表的最后一列的关键字前添加一个"@"符号,如果没有"@"符号,说明这个软件包未安装,如果已经安装的软件包有更新,会在下面出现一个新版本的文件名,并且最后一列提示"updates" Installed Packages openssh-server.x86_64 6.4p1-8.el7 @anaconda/7.0 Available Packages openssh-server.x86_64 6.6.1p1-33.el7_3 updates
列出云服务器上是否存在某个软件包:
[qingos@qingsword.com~]$ yum search openssh-server N/S matched: openssh-server openssh-server.x86_64 openssh-server-sysvinit.x86_64
0×4.使用apt-get安装卸载软件
dpkg与apt-get包管理器的使用方法,在本站这篇文章"[ubuntu入门手册]-11-如何获取和安装软件"中有详细介绍。