RPM包管理及安装工具、RPM工具、YUM工具(本地YUM)

一、RPM包
RPM Package Manger
R最早代表Red Hat公司

建立统一的数据库文件,详细记录软件包安装、卸载等信息变化,能够自动分析软件包依赖关系
RPM数据库:/var/lib/rpm目录下的数据库文件
用rpm -qa查询的时候是很快可以查到的,也要定时备份

RPM软件包获取途径:
1.系统光盘
2.http://rpmfind.net

二、RPM 工具

查询已安装的RPM包文件
格式:rpm -q(解释:query)[子选项] [软件名](不是rpm文件名)
用法:结合不同的子选项 完成不同查询
-qa:查看系统中已安装的所有RPM软件包列表
-ql:查询指定软件包所包含的目录、文件列表---------查看软件安装在的目录

[root@111 mnt]# rpm -ql bash
/bin/bash
/bin/sh
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc
/usr/bin/bashbug-64

-qf 文件或目录名: 查看某个目录和文件列表属于哪个

[root@111 mnt]# which lvcreate 
/sbin/lvcreate
[root@111 mnt]# rpm -qf /sbin/lvcreate
lvm2-2.02.143-7.el6.x86_64

-qi:查看指定软件的详细信息
-qc:仅显示指定软件包安装的配置文件
-qd:仅显示指定软件包安装的文档文件

查询未安装的RPM包文件
格式:rpm -qp[子选项] RPM文件名
用法:对于一个RPM包,先去查看安装之后有什么用处,是不是自己想要的作用
[root@111 Packages]# rpm -qpi tree-1.5.3-3.el6.x86_64.rpm
-qpi:通过.rpm包文件查看该软件的详细信息
-qpl:查看.rpm安装包内所包含的目录、文件列表
-qpc:查看.rpm安装包内包含的配置文件列表
-qpd:查看.rpm安装包内包含的文档文件列表

安装、升级RPM软件
格式:rpm [选项] RPM包文件…
用法:不同选项适用于不同情况
-i(install):安装一个新的rpm软件包 -ivh安装时查看详细信息
-v:显示安装过程中的详细信息
-h:以"#"号显示安装进度

-U:升级某个rpm软件,若原本未装,则进行安装
-F:更新某个rpm软件,若原本未装,则放弃安装

卸载指定的RPM软件
格式:rpm -e(erase) 软件名

RPM软件包缺点:
1、安装有依赖关系的多个软件时,被依赖的软件包需要先安装,同时指定多个.rpm包文件进行安装

[root@111 Packages]# rpm -ivh telnet-server-0.17-48.el6.x86_64.rpm
warning: telnet-server-0.17-48.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
	xinetd is needed by telnet-server-1:0.17-48.el6.x86_64---------------前面是被依赖的软件包

[root@111 Packages]# ls xinetd*
xinetd-2.3.14-40.el6.x86_64.rpm
[root@111 Packages]# rpm -ivh xinetd-2.3.14-40.el6.x86_64.rpm telnet-server-0.17-48.el6.x86_64.rpm
warning: xinetd-2.3.14-40.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:xinetd                 ########################################### [ 50%]
   2:telnet-server          ########################################### [100%]

2、卸载有依赖关系的多个软件时,依赖其他程序的软件包需要先卸载,同时指定多个软件名进行卸载

[root@111 Packages]# rpm -e xinetd
error: Failed dependencies:
	xinetd is needed by (installed) telnet-server-1:0.17-48.el6.x86_64

[root@111 Packages]# rpm -e telnet-server xinetd
[root@111 Packages]# rpm -q xinetd
package xinetd is not installed
[root@111 Packages]# rpm -q telnet-server
package telnet-server is not installed

3、安装的环境必须与打包时的环境需求一致或相当
4、需要满足套件的相依属性需求(rpm包、源代码包都会有依赖关系,可能软件a的功能软件b已经实现);

三、YUM工具

一、YUM的定义、优点

YUM:基于rpm但更胜于rpm的软件管理工具,只能安装管理RPM包
解决rpm包多个依赖问题,要手工搭建,也有已经搭建好的YUM源(存放多rpm包)

YUM的优点
1.更方便的管理rpm软件包
2.自动解决rpm包的依赖关系
3.可以配置多个资源仓库

YUM与RPM的区别:YUM适用于所有环境,要搭建YUM源才可以使用,YUM是上层管理工具,而RPM是底层管理工具

