软件包管理之前端管理工具yum

一、前言

RPM安装软件有一个很繁琐的问题,那就是包与包之间的依赖关系,如果想正常安装和使用软件程序,就必须根据要求一步一步的解决软件之间的依赖关系。那么如果程序使用的包很多,将会很消耗使用人的时间和精力。那么有没有办法解决这一问题呢?

在RPM中我们介绍了RPM软件会记录软件之间的安装信息,其中也包括了软件之间的依赖属性。那么如果我们在安装前就分析这个列表,那么在安装时就能根据软件之间的关系将所需的软件一次性安装起来,这样就能解决这一问题,这就是 YUM 的机制。

二、yum的介绍

yum(Yellow dog Updater Modified)是CentOS中属于RPM前段软件包管理器,能从指定的服务器中下载RPM包,并自动分析和处理RPM包之间的依赖关系,最后将依次所依赖的软件包都安装了,而无需繁琐的一个一个安装。

三、yum repository:yum仓库

yum仓库的组成部分

3.1、数据

  • 包含所有的软件包文件

3.2、元数据

  • 指的是数据文件:包括每个包的包名、版本信息、各包所包含的文件列表、包与包之间的依赖关系、包的分组信息

小扩展:元数据是怎么来的呢?

使用createrepo工具,能够简洁的快速的将我们所指定的存放大量RPM包的目录,里面所有的RPM包信息都读出来,分析他的依赖关系并生成元数据。所以createrepo可以理解为它是制作yum元数据的工具。 在光盘里其实也有这个元数据,路径在光盘中的 [[email protected] mnt]# cd repodata/ 里,然后是以 sqlite文件后缀 备注:centos5 是以 xml 后缀,centos6、7是以sqlite数据库的方式存储的

四、yum的配置文件介绍

yum的配置文件有2个: 主配置文件 + 仓库配置文件

4.1、主配置文件路径 /etc/yum.conf

[main]    
cachedir=/var/cache/yum/$basearch/$releasever     #下载RPM包的缓存目录
keepcache=0                                       #RPM缓存的程序包安装完成后是否保存,0表示不保存,1表示保存
buglevel=2                                        #调试级别 取值范围 0 - 10,默认值为2    
logfile=/var/log/yum.log                          #yum相关日志存放路径
exactarch=1                                       #是否要平台完全匹配才能安装
obsoletes=1                                       #需不需要检查已过期的仓库
gpgcheck=1                                        #是否检查包的完整性和合法性
plugins=1                                         #是否允许支持yum的插件功能,0 表示不允许 ,1表示允许,建议允许,一般会用yum-fastestmirror这个插件           
installonly_limit=5                               #允许保留多少个内核包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release                       #指定一个软件包,yum 会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包

4.2、仓库配置文件路径 /etc/yum.repos.d/.repo

仓库文件可以有多个,而且一个或几个相关的仓库的配置信息也可保存为一个文件,并且所以的仓库文件名都以 .repo结尾。

[REPOID]             #容器名字,必须是唯一的
name=                #some name for this repository仓库的名字,仅作一个标识
baseurl=             #指定真正仓库所在的路径,可以指多个仓库
                        #例如:baseurl=file:///media/cdrom
                        #      ftp://172.168.1.1/path    #备注第二行不能顶格写,否则会出错
mirrorlist=          #列出容器可以使用站点,如果不想使用,可以再前面加 # 注释
enabled= {0 | 1}     #指是否启用这个仓库,0表示不启用,1表示启用
gpgcheck= {0 | 1}    #是否要检测软件包的合法性,0表示不检测,1表示不检查
gpgkey=              #软件包的公钥文件所在路径,例如:gpgkey=file:///media/cdrom/GPG-RPM-KEY-centos-6
cost=                #仓库优先级,比如一个软件包在多个仓库都有,那应该选择哪个安装呢?就是根据这个优先级,默认是100,数字越小表示越优先使用

备注:默认各仓库的用法:

        base库:通常为系统发行版所提供的程序包(就是光盘)

        updates库:存放更新包

        extra库:存放额外包

        epel库:epel库文件

           库本身有优先级的,但是仅是在客户端有,服务器端是没有优先级的

小贴士:yum可支持多个协议,包括 ftp、http、nfs和本地文件共享服务

所以仓库配置文件中的 baseurl 一项可以有多个写法,下面是各写法的格式

1)ftp

