linux yum及yum仓库

1. yum的由来

为了解决程序间的依赖关系,RedHat曾推出了一款名为update的工具。这款工具虽然达到了目的,但用户体验并不是很好。后来一个基于RedHat的二次发行版yellowdog,由此也推出了一个工具:yellowdog update modifier,简写为yum. 由于比update好用,于是便流行开来。后来导致RedHat也弃update不用而使用yum

2. yum的特性

yum相对于rpm来说:rpm为基础包管理器,yum则是rpm的前端工具。yum无法独立存在

系统不允许有两个yum命令同时运行,如果有两个,第二次运行时会报错。这是为了防止yum之间的冲突

3. yum的工作方式

yum工作需要依赖C/S架构工作模式的文件服务器,服务器中存放了yum工作时所需的程序包。yum接收到需要安装的程序包的名称之后,通过文件共享协议(或者文件传输协议),在配置文件中指向的yum仓库(可以是多个)中查询需要的程序包。找到之后,通过文件下载协议,将程序包下载至本地yum的缓存目录中,当安装完成后,缓存目录便会被删除

但如果yum每次到yum仓库都需要遍历,就会导致速度很慢。而yum仓库中有两类数据:程序和程序的元数据。yum仓库在创建时,会将所有程序的名字、大小、版本以及依赖关系这类的属性信息提取出来并保存至repodata目录中。所以在yum第一次访问yum仓库时,会获取仓库中元数据(repodata),并下载至本地。因此,下次需要安装程序包时,只需从本地缓存中获得信息,直接到仓库下载即可

如何保持本地缓存repodata和服务器端的repodata实时同步呢?yum每次访问仓库都会先获取repodata目录中每个文件的特征码,并与本地的进行比较,如果不相同,就重新下载并覆盖

4. yum的配置文件

指向仓库的位置以及相关的各种配置信息。每个yum命令行可以同时指向多个仓库,仓库间可以进行优先级等相关配置,优先级是由开销决定的

