Linux各发行版使用的软件包管理命令,如apt-get ,dpkg, rpm ,yum,emerge等等。本文对yum工具进行研究整理。
1、yum简介
1.1 What's yum
- yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器。
- 它可以系统管理员交互和自动化地管理RPM软件包,
- 能够从指定的服务器自动下载RPM包并且安装,
- 可以自动处理依赖性关系,并且一次安装所有依赖的软体包。
1.2 yum的基本目录
- YUM配置文件 /etc/yum.conf,通常无需修改
- 仓库配置文件目录 /etc/yum.repos.d/
- YUM的缓存目录 /var/cache/yum
- YUM的日志文件 /var/log/yum.log
2、what‘s repo
2.1 repo文件是yum源的配置文件
- 通常一个repo文件定义了一个或者多个软件仓库的细节内容,repo文件中的设置内容将被yum读取和应用!
2.2 YUM的工作原理:
- 每一个 RPM软件的头(header)里面都会纪录该软件的依赖关系,那么如果可以将该头的内容纪录下来并且进行分析,可以知道每个软件在安装之前需要额外安装
- 服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。
- 客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。
2.3 repo文件配置解释
- [serverid]
是用于区别各个不同的repository
- name=Some name for this server
是对repository的描述
- baseurl=url://server1/path/to/repository/
其中url支持的协议有 http:// ftp:// file://三种
baseurl后可以跟多个url
url之后可以加上多个选项,如gpgcheck、failovermethod
- enabled=[1 or 0]
是否可用
2.4 repo中的变量
- $releasever,linux发行版本,[5/6/7]
- $arch,cpu体系,如[i686,athlon]
- $basearch,cpu的基本体系组,[i386/x86_64]
3、yum源的安装
3.1 本地yum搭建
本地yum就是让linux 系统使用 装机镜像包中的rpm软件
1、创建挂载点
2、光驱插入镜像盘# mkdir /yum
3、挂载
# mount /dev/cdrom /yum
4、编辑repo文件
[local]name=auto yumbaseurl=file:///yumenabled=1gpgcheck=1
3.2 基于ftp的网络yum源
服务端
1、服务端安装vsftpd
2、修改ftp访问的目录# service vsftpd start# rpm -ivh vsftpd-2.2.2-11.el6_4.1.x86_64.rpm
# chkconfig vsftpd on
设置ftp家目录为光盘挂载点
# mount /dev/cdrom /yum# usermod -d /yum ftp #修改ftp用户家目录为rpm包目录
客户端
1. 编辑客户端的repo文件
[local]name=auto yumbaseurl=ftp://x.x.x.xenabled=1gpgcheck=0
3.3 epel yum源搭建
1. epel源简介
- EPEL,即Extra Packages for Enterprise Linux
- 这个软件仓库里有很多非常常用的软件,而且是专门针对RHEL设计的,对RHEL标准yum源是一个很好的补充,完全免费使用
- 由Fedora项目维护,所以如果你使用的是RHEL,或者CentOS,Scientific等RHEL系的linux,可以非常放心的使用EPEL的yum源。
2. 打开epel网站
方法1:
安装生成repo的rpm,网上通用,但是报错
下载配置repo 的rpm
选择对应版本的rpm
下载配置repo 的rpm
选择对应版本的rpm
因为我是redhat6.4 ,选择此网页的epel-release-latest-6.noarch.rpm
linux安装命令:
# rpm -Uvh http://mirrors.kernel.org/fedora-epel/epel-release-latest-6.noarch.rpm # yum clean all# yum makecache
报错:连接不到epel源
解决办法:Loading mirror speeds from cached hostfileError: Cannot retrieve metalink for repository: epel. Please verify its path and try again
方法2
方法2:
编辑一个epel的repo文件
1. 选择basedir
2. 编辑 epel.repo在epel源的网站上选择合适的系统版本,和cpu架构,比如我是redhat6.4 64位
# cat epel.repo [epel]name=epelbaseurl=http://mirrors.kernel.org/fedora-epel/6/x86_64/enable=1gpgcheck=0
3. 查看yum源
# yum clean all# yum repolist
3.4 国内yum源:网易163yum源
# cd /etc/yum.repos.d
方法1:
下载repo文件
报错:# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo# yum clean all# yum makecache
http://mirrors.163.com/centos/6Server/os/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
解决方案:
可以通过报错看到解析的地址有问题,我们将变量直接替换成指定值$releasever --> 6$basearch --> x64_86替换后,baseurl=http://mirrors.163.com/centos/6/os/x86_64/
方法2:
直接编辑一个repo文件
# cat Centos163.repo[base]name=CentOS-6 - Base - 163.combaseurl=http://mirrors.163.com/centos/6/os/x86_64/enable=1gpgcheck=1
3.5 mysql yum源配置
- https://dev.mysql.com/downloads/repo/yum/
- 选择合适的rpm安装包
- 安装
- 下载并传到linux
- 或 wget https://repo.mysql.com//mysql57-community-release-el6-11.noarch.rpm
- 查看yum源
- yum repolist all
- 安装MySQL
- shell> sudo yum install mysql-community-server
4、yum语法和命令
语法:
yum [选项] [参数]
选项:
参数:-h:显示帮助信息;-y:对所有的提问都回答“yes”;-c:指定配置文件;-q:安静模式;-v:详细模式;-d:设置调试等级(0-10);-e:设置错误等级(0-10); -R:设置yum处理一个命令的最大等待时间;-C:完全从缓存中运行,而不去下载或者更新任何头文件。
常用命令:install:安装rpm软件包;update:更新rpm软件包;check-update:检查是否有可用的更新rpm软件包;remove:删除指定的rpm软件包;list:显示软件包的信息;search:检查软件包的信息;info:显示指定的rpm软件包的描述信息和概要信息;clean:清理yum过期的缓存;shell:进入yum的shell提示符;resolvedep:显示rpm软件包的依赖关系;localinstall:安装本地的rpm软件包;localupdate:显示本地rpm软件包进行更新;deplist:显示rpm软件包的所有依赖关系。
yum插件安装
yum install yum-fastestmirror #自动搜索最快镜像插件yum install yumex #安装yum图形窗口插件
yum查看
yum list #显示所有已经安装和可以安装的程序包yum grouplist #查看可能批量安装的列表
yum安装
yum install package1 #安装指定的安装包package1yum groupinsall group1 #安装程序组group1
yum更新
yum update package1 #更新指定程序包package1
yum移除
yum remove | erase package1 #删除程序包package1