格式:ftp://server/path/to/repository

2)http

格式:http://server/path/to/repository

3)nfs

格式:nft://server/nfs_path

4)本地文件共享服务

格式:file:///path/to/repository

五、yum安装步骤

六、yum命令的使用

6.1、yum查询功能

    yum [option] [需要查询的信息][参数]

        -y:默认yum需要是交互模式,-y表示自动提供yes响应

        -q:静默模式

        search:搜索某个软件名或关键字

        list:列出所有yum所管理的软件包和名称

        info:同上,也类似rpm -qai

        provides:查找该命令是由软件安装生成的,类似rpm -df的功能

        repolist:列出所有可用的repo

例如:

[[email protected] ~]# yum provides bash

[[email protected] ~]# yum repolist

例如:

[[email protected] yum.repos.d]#  yum install zlib-static

6.2、安装、升级、降级、卸载功能

    yum [option] [需要查询的信息][参数]

        install:后面接需要安装的软件

        reinstall:后面接需要重新安装的软件

        update:后面接需要升级到的软件

        check-update:检查可用的升级包

        downgrade:后面接需要降级到的版本

        remove:卸载软件

        erase:功能同上,卸载

        --disablerepo=repoid 临时禁用此处指定的repo

        --enablerepo=repoid 临时启动此处启用的repo

        --noplugins:禁用所有插件

例如:

[[email protected] yum.repos.d]#  yum install zlib-static

6.3、和软件组相关的功能

    yum [组功能] [软件组]

        grouplist:列出所有可使用的组列表

        groupinfo:后面接group name,可用了解该group内含所有组的名称

        groupinstall:安装整组的软件

        groupremove:删除某个组的软件

例如:

[[email protected] yum.repos.d]# yum grouplist
#所有的包组未一一列举,若想安装某组可使用groupinstall直接安装
Installed Groups:            #已经安装的软件组
   Additional Development
   Base
   Console internet tools
   Development tools
Installed Language Groups:   #已经安装的语言组
   Arabic Support [ar]
   Armenian Support [hy]
   Georgian Support [ka]
Available Groups:            #有效软件组包文件
   Backup Client    
   Backup Server
Available Language Groups:   #有效的语言组包文件
   Afrikaans Support [af]
   Albanian Support [sq]

6.4、清理缓存

    yum clean { all | package | headers }

        all:将所有的数据删除,包括元数据和软件文件

        package:将所有已下载的软件文件删除

        headers:删除所有下载的元数据文件

例如:

[[email protected] yum.repos.d]# yum clean all  #这样将会清除所有的已下载的元数据和软件文件
Loaded plugins: fastestmirror, security
Cleaning repos: base extras updates
Cleaning up Everything
Cleaning up list of fastest mirrors

6.5、yum历史命令

yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo]

    history:列出历史事务

    redo:重新执行事务

    undo:撤销事务

例如:

yum history info 15     //查看yum history  id为15 的 操作

yum history undo 15     //撤销yum history  id为15 的 操作

日志文件:/var/log/yum.log

6.6、yum内置变量

$releaserver:代表系统的版本,对Yum而言指的是redhat-releaser版本,指向发行版的主版本号;只替换为主版本号,如RedHat 6.5 ,则替换为6

$basearch:系统基本架构,如果是i686,i586等基本架构就为i386

$arch:系统架构

比如我现在的系统是CentOS6.5,系统架构是x86_64,则

baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/会自动替换为

baseurl=http://mirrors.163.com/centos/6/os/x86_64

六、如何自建yum仓库

6.1、引言:

虽然系统自带的仓库已经很常用,只要连接到互联网我们就能很容易有获取到互联网的yum仓库。但是如果是在企业内网,企业内部不允许访问互联网,又或者如果企业服务器众多,如果都要从互联网去获取yum仓库,那将很占用带宽。基于这种情况,我们就需要自己在企业内部创建yum仓库。

6.2、自建仓库需要使用的命令介绍

createrepo(create repo):创建仓库,在自建仓库时,使用命令createrepo会自动帮我们生成repodata文件作为软件的仓库,而其目录下有四个必要文件:filelists.xml.gz,other.xml.gz,primary.xml.gz和repomd.xml,其中最重要的是repomd.xml文件。一般出现的找不到repodata目录或文件的错误的原因通常有三个:一是路径问题;二是没有生成repodate目录;三是*.repo配置文件冲突(这个需要特意注意)。