配置文件有两部分组成:主配置文件以及各仓库的配置文件。因为如果所有的配置信息都放在一个文件中就显得太臃肿、不方便。其中主配置文件所在路径为/etc/yum.conf,它为各仓库指向提供公共配置文件;而各仓库的配置文件所在路径为:/etc/yum.repos.d/*.repo,里面都是以赋值的格式存在

  • 主配置文件
[root ~]# cat /etc/yum.conf    # 查看主配置文件
[main]   # 所有仓库公共的配置
cachedir=/var/cache/yum/$basearch[p1] /$releasever    # 缓存目录
keepcache=0    # 程序包在安装完成后不再保存至缓存中
debuglevel=2    # 程序安装时的输出信息,数字越大输出信息越多。生产环境中关闭最好,但是开启可以让我们快速定位安装中出现问题的所在
logfile=/var/log/yum.log    # 日志文件
exactarch=1    # 安装程序的版本和当前平台保持一致
obsoletes=1    # 检查包已被废弃
gpgcheck=1    # 检查来源合法性和包完整性,还应该有个gpgkey,用于指明仓库的公钥文件从哪获取,但这是公共配置,而配置仓库都不相同,所以不放在这里
plugins=1   # 支持插件
installonly_limit=5    # 一次安装的程序包限制5个
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?  category=yum    # bug追踪的路径
distroverpkg=centos-release    # 判定当前系统的信息
 
# This is the default, if you make this bigger yum won‘t see if themetadata
# is newer on the remote and so you‘ll"gain" the bandwidth of not having to
# download the new metadata and"pay" for it by yum not having correct
# information.
#  Itis esp. important, to have correct metadata, for distributions like
# Fedora which don‘t keep old packagesaround. If you don‘t like this checking
# interupting your command line usage, it‘smuch better to have something
# manually check the metadata once an hour(yum-updatesd will do this).
# metadata_expire=90m
 
# PUT YOUR REPOS HERE OR IN separate filesnamed file.repo
# in /etc/yum.repos.d    # 可以往下附加配置信息,也可以放在各配置文件中
# 可通过man yum.conf进行详细查看
  • 各配置文件
[root ~]# cat/etc/yum.repos.d/CentOS-Media.repo    # 随便打开一个仓库的配置文件
[c6-media]    # id,最好能够见名知意,并且必须唯一
name=CentOS-$releasever - Media    # 当前仓库的描述信息
#mirrorlist=    # 可以将所有的镜像站点url写入一个文件,然后指向这个文件,然后会挑一个速度最快的来使用。一般不和baseurl一起使用
baseurl=ftp://    # 指向仓库的路径,指向多个备用
       http://    # 备用的路径不能顶格写,至少需要有1个空格
       file:///media/cdrecorder/
gpgcheck=1    # 此处定义的优先级更高,需要和gpgkey配合
enabled=0   # 此仓库不被使用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6   
cost=    # 优先级,数字越小表示开销小,优先级越高。默认1000
[media]    # 第二个仓库

5. yum命令

  • -y:自动回答为yes
  • list:列出所有仓库中的程序包,支持通配符
    • all:所有程序包
    • available:可用的,仓库中有尚未安装的
    • installed:已经安装的
  • clean:清理缓存。yum缓存路径:/var/cache/yum/
    • yum clean all:清除所有缓存信息,但不会清除目录
  • repolist:显示仓库列表及其简要信息
    • all:所有的仓库
    • enabled:已经启用的仓库
    • disabled:未启用的仓库
  • install:安装
    • yum install [-y] PACKAGE_NAME
  • remove|erase:卸载。和此程序包有依赖性的其他包也会被一并卸载
  • infoPACKAGE ... :查询程序的相关简要信息。这个包装不装都没有关系,只要仓库中有就行
  • grouplist:列出所有包组
  • groupinstall:安装包组
    • 可直接用install、remove或update来管理包组,在包组前面加@用以区分:yuminstall @"Server Platform Development"

6. 配置基于centos发行光盘rpm包的yum仓库

  • 安装createrepo命令
[root Packages]# yum install -y createrepo
  • 挂载镜像光盘,上一篇博客中有提到怎么加载并挂载镜像
[root Packages]# mount -r /dev/cdrom /mnt/
  • 使用creatrepo命令创建存放程序包元数据的repodata目录。因此,创建的时指向的路径必须是存放rpm包的路径
[root Packages]# mkdir /var/repo
# 新建目录进行rpm包存放
[root Packages]# cd /var/repo  
[root repo]# cp /mnt/Packages/* .
# 文件很多,需要等会
[root repo]# createrepo /var/repo/
Spawning worker 0 with 4184 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
# 恩,总算创建好了,等的时间够长
[root repo]# cd repodata/
[root repodata]# ls
318f1b79bc13b0daf243cdf4fad87af1e49fef06920b74f135e3d6d9af3a3abf-primary.sqlite.bz2
5015d87cfb7d1484fc9949b398c5d2d4916cb5c257939be34d0b9595e3bd734d-filelists.xml.gz
62d8a6fade0ecb892b8a58601665a77c95f5c278d57927274f9d3afef8378119-filelists.sqlite.bz2
75d262ab21744dd239762ac72543a4ebe74c7b7bd333dd7a96ff0a4636814144-primary.xml.gz
81cdd7de2b2e08780255e5c7e711f0499fc0f2e01e322e4f05b03f61434ea2f7-other.sqlite.bz2
fad987423b71003dbf3661f6bc4f51f50584c4fb0881b6506ccf7baf99c7aa1d-other.xml.gz
repomd.xml
# 这些就是元数据信息了
[root repodata]# cd /etc/yum.repos.d/
[root yum.repos.d]# vim centos6.6.repo
# 新建配置文件,必须以repo结尾!或者就用里面现成的也行
[test2]
name=fuck me
baseurl=file:///var/repo
enabled=1
gpgcheck=0
# 上面讲到了,这里就不重复了,保存退出!
[root yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
test2                                                                                 | 2.9 kB     00:00 ... 
repo id                                            repo name                                           status
test                                               epel                                                4,184
test1                                              epel                                                   41
test2                                              fuck me                                             4,184
repolist: 8,409
# 成功显示
  • 到此,本地yum仓库配置完毕!但可以将其作为FTP服务器给其他用户提供服务
[root yum.repos.d]# yum install -y vsftpd
# 下载FTP服务
[root yum.repos.d]# service vsftpd start
# 启动服务
[root yum.repos.d]# cd /var/ftp/pub/
# 这是FTP默认目录,启动服务后自动创建
[root pub]# mv /var/repo .
[root pub]# ls
repo
[root pub]# vim /etc/yum.repos.d/centos6.6.repo
baseurl=ftp://172.16.249.135/pub/repo/ 
# 就改这一项,必须指向repodata所在的路径
[root pub]# service iptables stop
# 关闭防火墙
# 可以在浏览器下ftp://172.16.249.135/pub/repo/查看了
  • 配置完毕,这个可以说是最傻瓜式的ftp配置了,因为这里只是讲yum。另外还可以将其做成http服务器,方法基本一样

END

时间: 2024-10-01 07:08:44

linux yum及yum仓库的相关文章

linux学习笔记——yum安装软件、搭建仓库、rpm命令

#############如何安装软件####################yum    #全称Yellow dog Updater Moddified,能够从指定的服务器自动下载RPM包并安装 yum     list    all        ##列出所有安装包yum     list    installed    ##列出已经安装的yum    list    available    ##列出没有安装的yum     remove    package        ##卸载软件(

Linux学习—部署yum网络仓库

yum除了可以配置本地仓库外,还可以配置服务器网络仓库,这时需要先配置服务器并上传文件 步骤如下: 1.安装 vsftpd 为了完成服务器与客户端的文件传输,需要使用FTP协议,在Linux下使用vsftpd软件(Very Secure FTP Daemon)完成部署FTP服务器 使用rpm命令安装vsftpd: ① rpm -ivh vsftpd-2.2.2-24.el6.x86_64.rpm 2.启动vsftpd服务及设置重启后自动启动 使用命令netstat查看vsftpd的监听状态为关闭

Linux CentOS7 VMware 安装软件包的三种方法、rpm包介绍、rpm工具用法、yum工具用法、yum搭建本地仓库

一.安装软件包的三种方法 Linux下游三种安装方法,rpm工具.yum工具.源码包.rpm按装一个程序包时,有可能因为该程序包依赖另一个程序包而无法安装:yum工具,可以连同依赖的程序包一起安装. 二.rpm包介绍 rpm包是预先在Linux上编译并打包的文件,安装快捷. 缺点:安装环境必须预编译环境一致或相当:当宝与包之间存在着相互依赖,则卸载时必须先把依赖包卸载. 如果依赖的包是系统必须的,就不能卸载这个包,否则系统会崩溃. 如果虚拟机光驱中还有系统安装盘镜像,就可以通过执行命令把光驱挂载

Linux创建私有yum源仓库

创建yum私有库 简述 ? 在Linux系统中安装软件的方法有三种,分别是rpm软件包安装.yum源安装与源代码编译安装,在用rpm软件包安装软件时会经常出现依赖性问题,导致安装繁琐,用源代码编译安装就更不用说了,相信很多小伙伴也都感受过源代码编译安装的各种花样报错,导致精神崩溃,因此我们在Linux操作系统中安装软件的首先方法就是利用yum源安装软件. ? yum是一个基于rpm的软件包管理器,它包含一些命令:查找.安装.删除----软件包.使用yum安装软件包它可以自动查找软件包,包括软件安

Linux系统部署YUM远程仓库及NFS共享服务

YUM概述 YUM 基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件包由集中的YUM软件仓库提供 软件仓库的提供方式 FTP服务:ftp://... HTTP服务:http://... 本地目录:file://... RPM软件包的来源 CentOS发布的RPM包集合 第三方组织发布的RPM包集合 用户自定义的RPM包集合 构建CentOS 7软件仓库 RPM包来自CentOS 7光盘 通过FTP.HTTP或本地目录提供给客户机 FTP服务名称:vsftpd FTP站点:/var/

linux应用之yum命令

yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装.yum提供了查找.安装.删除某一个.一组甚至全部软件包的命令,而且命令简洁而又好记. yum的命令形式一般是如下:yum [options] [command] [package ...]其中的[opti

程序包前端管理工具yum,及仓库配置

        简单分析yum的用法. 1:yum 是什么? 英文全称为 yellow dog update modify. 直译过来肯定是不对的.大体的意思为程序包管理. 2:yum有什么用? yum 的用处可就大了. 是一种能帮助我们管理程序包的工具.正是因为这个工具,让我们安装,卸载程序包时,只要执行一个命令,就能搞掂.背后的复杂操作,如安装时的依赖关系,查询时文件的路径在哪里,卸载时文件的路径又在哪里,等等这些复杂繁琐的操作都经我们隐藏了. 就像上帝说,让人间有阳光,于是就有了阳光一样.

linux配置本地yum源

1.yum是什么,它是如何工作的 yum是为了解决rpm包安装难以解决依赖关系而出现的rmp前端管理包,注意:它不能取代rpm. 他的工作机制是可以自动解决程序包的依赖关系,这是我们需要他的最核心的功能.那他是如何工作的呢? 首先得有一个或多个文件服务器,来存放大量的rpm包,这文件服务器可以是,http.ftp.file等,这个文件服务器也可以叫yum的后端支持,也叫仓库(repository),yum如果要使用这些个仓库就的先去获取这个仓库的缓存信息,缓存至本地,这些缓存信息包括各rpm包的

Linux神奇的yum

到底什么是yum?yum的功能与作用?为什么我们在有了rpm之后,还会出现yum这个软件安装工具呢?不知各位有没有思考过,哪怕仅仅几秒. 一:yum简介: yum,是Yellow dog Updater,Modified的简称,起初是由yello dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow dog updater),后经杜克大学的[email protected]开发团队进行改进,遂有此名. yum的宗旨是自动化地升级,安装/移除rpm包