二、 YUM的基本工作流程如下:
YUM有服务端和客户端(基本组成)
服务端相当于仓库,存放所有的RPM软件包和每个RPM 软件包的依赖关系(存放在仓库的索引文件里)
客户端有配置文件,配置服务端的IP、仓库的路径。在客户端通过YUM命令进行软件的安装(客户端要去找服务端仓库位置)
当客户端第一次连接服务端时,会下载索引文件(知道有哪些软件包及依赖关系),因此查找有无RPM包和依赖关系直接从索引文件查找

RHEL默认已经安装YUM工具

[root@localhost ~]# rpm -q yum
yum-3.2.29-73.el6.centos.noarch

YUM配置文件:/etc/yum.conf (服务端配置文件)通常无需修改
仓库配置文件目录:/etc/yum.repos.d/ (客户端配置文件)此目录下的文件都是要以repo结尾的才是有效地
YUM的缓存目录:/var/cache/yum(缓存的是索引文件)
YUM的日志文件:/var/log/yum.log(记录了软件的安装、卸载、升级等情况)
创建仓库索引文件的软件包:createrepo.noarch(创建并存放仓库的索引文件)(未安装)

如果服务端和客户端在同一台机器,是本地YUM
缺点:只能为本机提供YUM服务
如果服务端和客户端不在同一台机器,是网络YUM
优点:
1.可以为网络中的所有客户机提供服务
2.基于FTP的YUM源
3.基于HTTP的YUM源

三、本地YUM配置步骤:
最简单本地YUM源搭建:直接挂载系统光盘
RPM包在Packages,索引文件在repodata

  1. 挂载系统光盘(相当于已经配置好的YUM仓库–服务端配置完成)
  2. 客户端修改仓库的配置文件/etc/yum.repos.d/(.repo结尾,LInux刚开始就有的文件是需要联网才能使用的,所以可以新建一个目录放置,不然会影响本地YUM的使用)
    进入/etc/yum.repos.d目录创建sxkj.repo配置文件
    修改sxkj.repo配置文件如下所示:
[sxkeji]                (可以指向多个服务器,表示一个仓库的开始)
name = sxkeji # 源名称         (仓库的描述信息,可以随便填写)   
baseurl = file:///yum/Server      (指定仓库的路径,本地:file://绝对路径  联网:http://或者ftp://绝对路径--表示的是一种协议)   
enabled = 1                (是否启用这个yum源,1为启用)
gpgcheck = 0               (是否使用gpg检测,0为不使用)
解释:使用gpgcheck可以保证软件包的完整合法性,可以再修改配置文件时指定或者直接导入(rpm --import ) 
  1. 本地YUM源测试
    为了避免其他repo文件干扰,保证/etc/yum.repos.d目录下只有一个repo文件
yum clean all   (清空索引文件)
yum list:列出所有RPM包(未安装的没有@或者available packages,已经安装的有@或者installed packages)
 查看/安装/删除/升级rpm包/查看rpm包信息
yum list [package…]
yum install  package…
yum remove  package…
yum update  [package…]
yum info [package…]

三、在本地YUM源中增加自己的软件包
1、复制自己的rpm包到/yum/Server目录中
2、然后使用createrepo命令更新仓库配置文件(需要事先安装好createrepo软件包)
createrepo 目录----创建索引文件
createrepo --update 目录–创建新加入的软件包的依赖关系

四、自己搭建YUM源(不使用光盘)
1、首先创建空目录(也是存放RPM包跟索引文件)

[root@111 ~]# mkdir /yum
[root@111 Packages]# cp telnet-0.17-48.el6.x86_64.rpm  telnet-server-0.17-48.el6.x86_64.rpm /yum (是挂载了系统光盘从光盘复制的)
[root@111 Packages]# cp xinetd-2.3.14-40.el6.x86_64.rpm /yum
[root@111 ~]# ls /yum
telnet-0.17-48.el6.x86_64.rpm  telnet-server-0.17-48.el6.x86_64.rpm  xinetd-2.3.14-40.el6.x86_64.rpm

2、安装createrepo软件包,使用createrepo命令创建索引文件

[root@111 ~]# yum install createrepo(是原先存在的挂载光盘的本地YUM源)
[root@111 ~]# createrepo /yum
Spawning worker 0 with 3 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
3、修改配置文件
[root@111 yum.repos.d]# cat cp.repo
[cp.yum]
name=cp.yum
baseurl=file:///yum
enables=1
gpgcheck=0

4、实验能否自动解决telnet-server的依赖关系

[root@111 yum.repos.d]# yum clean all
[root@111 yum.repos.d]# yum install telnet-server
[root@111 yum.repos.d]# rpm -q telnet-server
telnet-server-0.17-48.el6.x86_64----------------验证成功

猜你喜欢

转载自blog.csdn.net/weixin_44569143/article/details/88828317