小贴士:createrepo命令默认是没有安装,所以我们需要提前安装,createrepo的安装包为“createrepo-0.9.9-17.el6.noarch.rpm”,可以使用RPM或yum先将此程序包安装。

安装方法:

#yum -y install createrepo 或 rpm -ivh createrepo-0.9.9-17.el6.noarch.rpm (路径一定要写对)

6.3、自建yum仓库有2种方法

  • 1)、基于关盘镜像创建yum仓库
  • 2)、根据服务自建提供yum仓库的服务器(ftp、http、nfs)

6.4、基于关盘镜像创建yum仓库

6.4.1、先将光盘挂载至/mnt目录下

      mount /dev/cdrom /mnt

6.4.2、配置yum仓库文件

[[email protected] yum.repos.d]# vim /etc/yum.repos.d/local-media.repo  #如果local-media.repo不存在,请直接创建
[Meida-repo]
name=This is Local media repo
baseurl=           #指向光盘镜像路径
enabled=1                     #是否启动该仓库
gpgcheck=0                    #是否检查包完整性
[[email protected] yum.repos.d]# yum clean all   #清除所有的包缓存和元数据
[[email protected] yum.repos.d]# yum list        #列出所有的仓库和程序包

6.5、根据服务自建提供yum仓库的服务器(这里以http服务为例)

6.5.1、首先安装http服务

     yum -y install httpd 或 rpm -ivh httpd

6.5.2、关闭Linux防火墙和Selinux

#防火墙和Selinux可能会影响用户访问HTTP,所以这里需要将其禁用

[[email protected] yum.repos.d]# service iptables stop    #关闭防火墙服务
[[email protected] ~]# chkconfig iptables off       #关闭防火墙自动启动
[[email protected] yum.repos.d]# getenforce               #查看Selinux状态 Enforcing表示启用 Permissive表示不启用
Enforcing
[[email protected] yum.repos.d]# setenforce 0             #关闭Selinux  0表示关闭 1表示开启
[[email protected] yum.repos.d]# getenforce               
Permissive                                
[[email protected] ~]# vim /etc/selinux/config     #关闭Selinux开机启动,编辑confg文件,将其中SELINUX字段改为如下设置    
        SELINUX=disabled

6.5.3、启动httpd服务和开机自动服务

[[email protected] yum.repos.d]# service httpd start   #开启httpd服务
[[email protected] yum.repos.d]# chkconfig on          #设置httpd服务开机自动启动
[[email protected] ~]# netstat -tunlp | grep http  #查看http服务是否已启用
tcp        0      0 :::80                       :::*                        LISTEN      1532/httpd

6.5.4、编辑httpd的文档目录

#httpd默认的目录文档路径为/var/www/html

[[email protected] html]# mkdir /var/www/html/rpm-repo   #创建仓库路径

[[email protected] rpm-repo]# cp -a /mnt/Packages/xcb* /var/www/html/rpm-repo/   #拷贝RPM程序包为测试使用

6.5.5、使用createrepo配置yum仓库

[[email protected] rpm-repo]# createrepo /var/www/html/rpm-repo/

6.5.6、验证和查看http仓库的文件

6.5.7、配置和验证yum仓库

[[email protected] yum.repos.d]# vim /etc/yum.repos.d/local.repo  #编辑yum仓库文件,让仓库路径指向http的yum仓库
[http-repo]
name=http yum repo
baseurl=http://192.168.80.150/rpm-repo
enabled=1
gpgcheck=0
[[email protected] ~]# yum list

时间: 2024-08-08 04:43:20

软件包管理之前端管理工具yum的相关文章

linux软件包管理——rpm包管理

软件运行环境API:Application Programming Interface 应用程序接口(应用程序和操作系统之间的接口) 凡是符合该api标准的应用程序都可以在支持该api的操作系统上编译通过 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接  静态编译:自身包含所有需要调用的库文件  动态编译:自身不包含,需要时调用共享库文件(.so文件)ABI:Application Binary Interface 应用程序二进制接口 规定了二进制文件的格式.

程序包管理的前端工具yum、程序包管理器编译安装、sed命令

下面介绍的是程序包管理的前端工具yum.程序包管理器编译安装.sed命令. 一.Linux程序包管理:程序包管理的[前端工具] 1.yum软件包仓库简介 CentOS系的管理工具有yum和dnf.yum是一款发行版的Linux,其使用的默认程序包管理工具为rpm. URL是yum定位软件包仓库和仓库中程序文件的主要标识方式,表示如下: 例如:schema://[[email protected]]hostname/PATH/TO/DOCUMENT[paramers][methord] (例子中的

