[Linux程序包管理之RPM及YUM]
Linux程序包管理之RPM及YUM
一、RPM和YUM简介
RPM,全称RPM Package Manager,是由Red Hat推出的软件包管理系统,现在在各个发行版普遍使用。
RPM包管理器,将编译好的程序打包成一个文件或有限的几个文件,可用于实现便捷地安装、卸载、升级、查询、校验等程序管理;通常用与RHEL,红帽衍生系统,如CenOS等系统,用来实现对Linux程序包进行快捷管理。
RPM包命名格式:
Yum,全称Yellow dog Updater, Modified , 由Duke University团队,修改Yellow Dog Linux的Yellow Dog Updater开发而成,是一个基于 RPM 包管理的字符前端软件包管理器。能够从指定的服务器自动下载 RPM 包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装的。
二、程序包安装路径
系统相关:
配置文件路径:/etc
二进制文件路径:/bin 、/sbin
库文件路径:/lib、lib64、 /usr/lib、/usr/local/lib
系统提供功能服务相关:
配置文件路径:/etc
二进制文件路径:/usr/bin /usr/sbin
库文件:/usr/lib、lib64、 /usr/lib、/usr/local/lib
第三方软件:
配置文件路径/usr/local/etc、/etc/DIR
二进制文件路径:/usr/local/bin /usr/local/sbin
库文件:/usr/local/lib
软件说明相关文档主要都存放在/usr/share/man和/usr/local/share/man
三、使用详细介绍
3.1RPM软件包使用介绍
3.1.1 RPM安装相关
rpm{-i|--install} [install-options] PACKAGE_FILE ...
rpm-ivh PACKAGE_NAME
-i :安装
-v:显示安装过程
-h:以#显示安装进度,每个#代表2%进度。
--replacepkgs:替换安装,如果该该包提前安装过,需要再次替换安装使用;
--nodeps:不检查依赖关系
--oldpackage:降级安装;
--force: 忽略冲突,强制执行过程;
--test:测试整个安装过程,测试完毕,并不安装;
例子:### rpm-ivh vsftpd-2.2.2-12.el6_5.1.x86_64.rpm
3.1.2 RPM升级
rpm{-U|--upgrade} [install-options] PACKAGE_FILE ...
如果有较旧版本程序包,则升级安装;否则,则执行安装操作;
rpm {-F|--freshen}[install-options] PACKAGE_FILE ...
如果有较旧版本程序包,则升级安装;否则,中止;
# rpm-Uvh PACKAGE_FILE ...
# rpm -Fvh PACKAGE_FILE ...
例子: ### rpm-Uvh vsftpd-2.2.2-12.el6_5.1.x86_64.rpm
###rpm -Fvh vsftpd-2.2.2-12.el6_5.1.x86_64.rpm
3.1.3 RPM卸载
rpm{-e|--erase} [--allmatches] [--nodeps] [--noscripts]
rpm{-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME
rpm -e PACKAGE_NAME ...
--nodeps: 忽略依赖关系
--test:卸载测试
注意:如果包的配置文件安装后曾被改动过,卸载时,此文件将不会删除,而是被重命名(原文件加.rpmsave后缀)并保留.
例子: ### rpm-e vsftpd
###rpm -e mysql-libs --nodeps
3.1.4 RPM查询
rpm{-q|--query} [select-options] [query-options]
[select-options]:
1、查询某包是否安装:
rpm-q PACKAGE_NAME ...
###rpm -q bind
2、查询已安装的所有包:
rpm-qa
###rpm -qa | less
3、查询某文件是由哪个包安装生成:
rpm-qf /path/to/somefile
###rpm -qf /bin/bash
4、查询尚未安装包的相关信息:
rpm-qpl PACKAGE_FILE
rpm-qpi PACKAGE_FILE
###rpm -qpl httpd-2.2.15-39.el6.centos.x86_64.rpm
###rpm -qpi httpd-2.2.15-39.el6.centos.x86_64.rpm
[query-options]
1、查询某包的简要说明信息
rpm-qi PACKAGE_NAME
###rpm -qi bash
2、查询某包安装后生成的所有文件的列表
rpm-ql PACKAGE_NAME
###rpm -ql bash
3、查询某包安装后生成的所有配置文件的列表
rpm-qc PACKAGE_NAME
###rpm -qc bash
4、查询某包安装后生成的所有帮助文件的列表
rpm-qd PACKAGE_NAME
###rpm -qd bash
5、查询某rpm包制作时随版本变化的changelog列表信息
rpm-q --changelog PACKAGE_NAME
###rpm -q --changelog bash
6、查询某包提供的capabilities(能力),列出软件包提供的特性
rpm -q --provides PACKAGE_NAME
###rpm -q --provides passwd
7、查询某包所依赖的capabilities(能力),列出软件包依赖的其他软件包
rpm -q --requires PACKAGE_NAME
###rpm -q --requires passwd
8、查询某包安装卸载时的脚本
rpm-q --scripts
安装卸载脚本有四种:
preinstall:安装前执行的脚本
postinstall:安装后执行的脚本
preuninstall:卸载前执行的脚本
postuninstall:卸载后执行的脚本
###rpm -q --scripts bash
9、显示软件包的修改信息
rpm-q --changelog PACKAGE_NAME
###rpm -q --changelog bash
10、显示转储文件信息
rpm-q --dump PACKAGE_NAME
###rpm -q --dump bash |less
3.1.5 校验
rpm{-V|--verify} [select-options] [verify-options]
检查包安装之后生成的文件是否发生了改变
常用用法:rpm -VPACKAGE_NAME
S file Size differs # 文件大小不一致
M Mode differs (includes permissions and filetype) #模式不一致 (包括许可和文件类型)
5 digest (formerly MD5 sum) differs MD5 # MD5 校验和不一致
D Device major/minor number mismatch # 主从设备号不匹配
L readLink(2) path mismatch # readLink(2) 路径不匹
U User ownership differs #属主不一致
G Group ownership differs # 属组不一致
T mTime differs # 修改时间不一致
P caPabilities differ # 提供的功能有变化
### rpm -V httpd
3.1.6包来源合法性及完整性验正
rpm --import PUBKEY ...
rpm {-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE ...
--nosignature: 不检查来源合法性
--nodigest: 不检查完整性
###rpm -K httpd-2.2.15-39.el6.centos.x86_64.rpm
3.1.7公共数据库:/var/lib/rpm
重建数据库
rpm {--initdb|--rebuilddb}
初始化:--initdb
如果事先不存在数据,则会新之;否则,不执行任何操作
### rpm --initdb
重新构建:--rebuilddb
无论当前是否已经存在数据库,都会直接重建并覆盖现有数据库
### rpm --rebuilddb
3.1.8 扩展讲解
[1]从yum仓库下载RPM软件包
yumdownloader --resolve PACKAGE_FILE …
--destdir DIR
指定下载目标目录。默认为当前目录。
--urls
而不是下载RPM包,列出将要下载的网址。
--resolve
当下载RPM包,解决依赖关系,并下载所需的软件包。
--source
而不是下载的二进制RPM包,下载源RPM包
例子:### yumdownloader --resolve lrzsz
[2]rpm2cpio使用
如果下载一个 RPM,需要检查它的内容而不是安装它,可以使用 rpm2cpio 命令把内容转换为 cpio 存档,然后通过 cpio 命令提取出包中的某些或所有文件。对 bind 包执行转换,然后显示提取出的文件(和目录)。关于 rpm2cpio 和 cpio 命令的更多信息参见它们的手册页。
例子:
### yumdownloader bind
### mkdir bind && cd bind
### rpm2cpio ../bind-9.8.2-0.17.rc1.el6.x86_64.rpm| cpio -idv
3.2YUM软件包使用介绍
3.2.1 YUM安装
安装一个软件包或多个软件包
#yum install package1 [package2] [...]
安装软件包组
#yum groupinstall groupinstall group1 [group2] [...]
#yum install @group1 [group2] [...]
例子: # yuminstall bind
# yum groupinstall ‘MySQL Database server‘
# yum install @‘MySQL Database client‘
本地安装一个rpm软件包
#yum localinstall rpmfile1 [rpmfile2] [...]
本地安装
如果要安装指定的版本的程序:
yuminstall PACKAGE-VERSION
重装指定的程序包
yum reinstall PACKAGE_NAME ...
3.2.2 YUM 升级
升级某个包或多个软件包
#yum update [package1] [package2] [...]
升级某个包组
#yum groupupdate group1 [group2] [...]
例子: ### yum update bind
### yum groupupdate ‘MySQL Database server‘
### yum update @‘MySQL Database client‘
本地升级安装某个rpm软件包
#yum localupdate rpmfile1 [rpmfile2] [...]
软件包yum降级:
# yum downgrade PACKAGE_NAME
检查可用升级:
### yum check-update
3.2.3 YUM 卸载
卸载某个软件包
#yum remove | erase package1 [package2] [...]
下载某个软件包组
#yum groupremove group1 [group2] [...]
#yum remove @‘ group_name‘
例子:### yum remove bind
### yum groupremove ‘MySQL Database server‘
### yum remove @‘MySQL Database client‘
3.2.4 YUM查询
查询已安装和可以安装的软件包清单,或查询某个特定的软件包
#yum list [PACKAGE_NAME]
查询软件包信息
#yum info [PACKAGE_NAME]
#yum info installed ### 列出已安装的软件包信息
#yum info available ### 列出可安装的软件包信息
查询软包提供的功能或者命令
#yum provides | whatprovides feature1 [feature2] [...]
查询包组已安装和可以安装的软件包组清单,或查询某个特定的软件包组
# yum grouplist[hidden] [groupwildcard] [...]
查询某个软件包组信息
#yum groupinfo group1 [...]
根据关键字模糊查询包名或包的sumary信息包含此KEYWORD的相关列表;
#yum search string1 [string2] [...]
查询所有可用YUM仓库都有那些或启用或关闭某个仓库
#yum repolist [all|enabled|disabled]
例子:
### yum list httpd
### yum info ftp
### yum provides *bin/sz
### yum grouplist | less
### yum groupinfo ‘ServerPlatform Development‘
### yum search ‘vsftp‘
### yum repolist
3.2.5 YUM仓库缓存数据
YUM仓库缓存数据清理
yumclean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
### yum clean all
重新生成yum仓库缓存数据
### yum makecache
四、YUM扩展讲解
4.1 YUM客户端配置
4.1.1 YUM配置文件的具体格式
[Local-YUM]是仓库名repository_ID,名字可以随便取
name是yum的名称也可以随便取“=”两边不能有空格
baseurl指定rpm包的路径,该路径下必须有repodata这个文件
enabled默认为1,表示启动此仓库,0表示不启用
gpgcheck默认也是1,1表示检查公钥,0表示不检查,当检查公钥时要指定gpgkey的地址
cost默认是1000,越小越优先访问
4.1.2 YUM配置服务器
YUM服务器基于http、ftp、nfs、file访问格式
相对应的baseurl路径:
http://
ftp://
nfs://
file:///
本地光盘例子:
cat >> /etc/yum.repos.d/CentOS-Local.reop <<END
[YUM-Local]
name=CentOS 6.6 Local YUM
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
END
公网http例子:
cat >> /etc/yum.repos.d/CentOS-sohu.reop <<EOF
[sohu]
name=Sohu for CentOS 6.x YUM
baseurl=http://mirrors.sohu.com/centos/$releasever/os/$basearch
enabled=1
gpgcheack=1
gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-6
EOF
4.1.3 搭建YUM仓库服务器
# yum install httpd -y # 以http的方式向外提供yum仓库服务
# yum install createrepo -y # 安装创建yum仓库的工具
# mkdir -p /var/www/html/centos6.6 #创建yum以http服务提供的路径
# mkdir -p /media/cdrom # 创建光盘挂载点
# mount -r /dev/cdrom /media/cdrom/ # 以只读方式挂载光盘
# cp -r /media/cdrom/Packages/ /var/www/html/centos6.6 # 拷贝rpm包(最好将两个光盘的包都拷贝)
# cd /var/www/html/centos6.6
# createrepo Packages/ -o . # 创建Packages软件包目录的元数据信息
# service httpd restart # 启动httpd,以便于提供YUM仓库
YUM仓库配置完毕。
### baseurl=http://172.16.249.165/centos6.6
本文出自 “心静梵音” 博客,请务必保留此出处http://mastters.blog.51cto.com/6516495/1582788
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。