linux系统管理学习笔记8-管理软件包
用RPM管理软件
本讲学习如何在Linux之中管理系统中的软件。
编译源代码安装软件需要编程基础
因为不同的Linux发行版本往往有很大的不同,开发者在某个发行版本中开发和编译的程序,直接放到另外一个领域,有非常大的可能性无法运行,因此早期的历史软件都是通过源代码来分发的,使用者基本都是通过在自己的平台上重新编译源代码来安装软件,这种编译源代码的方式比较繁琐和复杂,要求用户有一定的编程基础,往往难以掌握。
软件包管理器RPM使用指令
为了解决这个问题,红帽公司开发了一个包管理器,名为red hat package manager, RPM,是Linux下软件资源最为丰富的软件包类型,是使用最为广泛的软件包管理器。
简单来说,RPM将软件编译好的二进制文件,所依赖的动态库文件以及配置文件打包压缩到一个文件中,这个文件就被称为RPM软件包。用户在用这个RPM软件包安装软件的时候,RPM就将包里的文件解压到目标操作系统上,安装过程中还可以动态生成一些文件,一并安装到系统中。RPM,对普通用户而言,使得软件管理变得十分容易,只需要十分简单的命令,就能完成RPM的安装卸载和升级。
每个RPM软件包文件的名字都包含了一些重要的信息,通常第一部分是软件包的名字,第二部分是软件包的版本号,第三部分是软件包是用的硬件规格。第三部分决定了您下载的软件包是否能够安装到您的机器上,
-
x86-64,表示该软件包必须安装在拥有64位CPU的计算机上,
-
i386,i586或者i686,表示必须安装在拥有32位CPU的计算机上。
-
no arch ,表示软件适用所有架构的计算机。
以OPERA浏览器的安装为例,介绍RPM安装软件的使用方法。
# 查询是否安装
rpm -q opera
# 安装软件
rpm -ivh opera-11.11-1.mgal.x86_64.rpm
# 卸载软件
rpm -e opera
-
首先我们要获取它的RPM安装包,可以在OPERA的官方网站上下载,或者到RPM网站上下载,这里选择到RPM的网站上下载,在搜索框里搜索opera。
-
查询主机上是否已经安装了opera,查询命令为
rpm -q opera
, 若已经安装的话,需要先卸载才能重新安装。 -
接着为安装过程,命令为
rpm -ivh opera-11.11-1.mgal.x86_64.rpm
, i选项一般和v h 选项联用,v选项是显示安装详细信息,h选项是显示#w为安装进度条。 -
安装完成后可以用rpm 再次查询已经安装opera,
rpm -q opera
。也可以在Applications中的Internet中看到有opera浏览器的应用。 -
如果要卸载opera, 命令为
rpm -e software name
,即卸载用rpm 的-e选项。我实践时在centos7.7中rpm不需要输入软件全名,可以直接使用rpm -e opera
进行卸载opera软件。不过在老师课程中使用的centos6系统中,rpm卸载软件时,后需跟软件包含版本及系统架构的全名称。
rpm管理软件的缺点是解决不了软件包依赖的问题
例如当安装某个软件时,可以会提示出错,failed dependencies。就是用户需要安装软件包A,但是可能需要先自己安装依赖的多个安装包。这就使得安装过程非常麻烦。yum 软件包就为了解决这个问题而诞生了。
用yum 管理软件
yum, yellow dog updator modifier,黄狗更新管理器
自动解决rpm包之间的依赖关系,不需要用户手动解决安装包依赖问题。
注意yum 可以视为rpm 的一个前台工具,并不是一个独立的软件包管理器。
yum 的工作原理并不复杂,因为每一个rpm软件包都有一个包头header,header中有该软件的依赖关系,分析header就可以知道每个软件包的依赖软件。yum 服务器的分析工具,首先分析软件包A的header,将软件包A所有依赖关系记录成一个文件,并将其依赖的所有软件包也都囊括到yum服务器中备用。所以yum的基本工作流程就是,yum服务器端放着软件源,软件源中有软件仓库,仓库里包含三种工具,一是该软件仓库中所有RPM软件包的目录索引,二是每个RPM软件包的依赖性关系数据,三是该软件仓库中所有RPM软件包。当用户用yum安装某个软件包时,通过yum客户端首先查询某一个yum服务器上有无该软件,如果有则下载该服务器上记录的该软件包的依赖关系数据,并且根据该依赖性关系数据,一次性地从yum服务器端的软件仓库中将依赖的所有软件下载到yum 客户端上。
yum安装前清理缓存
在使用yum之前,建议先执行两个步骤:
yum clean all
, 清除yum原有软件包缓存数据yum makecache
, 将当前服务器上的软件包相关信息存到本地以提高搜索软件的速度。
yum安装软件包
接下来介绍yum安装软件包的指令 install,以linux中C++的编译器软件为例,软件名称为"gcc-c++",
yum install gcc-c++
,若提示需要安装或更新部分依赖软件包,就输入y。OK之后即完成安装。Centos7.7中,发现gcc-c++软件包已经在安装系统之后安装好了。
yum查询软件包是否安装
yum 查询软件包,查询指令为list,list指令后跟软件包名来查询该软件包是否已经安装。
如yum list gcc-c++
, yum输出提示gcc-c++是已安装的软件包
如yum list bind
,yum输出提示bind是可安装的软件包,意思是bind软件包未安装。
如yum list aaa
, yum 查询的软件包不在软件源中,会提示没有匹配的软件包可以列出。
list指令支持通配符,如yum list gcc*
,表示列出yum源中所有名字以gcc打头的软件包。
list指令还可以跟两个特殊的参数,
yum list installed
,将列出主机上所有已安装好的软件包。可以结合管道操作查看,yum list installed|less
yum list available
,将列出当前软件源中,所有可安装的软件包。yum list available|less
yum查看软件包
yum 查看软件包,指令是info,info命令后跟软件包名,来查看软件包的具体信息,包括软件包的大小,软件包的版本号,软件包的简短描述,软件包是否已经安装。
yum info gcc-c++
yum更新软件包
yum更新软件包,指令是update,指令后跟软件包名,
yum update python
yum卸载软件包
yum卸载软件包,指令是remove, 指令后跟软件包名。yum remove gcc
, 会提示需要确认卸载依赖于该软件包的其他软件。
为yum配置软件源
centos中,yum使用的默认软件源,是centos提供的官方源,不包括任何有版权争议的软件包,并且软件包更新不太及时。
如"eclipse", linux中经典的媒体播放器 "mplayer"均不在centos官方源中。
推荐的6个第三方源
因此需要配置yum 的第三方软件源,推荐如下6个第三方软件源
- EPEL源(在我听课后实践时,发现EPEL已经纳入yum的官方源中)
- Remi源
- aTrpms源
- RPMFusion源
- RepoForge源
- ELRepo源
配置RepoForge源并设置源优先级
以RepoForge源为例,在主机上配置yum的第三方源,并安装mplayer播放器。
- 打开RepoForge源的官方网站,下载RepoForge源的对应所使用主机系统64位和主机EL版本的的rpm安装包(
cat /etc/redhat-release
查看主机所使用的EL release版本号), 复制下载文件的链接地址,wget 下载链接至当前目录下。 - 安装
rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
- 进入/etc 目录下的yum配置目录yum.repos.d 下,
cd /etc/yum.repos.d/
,ls -l
- 找到其中名为repoforge.repo的文件,即为repoforge的配置文件,但是目前repoforge还不能正常使用。原因是现在yum中除了默认源外,还有了一个第三方源。也就是yum中有了多个软件源,所以需要对软件源进行优先级的排序,这里让官方默认的软件源优先级最高,让repoforge源次之,首先安装一个对yum源进行优先级排序的软件,叫做"yum-plugin-priorities",即
yum install yum-plugin-priorities
,安装完毕之后即可以进行优先级的配置。 - 先打开yum的官方源配置文件,
vim /etc/yum.repos.d/CentOS-Base.repo
, 在三个软件仓库(即文档中的[base] , [updates] , [extras])配置的末尾,分别加上一句 "priority=1",表示其优先级最高。然后保存退出。 - 再打开repoforge的配置文件,
vim /etc/yum.repos.d/rpmforge.repo
,在其所有软件仓库配置的末尾分别加上一句"priority=10",表示其优先级次于官方源。保存退出。就完成了软件源的优先级排序。 - 接着就可以yum安装mplayer软件了,一共需要安装两个软件包,分别是软件主体和软件的图形界面,
yum install mplayer mplayer-gui
,然后即进入安装,等待完成。 - 命令行输入
gmplayer
即打开播放器,可以用以播放视频或音频文件。