2018-3-14Linux系统管理(12) Linux程序包管理(2)yum前端管理工具

我们在之前的章节中讲到了Linux的程序包管理的基础与实现,后面也讲述了RPM包的管理命令实现了管理包的功能,主要用的是rpm命令,那么rpm实现程序管理总结如下:    rpm命令实现程序管理:       安装:-ivh, --nodeps, --replacepkgs       卸载:-e, --nodeps, --replacepkgs       升级:-Uvh, -Fvh, --nodeps, --oldpackage       查询:-q, -qa, -qf, -qi, -qd

yum前端管理工具详解

1. yum概述 之前在上一篇文章里提到的rpm包管理器虽然在数据库中为用户指定了程序包之间的依赖关系,但用户仍需根据程序包的依赖关系去手动使用rpm命令来安装每个程序包,过程略为繁琐.而yum作为前端管理工具则为用户解决这一问题. yum的全称为:Yellow dog Updater, Modifier,是通过修改Yellow Dog Linux的Yellow Dog Updater开发而成. yum是基于rpm包管理器的前端程序包管理器,可以从指定服务器上自动下载程序包,并自动分析程序包的元

软件包管理 1 -----基本知识 rpm yum

软件包管理,要做到如何管理软件 ,包括安装 ,卸载, 基本的功能查询,搜索等重点如何使用rpm包yum管理如何编译安装软件 运行和编译 ABI:Application Binary Interface 操作系统接口标准,调用2进制程序的接口Windows 与Linux不兼容ELF(Executable and Linkable Format)PE (Portable Executable)库级别的虚拟化Linux:WINEWindows:CygwinAPI:Application Program

linux基础--包管理工具yum详解

rpm常用命令 安装 -ivh:安装rpm包 --nodeps:忽略依赖关系强制安装 --replacepkg:无论软件包是否已被安装,都强行安装软件包 卸载 -e:卸载rpm包 --nodeps:忽略依赖关系强制卸载 升级 -Uvh:升级软件包--Update -Fvh:只有安装在系统上的包才会升级 --nodeps:忽略依赖关系升级 查询 -q:查看安装包名称 -qa:查看是否安装指定rpm包 -qf:查找指定文件属于哪个RPM软件包 -qi:查看安装包的详细信息 -qc:查看安装包的配置文

centos系统上的二进制格式软件包的安装及管理(rpm和yum)

linux系统管理员在管理操作系统时,管理操作系统上的软件几乎是系统管理员必备的功能.在早期debain发行版中,debain的开发人员为开发了一款名叫dpkg的软件包管理器.后来redhat的开发人员仿照dpkg开发了一个和dpkg功能类似,但功能比其更强大的一款名叫rpm(RPM is Package Manager)的软件包管理器.目前rpm软件包管理器已经是linux界软件包管理器的工业标准.由于linux中的大多数功能复杂的软件都是由众多功能单一软件组合起来实现的.因此,当我们用rpm

Linux的程序包管理器(中)——yum命令从未如此详细过

与rpm包管理器相比,yum包管理器恐怕更受用户的青睐,其很大的原因在于这款包管理器能自动解决rpm包之间的相互依赖关系.本文就CentOS 6.6为例,尽可能详细的给读者朋友们讲解yum包管理器的用法. yum(Yellowdog Updater Modified的缩写)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,用户无须繁琐地一次次下载.安装.

大数据学习之_01_Linux学习_02_组管理和权限管理+定时任务调度+linux磁盘分区、挂载+linux的网络配置+进程管理(重点)+软件包管理+大厂面试题+感悟分享+资料附录

10 组管理和权限管理10.1 Linux组的基本介绍10.2 文件/目录的所有者10.3 文件/目录的所在组10.4 权限的基本介绍10.5 rwx权限详解10.6 修改权限指令-chmod10.7 修改文件所有者-chown10.8 修改文件所在组-chgrp10.9 最佳实践-警察和土匪游戏11 定时任务调度11.1 crond任务调度12 linux磁盘分区.挂载12.1 分区的基本知识12.2 Linux分区12.3 挂载的经典案例12.4 查询系统整体磁盘使用情况12.5 查询指定目