专有云之组件yum源

前言

巴拉巴拉

 

1. RPM

1.1 什么是RPM

RPM早期被称为RedHat Package Manager,但由于目前RPM非常流行,且已经成为Linux工业标准。所以RPM现在又被称为RPM is Package Manager。

RPM管理支持事务机制,增强了程序安装卸载的管理,其主要包括打包、安装、查询、升级、卸载、校验、数据库管理。更直白的讲RPM是一种软件安装包的规范和格式定义。

linux的软件包安装与windows有所不同,windows下所有的二进制文件、配置文件、库文件、说明文档等都在一个文件夹下;linux对同一软件包不同类型的文件则安装在不同目录(如二进制程序在 /bin、 /sbin、 /usr/bin、 /usr/sbin、 /usr/local/bin、  /usr/local/sbin 等目录,配置文件在/etc目录,库文件在/lib、/usr/lib、 /usr/local/lib等目录、说明文档在/usr/share/doc目录  )。所以在linux进行软件包的安装与卸载等管理会十分复杂,RPM就是为了解决此问题出现的。

1.2 RPM包的格式

源程序的命名规范name-version.tar.{gz|bz2|xz},例如bash-4.3.1.tar.xz

RPM包的命名规范name-version-release.os.arch.rpm,例如bash-4.3.2-5.el6.x86_64.rpm

  • name:程序名称。
  • version:程序版本号。
  • release(发行号):用于标识RPM包本身的发行号,与源程序的release号无关。
  • os:即说明RPM包支持的操作系统版本。如el6(即rhel6)、centos6、suse11。
  • arch:主机平台。如i686、x86_64、amd64、ppc(power-pc)、noarch(即不依赖平台)

 

2. YUM

2.1 什么是yum源

yum,是Yellow dog Updater, Modified 的简称,是一种rpm软件包管理器。使用yum进行rpm包管理,可以自动的解决包之间的依赖关系(RPM无法解决软件包的依赖关系)。

linux系统基本上分两大类: 
1.RedHat系列:Redhat、Centos、Fedora等,使用yum源进行rpm包管理
2.Debian系列:Debian、Ubuntu等,使用dpkg进行apt包管理

https://mirrors.aliyun.com/centos/

2.2 yum源CS工作模式

服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。 
客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

2.3 client端相关配置

client端的YUM配置方式是基于分段配置的,主配置文件位于/etc/yum.conf, 片段配置在/etc/yum.repos.d/目录下(所有以.repo结尾的配置文件), 两个配置文件的大致如下

主配置文件配置了一个特殊的仓库,名称为main。main是为其他仓库提供默认的全局配置的。主配置文件中提供的配置项如下所示

[main]部份是yum的全局配置项,
cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,默认是/var/cache/yum。
keepcache:是否保持yum缓存,默认0。
debuglevel:除错级别,0-10,默认2。
logfile:yum的日志文件,默认是/var/log/yum.log。
exactarch:1或0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
gpgchkeck: 1或0,代表是否进行gpg校验
plugins:是否允许使用插件,默认是0不允许。
exclude:排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
installonly_limit:允许保留多少个内核包。
distroverpkg:指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
pkgpolicy:包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。
retries:网络连接发生错误后的重试次数,如果设为0,则会无限重试。
tolerent:也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。

分析/etc/yum.repos.d/*.repo文件,下载阿里云的yum配置文件大致分析如下

#wget -O CentOS-Base-aliyun.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#cat CentOS-Base-aliyun.repo

[base]
name=CentOS-$releasever - Base - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

......

yum源有一些自己的内置变量,$xxxx代表yum源的内置变量,定义的内置变量有:

  • $releasever:当前操作系统的主版本号。若CentOS6.4 该值为6。
  • $basearch:当前平台的基本架构。x86_64 或 i386。
  • $arch:当前平台版本架构。x86_64 或 i386/i586/i686。

2.3 server搭建

网上有很多可用的yum源,在可联网的机器上直接配置即可,方法如下

#安装wget
yum install -y wget
#备份/etc/yum.repos.d/CentOS-Base.repo文件
cd /etc/yum.repos.d/ && mv CentOS-Base.repo CentOS-Base.repo.back
#下载阿里云的Centos-6.repo文件
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#重新加载yum
yum clean all && yum makecache

如果本机无法联网,则可以通过本地挂载镜像的方式配置一个yum源server

#从CentOS的官网下载CentOS的完整版iso文件,并上传到Linux文件系统中,例如/opt/xxx.iso
地址 http://isoredirect.centos.org/centos/6/isos/x86_64/

#创建挂载目录并挂载镜像
mkdir /mnt/yum_iso_mount && mount -o loop -t iso9660 /opt/xxx.iso /mnt/yum_iso_mount

#移除或备份Centos-Base.repo文件
cd /etc/yum.repos.d/ && mv Centos-Base.repo Centos-Base.repo.back

#编辑Centos-Media.repo文件
vim /etc/yum.repos.d/Centos-Media.repo
name=CentOS-$releasever - Media
baseurl=file:///mnt/yum_iso_mount/ #重点 将baseurl修改为DVD的挂载目录
gpgcheck=1
enabled=1#开启本地更新模式

# 重新加载yum
yum clean all && yum makecache

3. 常用命令

#查找软件包命令
yum search <keyword>
rpm -qa | grep xxx //已安装的软件包

#列出所有可更新的软件清单命令:
yum check-update

#更新所有软件命令
yum update

#仅安装指定的软件命令
yum install <package_name>
rpm -ivh <package_name> //指定文件安装

yum download <package_name>

#仅更新指定的软件命令
yum update <package_name>

#列出所有可安裝的软件清单命令
yum list

#删除软件包命令
yum remove <package_name>
rpm -e <package_name> //建议,如果此包被其它包依赖,则无法删除,需要加参数强制删除

重建yum repo: 
清除缓存命令:
yum clean all //等于yum clean packages; yum clean oldheaders; yum clean headers
yum clean packages //清除缓存目录下的软件包
yum clean headers //清除缓存目录下的 headers
yum clean oldheaders //清除缓存目录下旧的 headers

rpm 数据库重建(有时候机器rpm db会损坏,导致rpm命令无法使用,此时需要重建rpm db)
cd /var/lib/rpm
rm -rf __db*
rpm --rebuilddb

参考资料

https://www.cnblogs.com/shijiaqi1066/p/3843955.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值