Yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器。起初是由yellow dog 这一发行版的开发者Terra Soft 研发,用python 写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke 开发团队进行改进,遂有此名。yum 的宗旨是自动化地升级,安装/移除rpm 包,收集rpm 包的相关信息,检查依赖性并自动提示用户解决。yum 的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http 或ftp 站点,也可以是本地软件池,但必须包含rpm 的header,header 包括了rpm 包的各种信息,包括描述,功能,提供的文件,依赖性等。正是收集了这些 header 并加以分析,才能自动化地完成余下的任务。
yum 的理念是使用一个中心仓库(repository)
管理一部分甚至一个distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了Linux 用户一直头痛的dependencies 的问题。这一点上,yum 和apt 相同。apt 原为debian 的deb 类型软件管理所使用,但是现在也能用到RedHat 门下的rpm 了。
yum 主要功能是更方便的添加/删除/更新RPM 包,自动解决包的倚赖性问题,便于管理大量系统的更新问题。
yum 可以同时配置多个资源库(Repository),简洁的配置文件(/etc/yum.conf),自动解决增加或删除rpm 包时遇到的依赖性问题,保持与RPM 数据库的一致性。
UM仓库服务
--------------YUM服务器------------------client------------------
192.168.10.1 192.168.10.10
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-enc0
[root@localhost ~]# systemctl restart network
yum 源一般存放在 /etc/yum.repos.d/ 目录中,文件已 .repo 结尾。
Yum 源镜像中心提供了 centosplus, cloud, extras, fasttrack, os, updates 等软件库,最好认的软件库就是 os (系统默认的软件) 与 updates (软件升级版本) 啰!最重要的文件就是那个 “repodata” 的目录!该目录就是分析 RPM 软件后所产生的软件属性相依数据放置处!因此,当你要找软件库所在网址时, 最重要的就是该网址底下一定要有个名为 repodata 的目录存在!那就是软件库的网址了!
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
retries=1
[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=http://download.atrpms.net/mirrors/fedoracore/$releasever/$basearch/os
http://rpmfind.net/linux/fedora/cor...er/$basearch/os
http://mirror.clarkson.edu/pub/dist...er/$basearch/os
[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch
http://redhat.linux.ee/pub/fedora/l...sever/$basearch
http://fr2.rpmfind.net/linux/fedora...sever/$basearch
... 中间省略 ...
[freshrpms]
name=FreshRPMs
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms/
http://ftp.us2.freshrpms.net/linux/...arch/freshrpms/
[main]
cachedir yum 缓存的目录,存储下载的 rpm 包和数据库,一般是 /var/cache/yum
debuglevel 除错级别,0-10,默认是2
logfile yum 的日志文件,默认是/var/log/yum.log
pkgpolicy 选择安装软件包的策略。一共有两个选项,newest和last(如果你设置了多个 repository,同一软件在不同的 repository 中同时存在。yum 应该安装哪一个,如果是 newest,则 yum 会安装最新的那个版本。如果是 last,则 yum 会将服务器 id 以字母表排序,并选择最后的那个服务器上的软件安装。默认为 newest
distroverpkg 指定一个软件包,yum 会根据这个包判断你的发行版本,默认是 redhat-release,也可以是安装的任何针对自己发行版的 rpm 包
exactarch 有两个选项1和0(1代表只升级和你安装软件包 cpu 体系一致的包,例如:你安装了一个i386的 rpm,则 yum 不会用1686的包来升级这个包)
retries 网络连接发生错误后的重试次数(如果设为0,则会无限重试)
tolerent 有1和0两个选项,表示 yum 是否提示与软件包有关的错误,(1代表 yum 不会提示错误信息,默认是0)
除了上述之外,还有一些可以添加的选项,如
exclude=, 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像也是检查的。
第二部分(个性化配置)
配置 repository 服务器了,这是最令人激动的。有了好的 repository,就如家门口开了大卖场,要什么东西稍微跑跑腿就行,对了这还是个免费的大卖场。所有服务器设置都应该遵循如下格式:
文件中各参数的含义分别为:
[base]: 代表软件库的名字!中括号一定要存在,里面的名称则可以随意取。但是不能有两个相同的软件库名称, 否则 yum 会不晓得该到哪里去找软件库相关软件列表档案。
name 只是说明一下这个软件库的意义而已,重要性不高!
mirrorlist= 列出这个软件库可以使用的映射站台,如果不想使用,可以注释掉这行;
baseurl= 这个最重要,因为后面接的就是软件库的实际网址! mirrorlist 是由 yum 程序自行去捉映像站台, baseurl 则是指定固定的一个软件库网址!我们刚刚找到的网址放到这里来啦!
enable=1 就是让这个软件库被启动。如果不想启动可以使用 enable=0 喔!
gpgcheck=1 还记得 RPM 的数字签名吗?这就是指定是否需要查阅 RPM 档案内的数字签名!
gpgkey= 就是数字签名的公钥文件所在位置!使用默认值即可
几个变量
$releasever 发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch cpu体系,如i686,athlon等
$basearch cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。
在Linux里面依次输入下面的命令:
http://yum.baseurl.org/
wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
tar xvf yum-3.2.28.tar.gz
cd yum-3.2.28/
./yummain.py install yum
如果结果提示错误: CRITICAL:yum.cli:Config Error: Error accessing file for config file:///etc/
可能是原来是缺少配置文件。在 etc 目录下面新建 yum.conf 文件,然后再次运行 yummain.py install yum,顺利完成安装。
# 最后更新系统。
yum check-update
yum update
yum clean all
[root@localhost ~]# umount /dev/sr0
[root@localhost ~]# mount /dev/sr0 /media/
[root@localhost ~]# rm -f /etc/yum.repos.d/*
[root@localhost ~]# vim /etc/yum.repos.d/local.repo
修改:
[haha]
baseurl=file:///media
enabled=1 #启用yum软件仓库
gpgcheck=0 #取消gpg校验,一种密钥方式签名(默认检查)
测试:
[root@localhost ~]# yum -y install dhcp
yum源服务器配置:
[root@localhost ~]# cd /media/Packages/
[root@localhost ~]# rpm -ivh vsftpd-3.0.2-10.el7.x86_64.rpm
[root@localhost ~]# systemctl restart vsftpd (关键点,否则客户端将找不到centos目录)
[root@localhost ~]# mkdir /var/ftp/centos (默认匿名用户访问的“宿主根目录”为/var/ftp/目录~)
[root@localhost ~]# mount /dev/sr0 /var/ftp/centos
yum源服务器配置:
安装apache服务,开源和rpm包安装的服务,默认目标位置不同。
开源安装的服务配置:
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf (指定了安装路径)
修改:
ServerName 192.168.10.1:80
[root@localhost ~]# mkdir /usr/local/httpd/htdoc/centos7
[root@localhost ~]# mount /dev/sr0 /usr/local/httpd/htdoc/centos7
[root@localhost ~]# systemctl start httpd
yum安装httpd的服务配置:
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
修改:
ServerName 192.168.10.1:80
[root@localhost ~]# mkdir /var/www/html/centos7 (默认网页根目录位于/var/www/html)
[root@localhost ~]# mount /dev/sr0 /var/www/html/centos7
[root@localhost ~]# systemctl start httpd 注意:不能使用rpm -ivh的方式安装httpd
初始快照下配置,啥也不用动,就能访问百度就行
客户端
CentOS,是基于 Red Hat Linux 提供的可自由使用源代码的企业级 Linux 发行版本;是一个稳定,可预测,可管理和可复制的免费企业级计算平台。
阿里源:
Linux客户端配置方法
1. 备份你的原镜像文件,以免出错后可以恢复
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2.下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
CentOS 7:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
3. 运行 yum makecache 生成缓存
4.
5. 其他
非阿里云ECS用户会出现 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 信息,不影响使用。用户也可自行修改相关配置: eg:
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
华为源:
1、备份配置文件:
cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
2、两种方案,请大家自行选取。
方案一:
下载新的CentOS-Base.repo文件到/etc/yum.repos.d/目录下,选择CentOS版本:
CentOS 7
执行如下命令:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo
方案二:
修改CentOS-Base.repo文件,取消baseurl开头的行的注释,并增加mirrorlist开头的行的注释。将文件中的http://mirror.centos.org替换成https://mirrors.huaweicloud.com,可以参考如下命令:
sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/CentOS-Base.repo
sed -i "s/mirrorlist=http/#mirrorlist=http/g" /etc/yum.repos.d/CentOS-Base.repo
sed -i "s@http://mirror.centos.org@https://mirrors.huaweicloud.com@g" /etc/yum.repos.d/CentOS-Base.repo
3、执行yum clean all清除原有yum缓存。
4、执行yum makecache(刷新缓存)或者yum repolist all(查看所有配置可以使用的文件,会自动刷新缓存)。
# 系统环境:CentOS7
http://mirrors.aliyun.com/repo/Centos-7.repo
[1] 首先备份/etc/yum.repos.d/CentOS-Base.repo
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[2] 进入yum源配置文件所在文件夹
cd /etc/yum.repos.d/
[3] 下载163的yum源配置文件,放入/etc/yum.repos.d/(操作前请做好相应备份)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
阿里云是:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[4] 运行yum makecache生成缓存 yum makecache
[5] 更新系统(时间比较久,主要看个人网速) yum -y update
[6] 安装vim编辑器 yum -y install vim*
[root@localhost ~]# rm -rf /etc/yum.repos.d/* //如果不删除,他将找不到yum仓库
[root@localhost ~]# vim /etc/yum.repos.d/ftp.repo
[ftp]
baseurl=ftp://192.168.10.1/centos
enabled=0
gpgcheck=0
或
[http]
baseurl=http://192.168.10.1/centos7
enabled=1
gpgcheck=0
[root@localhost ~]# yum -y install bind*
YUM客户端的基本操作:
[root@localhost ~]# yum list //查询所有已经安装和可以安装的程序包
[root@localhost ~]# yum info httpd //查询httpd的信息
[root@localhost ~]# yum search all httpd //查询httpd相关软件包的信息
[root@localhost ~]# yum clean all //清除缓存
[root@localhost ~]# yum grouplist
[root@localhost ~]# yum groupinfo
[root@localhost ~]# yum groupinfo Desktop
[root@localhost ~]# yum -y install bind* //安装bind*相关软件包
[root@localhost ~]# yum groupinstall "组名"
[root@localhost ~]# yum -y remove bind* //删除bind*相关软件包
[root@localhost ~]# yum -y groupremove "组名"
[root@localhost ~]# yum deplist mysql-server
例如:
[root@localhost ~]# yum groupinstall "X Window System"
[root@localhost ~]# yum groupinstall "GNOME Desktop Environment"
[root@localhost ~]# yum groupinstall "KDE (K Desktop Environment)"
Anything I can put you through, that’s not a thing!