rpm软件程序包存在的问题:依赖关系
依赖关系解决方法:
程序包管理器的前端工具:yum (Yellowdog Update Modifier)
yum是rpm的补充,为了提升用户体验的工具。
yum的核心功能:自动解决依赖关系:X --> Y --> Z
文件服务器(共享rpm包):通过yum所支持的文件共享机制将各rpm包通过文件服务共享
该服务器是一个repository: yum仓库
组成部分:
1、各rpm包;
2、依赖关系、程序包安装后所能够生成文件列表等元数据文件;
ftp, http, nfs, file
yum客户端:
1、配置文件:指定各可用的yum仓库;
2、缓存元数据:yum会到各可用yum仓库获取元数据,并缓存至本地;
3、分析元数据:根据具体操作请求完成元数据分析, 可能包括检查依赖关系、文件列表等信息;
4、执行具体操作:
客户端配置文件指定对应服务器访问方式:
ftp ftp://server/path/to/repo
http http://server/path/to/repo
nfs nfs://server/nfs_path
file file:///path/to/repository
yum [options] COMMAND
COMMAND命令有如下这些:
check Check for problems in the rpmdb
check-update Check for available package updates
clean Remove cached data
deplist List a package's dependencies
distribution-synchronization Synchronize installed packages to the latest available versions
downgrade downgrade a package
erase Remove a package or packages from your system
groupinfo Display details about a package group
groupinstall Install the packages in a group on your system
grouplist List available package groups
groupremove Remove the packages in a group from your system
help Display a helpful usage message
history Display, or use, the transaction history
info Display details about a package or group of packages
install Install a package or packages on your system
list List a package or groups of packages
load-transaction load a saved transaction from filename
makecache Generate the metadata cache
provides Find what package provides the given value
reinstall reinstall a package
repolist 显示当前yum可以使用的仓库
resolvedep Determine which package provides the given dependency
search Search package details for the given string
shell Run an interactive yum shell
update Update a package or packages on your system
update-minimal Works like update, but goes to the 'newest' package match which fixes a problem that affects your system
updateinfo Acts on repository update information
upgrade Update packages taking obsoletes into account
version Display a version for the machine and/or available repos.
要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中:
/etc/yum.conf 这里存放的是yum的核心配置
/etc/yum.repos.d/*.repo 仓库的配置文件,yum.repos.d目录下所有以repo结尾的都是yum仓库配置文件
配置文件格式:由两段组成,类似windows的ini配置文件
[main] :主配置段,在/etc/yum.conf中
[root@xuanxuan rpm]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever yum仓库的元数据信息
后面几个是yum可用的宏
keepcache=0 是否存rpm包缓存
debuglevel=2
logfile=/var/log/yum.log 安装日志文件
exactarch=1 要与本机arch精确匹配
obsoletes=1
gpgcheck=1 是否检查来源合法性和完整性,gpg是检查用的
plugins=1 是否使用插件
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
[repo] :仓库配置段,在/etc/yum.repos.d/目录的.repo文件里
配置repo:
[repo_ID]
name=String
baseurl=仓库的访问路径
enabled={1|0} 不指定的话默认启用
gpgcheck={1|0}
gpgkey=公钥文件(可以在本地,也可是服务器端路径) 如gpgcheck是1的话
cost=定义此仓库开销,默认为1000
要查看本机内核的版本可以使用 uname -a 指令,然后再根据这个去选择使用哪些yum源
如i386是指intel的32位的cpu处理器的
配置yum源仓库信息
[base] 这个名字可以任意,指明这是一个仓库
name=CentOS 6.5 X86_64 relase
baseurl=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/
enabled=1
gpgcheck=1
gpgkey=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/RPM-GPG-KEY-CentOS-6
仓库的元数据信息都存在这里
[root@xuanxuan base]# pwd
/var/cache/yum/i386/6/base
yum clean all 可以清空所有的元数据信息
yum在运行时,会先在/var/cache/yum/$basearch/$releasever里存入新仓库的元数据,在使用yum进行安装时,则会对应的找元数据查找下载安装
yum的各命令:
repolist [all|enabled|disabled]: 列出所有可用yum仓库
clean [all|packages|metadata|expire-cache|rpmdb|plugins]: 清理所有的元数据(/var/cache/yum..)
全部 包 元数据
list [all|installed|available]: 列出rpm包
all:可用和已安装的都显示,仓库中的包,一般在安装rpm之前会使用其查找
info package_name: 列出包的描述信息
分为几个类别 available package 如果未安装则显示这个
installed package 安装好之后显示这个
grouplist: 列出所有包组
列出了仓库中的包组,也就是把所有的rpm分成组显示出来,每个组里有很多rpm
一般在安装整个包组时需要查询时用到
groupinfo "package_group_name":显示包组信息
包组的意思:里面有很多的rpm,共同组成了一个包
三个跟开发相关的包组:
Desktop Platform Development:有图形程序时需安装此组;
Server Platform Development:服务器平台使用的组
Development Tools:基本的工具组
install package_name ...(可以一次装多个): 安装指定的程序包
reinstall package_name ...: 重新安装指定的程序包
check-update: 检查可升级的包
update package_name ...: 升级指定的程序包
现在的版本:x-1.2.1, x-1.2.2, x-1.2.3
要升级到指定版本:yum update x-1.2.2
downgrade package_name:降级
erase|remove package_name ...:
依赖于该卸载掉的包也会被卸载
whatprovides|provides /path/to/somefile: 查询某文件是由哪个包安装生成的
这个和rpm -qf ..是近似的功能
[root@xuanxuan base]# which useradd
/usr/sbin/useradd
[root@xuanxuan base]# rpm -qf /usr/sbin/useradd
shadow-utils-4.1.4.2-13.el6.i686
groupinstall "group_name":安装指定的包组
groupremove "group_name": 卸载指定的包组
[root@xuanxuan base]# yum history
使用这个去看操作的yum有哪些
安装本地包:
yum install /path/to/package_file
手动禁止检查来源及完整性:--nogpgcheck
yum install /tmp/zsh-2.3.1-2.el6.x86_64.rpm --nogpgcheck
提示:如果系统为CentOS 5,常用的开发包组为“Development Tools”和“Development Libraries”
CentOS 6,常用的开发包组为“Development Tools”和“Server Platform Development”
练习:安装相关的包组,确保如下命令可执行
# gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
yum配置文件中可用常用的四个宏:
例子:
[root@xuanxuan rpm]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
说明:
$releasever: 程序的版本,对Yum而言指的是redhat-release版本;只替换为主版本号,如RedHat 6.5,则替换为6;
$arch: 系统架构
$basearch: 系统基本架构,如i686,i586等的基本架构为i386;
$YUM0-9: 在系统中定义的环境变量,可以在yum中使用;
yum可以识别系统的各种结构并赋值,也就是以上的这些变量,在读配置文件时,替换使用
获取当前系统相应宏替换结果的办法:
# python
Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import yum,pprint
>>> yb = yum.YumBase()
>>> pprint.pprint(yb.conf.yumvar,width=1)
Loaded plugins: fastestmirror, refresh-packagekit
{'arch': 'ia32e',
'basearch': 'x86_64',
'releasever': '6',
'uuid': 'ea249181-2f82-4c40-8c42-d51b3fce319a'}
>>> quit()
[fedora-epel]
name=Fedora Community EPEL
baseurl=http://172.16.0.1/fedora-epel/6/x86_64/
enabled=1
gpgcheck=0
[fedora-epel]
name=Fedora Community EPEL
baseurl=http://172.16.0.1/fedora-epel/$releasever/$basharch/
enabled=1
gpgcheck=0
总结:yum客户端是依赖于 yum repository 工作的
yum: /etc/yum.conf, /etc/yum.repos.d/*.repo 这些配置文件指明yum的基本属性以及仓库的属性
自建yum仓库:
yum repository: 文件服务器
yum仓库的元数据存在/var/cache/yum/i386/6/...中,在base这个仓库中又有配置文件
repodata这一层是元数据层,仓库找到这一层即可
yum是找的repodata的元数据,实际包时,找的是同一层的packages
repodata/:
repomd.xml:
测试实现yum repository的配置:
1、准备文件服务器;使用httpd为例,请事先确保已经安装httpd程序包;
2、在/var/www/html目录,使用一个目录来保存准备制作成为yum仓库的所有rpm包;
# cd /var/www/html
在该下建立一个目录,如openstack,把rpm包都放入该目录下
# bye
3、创建yum仓库
# rm -rf /var/www/html/openstack/repodata
# createrepo /var/www/html/openstack 对openstack下的rpm创建元数据
4、启动httpd服务
# service httpd start
对外可以通过ip地址和路径访问
5、配置使用自建的yum仓库
[openstack]
name=Openstack Repository
baseurl=http://ip地址/openstack/
enabled=1
gpgcheck=0
6、配置好epel的yum源
7、测试使用
# yum install openstack-keystone
如果是本地的镜像,可以使用file协议作为访问协议,访问本地的yum源,如file:///media/..
这里的baseurl可以是file:///...找本地的repodata做为元数据访问