Linux软件包管理:RPM与YUM
Posted 江左风华
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux软件包管理:RPM与YUM相关的知识,希望对你有一定的参考价值。
一、RPM包
RPM命名“RedHat Package Manager”,简称则为RPM。这个机制最早由Red Hat这家公司开发出来的,RPM最大的特点就是需要安装的软件已经编译过,并已经打包成RPM机制的安装包,通过里头默认的数据库记录这个软件安装时需要的依赖软件。当安装在你的Linux主机时,RPM会先依照软件里头的数据查询Linux主机的依赖属性软件是否满足,若满足则予以安装,若不满足则不予安装。
1、RPM优缺点
优点:
1)软件已经编译打包,所以传输和安装方便,让用户免除编译
2)在安装之前,会先检查系统的磁盘、操作系统版本等,避免错误安装
3)软件的信息都已经记录在linux主机的数据库上,方便查询、升级和卸载
缺点:
1)软件包安装的环境必须与打包时的环境一致或相当
2)必须安装了软件的依赖软件
3)卸载时,最底层的软件不能先移除,否则可能造成整个系统不能用
为了解决RPM属性依赖的问题,下面也将会为你详细介绍YUM的使用方法。
2、rpm包命名的含义
RPM包的命名格式:
软件名称-版本号-发布次数.适合linux系统.硬件平台.rpm
例如:ftp-0.17-74.fc27.i686.rpm
注意:
包全名:rpm操作没有安装的软件包,软件包使用的是包全名
包 名:rpm操作的已经安装的软件,软件包使用的是包名
例如上面的例子,包全名为ftp-0.17-74.fc27.i686.rpm,包名为ftp。
3、RPM安装软件的默认路径
/etc 配置文件放置目录
/usr/bin 一些可执行文件
/usr/lib 一些程序使用的动态链接库
/usr/share/doc 一些基本的软件使用手册与说明文件
/usr/share/man 一些man page档案
4、RPM安装原理图
二、RPM使用手册
1、软件安装(install)
rpm -ivh package-name
参数说明(后面括号内为英文说明):
-i:install的意思,安装
-v:查看更详细的安装信息画面(provide more detailed output)
-h:以安装信息栏显示安装进度
2、软件升级
rpm –Uvh foo-2.0-1.i386.rpm
参数说明(后面括号内为英文说明):
-U:upgrade的意思,更新软件,若系统中没有该软件则进行安装(upgrade package(s))
-F:freshen的意思,更新系统已安装的某个软件(upgrade package(s) if already instaalled)
3、查询模式
RPM在查询的时候,其实查询的地方是/var/lib/rpm/这个目录下的数据库文件。另外,RPM也可以查询未安装的
RPM的查询语法为:
rpm {-q|--query} [select-options] [query-options] 常用参数说明(后面括号内为英文说明):
-a:all,列出已经安装在本机的所有软件(Query all instaled packages.)
-p:package,查询一个RPM文件的信息(Query an (uninstalled) package. )
-f:file,由后面接的文件名称找出该文件属于哪狐假虎威已安装的软件(Query package owning file.)
-i:information,列出该软件的详细信息,包含开发商、版本与说明等(Display package information, including name, version, and description.)
-l:list,列出该软件所有的文件与目录所在完整文件名(List file in package)
-c:configuration,列出该软件的所有设置文件(找出在/etc/下面的文件名而已)(List only configuration files)
-d:documentation,列出该软件所有的帮助文档(List only documentation files)
-R:required,列出与该软件有关的依赖软件所含的文件(List capabilities on which this depends.)
注意:在查询的部分,所有的参数之前都要加上-q才是所谓的查询。
4、卸载软件
使用rpm的卸载过程一定要由最上层往下卸载,以rp-pppoe为例,这个软件主要是依据ppp这个软件来安装的,所以当你要卸载ppp的时候,就必须先卸载rp-pppoe才行!
删除的命令非常简单,通过-e参数就可以完成。不过,很常发生软件属性依赖导致无法山洼某些软件的问题。
rpm -e gcc
三、yum使用
简介:YUM可以看作是CS架构的软件,YUM的存在很好的解决了RPM的属性依赖问题;YUM通过依赖rpm软件包管理器, 实现了rpm软件包管理器在功能上的扩展, 因此YUM是不能脱离rpm而独立运行的。
2、yum的特点
1)可以同时配置多个yum资源库(Repository)
2)简洁的配置文件(/etc/yum.conf)
3)自动解决增加或删除rpm包时遇到的依赖性问题
4)使用方便
5)保持与RPM数据库的一致性
3、YUM原理说明
Server端先对程序包进行分类后存储到不同repository容器中; 再通过收集到大量的rpm的数据库文件中程序包之间的依赖关系数据, 生成对应的依赖关系和所需文件在本地的存放位置的说明文件(.xml格式), 存放在本地的repodata目录下供Client端取用;
Cilent端通过yum命令安装软件时发现缺少某些依赖性程序包, Client会根据本地的配置文件(/etc/yum.repos.d/*.repo)找到指定的Server端, 从Server端repo目录下获取说明文件xxx.xml后存储在本地/var/cache/yum中方便以后读取, 通过xxx.xml文件查找到需要安装的依赖性程序包在Server端的存放位置, 再进入Server端yum库中的指定repository容器中获取所需程序包, 下载完成后在本地实现安装。
注意:YUM是一个在线软件管理工具,所以使用YUM进行的操作大都是需要在联网的条件下才能正常使用。
四、yum配置文件
1、yum容器说明
虽然yum是你在联网后就能直接使用,不过,由于你系统的站点镜像没选择好,会导致连接速度非常慢!所以,这时候就需要我们去手动修改yum的设置文档了。
如你连接到CentOS的镜像站点(http://ftp.twaren.net/Linux/C...)后,就会发现里面有一堆链接,那些链接就是这个yum服务器所提供的容器了,包括centosplus、extras、fasttrack、os、updates等容器,最好认的就是os(系统默认的软件)与updates(软件升级版本)。
在yum服务器的容器里面,最重要的一个目录就是那个“repodata”,该目录是分析RPM软件后所产生的软件依赖数据放置处。因此,当你找到容器所在网址时,最重要的就是该网址下面一定要有一个名为“repodata”的目录存在,那就是容器的网址了。
2、容器查询
首先,可以先查询一下目录yum server所使用的容器有哪些。
使用命令:yum repolist all,查询结果如下:
如上图,只有当最右边的status为enabled该容器才算激活,/etc/yum.repos.d/里面会有多个配置文件(文件名以.repo结尾),yum会从里面逐个查找,所以里面的容器名称不能有重复。
3、配置文件修改
1)yum容器配置文件路径:/etc/yum.repos.d/目录下以.repo结尾的文件都是yum源
2)打开配置文件:vi /etc/yum.repos.d/CenOS-Base.repo,内容如下:
如上只是部分容器的截图,该配置文件的说明如下:
[base]:代表容器的名字。中括号一定要存在,里面的名称可以随意起,但不能有两个相同的容器名称,否则yum会不知道去哪里找容器相关软件列表文件。
name:只是说明一下这个容器的意义而已,重要性不高。
mirrorlist:列出这个容器可以使用的镜像站点,如果不想使用可以批注掉这一行。
baseurl:这个最重要,因为后面接的就是容器的实际网址。mirrorlist是由yum程序自行去找镜像站点,
baseurl则是指定固定的一个容器网址。
enable=1:启动这个容器,默认值也为1。关闭这个容器可以设置enable=0。
gpgcheck=1:指定是否需要查阅RPM文件内的数字证书。
gpgkey:数字证书的公钥文件所在位置,使用默认值即可。
注意:
1)yum会自动识别/etc/yum.repos.d/目录以.repo结尾的文件。
2)当我们修改了配置文件的网址却没有修改容器名称,可以会造成本机的列表与yum服务器的列表不同步,这时就需要手动来清除容器的数据了:
语法:yum clean [packages|headers|all]
参数:
packages:将已下载的软件文件删除
headers:将下载的软件文件头删除
all:将所有容器数据都删除
例:删除已下载过的所有容器相关数据(含软件本身与列表)
yum clean all
五、yum源配置
如果CentOS服务器处在内网环境中时,如果缺少依赖手动安装那么会非常麻烦,要花费很多时间来寻找rpm包,现在如果搭建本地的yum源,就非常方便了,如果搭建http的,那么局域网内其他服务器就都可以使用了,使用yum源首先需要一个CentOS安装镜像,这里是:CentOS-6-x86_64-DVD-1511.iso
1)本地ios镜像配置本地yum源
从CentOS7官网下载DVD中存在需要的大部分软件,所以在没有网络的情况下可以配置yum源为本地的DVD,下载速度快,软件稳定。
1. 如果使用虚拟机,那么就在虚拟机中挂载DVD的iso文件。
2. 使用如下命令新建一个挂载点并挂载修改yum源配置
[root@centos6 ~]# mkdir /media/cdrom //创建一个挂载点目录
[root@centos6 ~]# mount /dev/cdrom /media/cdrom/ //把挂载的镜像挂载到cdrom目录作为yum源
3.修改yum源配置,创建CentOS-cdrom.repo文件作为本地ios镜像挂载源
[root@centos6 ~]# cd /etc/yum.repos.d/
[root@centos6 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
[root@centos6 yum.repos.d]# cp CentOS-Base.repo CentOS-cdrom.repo -p //创建本地镜像repo文件
[root@centos6 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Vault.repo
CentOS-cdrom.repo CentOS-Media.repo
4、修改CentOS-cdrom.repo的内容,注释文档中的所有mirrorlist属性,把baseurl属性打开注释,并设置baseurl的属性值为挂载点,baseurl=file:///media/cdrom/,如图所示:
5、清空yum已存在的所有源信息
yum clean all
6、查看本地源所有的软件
yum list
yum repolist
2)本地内网镜像配置本地yum源
首先需要一个web服务器,比如apache httpd或者nginx均可以,如果是nginx要开启访问目录列表权限,一般安装CentOS的时候都会安装httpd服务器,所以这里直接使用apache httpd;如果没有安装的话可以通过rpm或者从官网下载源码包来编译安装,之前专门写过一篇文章来安装apache的,具体过程不再叙述;如果能联网的话,可以直接使用 yum -y install httpd 来安装,我这里已经安装了,所以直接使用 systemctl start httpd.service 启动httpd服务,启动之后执行命令 systemctl status httpd.service 来查看运行状态,如下图所示,就是启动成功了:
配置yum文件与上面类似
1、编辑配置文件:/etc/yum.repos.d/CentOS-Base.rep;’
2、然后注释mirrorlist,放开baseurl配置成yum源位置,还有gpgkey也配置成对应位置;
3、配置完这些以后,然后在[updates]和[extras]都添加一个enabled=0配置项,表示不生效,一般只用[base]中的配置即可,配置好之后保存退出;
4、然后执行 yum repolist 查看yum源信息;
注意:有些特殊情况下,如果配置了CentOS-Base.repo还是会出现连接一些网址并且失败,这时候手动检查一下/etc/yum.repos.d/下面其他一些配置文件,看看是否有连接外网的配置,如果有的话直接enabled=0禁用掉就可以了;需要注意一点就是/etc/yum.repos.d/下面所有的配置文件都可以用,包括自己建的比如CentOS.repo也是可以的,只要是启用的,yum都会进行加载,一般都是启用CentOS-Base.repo,其余禁用就可以了
六、yum使用手册
1、查询
查询相关的命令:
search:搜索某个软件名称或者是描述的重要关键字;
list:列出目前yum所管理的所有的软件名称与版本,有点类似于rpm -qa
info:同上,不过有点类似于rpm -qai
provides:从文件去搜索软件!类似于rpm -qf
1)查询与ftp相关的软件有哪些
yum search ftp
2)查询gcc这个软件的功能
yum info gcc
可以查询到该软件的版本号、描述信息、是否已安装等信息。
3)列出yum服务器上所提供的所有软件名称
yum list
4)列出目前服务器上可供本机进行升级的软件有哪些
yum list updates
5)列出提供passwd这个文件的软件有哪些
yum provides passwd
6)查找以pam开头的软件名称有哪些
yum list pam*
2、安装与升级
相关的命令:
install:后面接要安装的软件。
update:后面接要升级的软件。若要整个系统都升级,就直接update即可。
例:安装一个emacs编辑器软件
yum install emacs
小技巧:
使用参数-y,当遇到需要等待用户输入时,这个选项会提供yes的响应,如上面的例子可以写成:yum -y install emacs
3、卸载
相关命令:
remove
例:卸载上面例子安装的emacs
yum remove emacs
4、软件组管理
还记得全新安装CentOS时,不是可以选择所需的软件么?而那些软件不是利用GNOME/KDE/X Window之类的名称存在吗?其实这就是软件组。软件级的存在,对于大量的一系列软件安装是非常有用的一个功能。
相关命令说明:
grouplist:列出所有可用的组列表
groupinfo:后面接group name,则可以了解该组内含的所有组名称
groupstall:安装一整级的软件
groupremove:删除某个组
1)查询目前容器与本机上面的可用与安装过的软件组有哪些
yum grouplist
2)查看一个软件组的信息
yum groupinfo GNOME
3)安装桌面环境GNOME
yum groupstall GNOME
以上是关于Linux软件包管理:RPM与YUM的主要内容,如果未能解决你的问题,请参考以下文章
运维笔记10 (Linux软件的安装与管理(rpm,yum))