yum软件包管理和yum源部署详解


yum软件包管理详解

yum
依赖关系
程序包管理器的前端工具:yum(Yellowdog Update Modifier)

自动解决依赖关系:x-->y-->z

文件服务器(共享rpm包):通过yum有支持的文件共享机制将各rpm包通过文件服务共享
repository:仓库
1.各rpm包;
2.依赖关系、程序包安装后所能生成文件列表等元数据文件

ftp、http、nfs、file

yum客户端:
1.配置文件:指定各可用的yumn仓库;
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用法和常用命令

Usage: yum [options] COMMAND

List of Commands:

check Check for problems in the rpmdb
check-update 检查是否有软件包更新
clean 删除缓存的数据
deplist 列出软件包的依赖关系
distribution-synchronization Synchronize installed packages to the latest available versions
downgrade 降低程序包的版本
erase 从系统中移除一个或多个软件包
groupinfo 显示组的详细信息
groupinstall 向系统中安装一组软件包
grouplist 列出可安装的组
groupremove 从系统中移除一组软件包
help 显示用法信息
history Display, or use, the transaction history
info 显示关于软件包或组的详细信息
install 向系统中安装一个或多个软件包
list 列出一个或一组软件包
load-transaction load a saved transaction from filename
makecache 创建元数据缓存
provides 查找提供指定内容的软件包
reinstall 覆盖安装一个包
repolist 显示已配置的仓库
resolvedep 判断哪个包提供了指定的依赖
search 在软件包详细信息中搜索指定字符串
shell 运行交互式的 yum 外壳
update 更新系统中的一个或多个软件包
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 更新软件包同时考虑软件包取代关系
version Display a version for the machine and/or available repos.

要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中:
/etc/yum.conf
/etc/yum.repo.d/*.repo

配置文件格式:有两段组成,类似windows的ini配置文件
[main] :主配置段
[repo] :仓库配置段
[main]
# 缓存程序位置
cachedir=/var/cache/yum/$basearch/$releasever
# 是否保存已经下载安装好的程序包,1缓存,0不缓存
keepcache=0
debuglevel=2
# 日志文件目录
logfile=/var/log/yum.log
# 查询程序包的精确匹配
exactarch=1
obsoletes=1
# 检验程序包的来源合法性和完整性
gpgcheck=1
# yum是否支持插件
plugins=1
in /etc/yum.repo.d

配置repo:
[repo_ID]
name=String
baseurl=仓库的访问路径
enabled={1|0}
gpgcheck={1|0}
gpgkey=公钥文件(可以在本地,可以是服务器路径)
cost=定义仓库开销,默认为1000 谁的cost值越小就会被优先使用
[base]
name=Centos 6.5 X86_64 relase
baseurl=http://172.18.119.102/Cento6-6.5/86_64/
enabled=1
gpgcheck=1
gpgkey=http://172.18.119.102/Cento6-6.5/86_64/RPM-GPG-KEY-6

yum的命令
repolist [all|enabled|disabled]:列出所有可以的yum repo
clean [all|packages|metadata|expire-cache|rpmdb|plugins]
list [all|installed|available]
info package_name: 列出包的描述信息
groupinfo "package_group_name": 显示包组信息
groupinstall "package_group_name": 安装包组
groupremove "package_group_name": 卸载包组
install package_name...: 安装指定的程序包
reinstall package_name...:重新安装指定的程序包
update package_name...:升级指定的程序包
现在的版本:x-1.2.1 x-1.2.2 x-1.2.3
升级到指定的版本:yum update x-1.2.2

erase|remove package_name...: 卸载指定的程序包
whatprovides|provides /path/to/samefile:查询某文件是由哪一个包安装生成的
downgrade package_name: 降级
deplist package_name:查询指定的程序包依赖哪些包
安装本地包:
install /path/to/package_file
手动进制检查来源及完整性: --nogpgcheck
yum install /tmp/lrzsz.x86_64.rpm --nogpgcheck

yum配置文件中可用的四个宏:(通过python的方式来调用的)
$releasever: 程序的版本,对yum而言指的是redhat-release版本;只替换主版本号如6

$arch:系统cpu架构
[root@server yum.repos.d]# python
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.uname()
('Linux', 'server', '2.6.32-642.el6.x86_64', '#1 SMP Tue May 10 17:27:01 UTC 2016', 'x86_64')

$basharh: 系统基础架构,如i686,i586等的基本架构为i386

$YUM0-9: 在系统中自定义的环境变量

获取当前系统相应宏替换结果的办法:
[root@server yum.repos.d]# python
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> import yum,pprint
>>> yb = yum.YumBase()
>>> pprint.pprint(yb.conf.yumvar)
{'arch': 'ia32e',
'basearch': 'x86_64',
'infra': 'stock',
'releasever': '6',
'uuid': '845921a8-4a8e-4406-aebf-2309a3d72467'}
>>> quit()

案例1:创建完全自定义的本地源把平时收藏的一些RPM软件包放在一个目录里,就变成一个自定义源了,可以用YUM来管理,灵活性相当大。

1、创建本地yum仓库
mkdir -p /opt/rpm #可以有N级目录
cp ... #复制RPM包到上述目录
2、创建repo文件
cat >>/etc/yum.repos.d/Test.repo<<-EOF
[Local]
name=Local Yum
baseurl=file:///opt/rpm
gpgcheck=0
enabled=1
3、安装createrepo
yum install createrepo #使用yum安装createrepo
rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/createrepo-0.9.9-23.el7.noarch.rpm
4、创建索引
createrepo /opt/rpm
yum makecache #更新缓存

四、添加yum源
[html] view plaincopy
[1] Add RPMforge Repository for yum because that has many useful packages.
[root@dlp ~]#
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
[root@dlp ~]#
rpm -Uvh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Preparing… ###################################### [100%] 1:rpmforge-release ###################################### [100%]
[root@dlp ~]#
sed -i -e "s/enabled = 1/enabled = 0/g" /etc/yum.repos.d/rpmforge.repo

[2] Add repository EPEL that is provided from Fedora project.

[root@dlp ~]#
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@dlp ~]#
rpm -Uvh epel-release-6-8.noarch.rpm
Preparing… ###################################### [100%] 1:epel-release ###################################### [100%]
[root@dlp ~]#
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM