RHEL系统程序包管理之rpm
rpm是redhat的软件包格式,全称是RedHat Package Manager,而安装rpm格式的软件包则需要使用rpm命令,一个程序的使用过程中对其的操作无非包括下面五个方面:
安装、升级、卸载、查询、校验
我们就按照上面的五个方面来分别介绍rpm命令的使用
安装:
rpm{-i|--install} [install-options] PACKAGE_FILE ...-i:表示安装,也可使—install而安装也是有选项可以使用的,后面接上要安装的rpm程序即可了;
-v:显示安装过程中的详细信息,也可以用-v,-vv,-vvv来显示更多更详细的信息
-h:安装时显示50位的hash值,可以配合-v使用,显示效果回更好
rpm -ivh [install-options] PACKAGE_FILE
介绍安装选项之前先说一下,程序包之间的依赖关系,有些安装包的使用会依赖于其他的安装包,如果没有解决依赖关系而安装会导致安装完成之后导致程序包不能正常使用,而rpm命令并不能解决软件包之间的依赖关系,如果依赖关系没有解决会终止安装。
[install-options]:
--replacepkgs:重新安装,之前安装过被破坏了需要在安装则可以使用这个选项
--nodeps:忽略依赖关系强行安装,会安装上,但不一定正常运行
--test:测试安装,而不执行真正的安装过程,会显示详细安装过程,但并没有安装上
升级:
用较高版本程序包替换安装原有较老的程序包的过程
rpm {-U|--upgrade} [install-options]PACKAGE_FILE ...如果有较旧版本程序包,则升级安装;否则,则执行安装操作,同样支持安装选项
rpm{-F|--freshen} [install-options] PACKAGE_FILE ...如果有较旧版本程序包,则升级安装;否则,中止,这是刷新,只有之前存在才能刷新,没有就终止了
rpm -Uvh[install-options] PACKAGE_FILE ...
rpm -Fvh[install-options] PACKAGE_FILE ...
--oldpackage:降级安装;
--force:忽略冲突,强制执行过程;
注意:如果原程序包的配置文件安装后曾被改动,升级时,新版本的文件并不会直接覆盖老版本的文件,而是把新版本的文件重命(加后缀.rpmnew)名后保留;如果想使用之前的配置文件则将新生成的配置文件删除,并重命名之前的文件即可
卸载:
移除已安装的程序包;
rpm {-e|--erase} [--nodeps] [--test] PACKAGE_NAME ...
rpm -e PACKAGE_NAME ...
--nodeps:卸载的包可能被其他的包所依赖,忽略依赖关系,强行卸载
-test:卸载测试,不真的执行卸载操作,只是测试,会显示详细的卸载过程
注意:如果包的配置文件安装后曾被改动过,卸载时,此文件将不会删除,而是被重命名(原文件加.rpmsave后缀)并保留;这样再次安装后,只需要把新的配置文件删除,将之前的配置文件重命名即可使用之前的配置了
查询:
检查某包是否已经安装,或检查安装的所有包
rpm{-q|--query} [select-options] [query-options][select-options]:
1、查询某包是否安装:
rpm-q PACKAGE_NAME ...
2、查询已安装的所有包:
rpm-qa
这只是安装的一部分
3、查询某文件是由哪个包安装生成:
rpm-qf /path/to/somefile
4、查询尚未安装包的相关信息:
rpm-qpl PACKAGE_FILE
-l:表示列出安装之后会生成的文件
rpm-qpi PACKAGE_FILE
这个显示了包名字、大小、协议、创建日期、作用等很多信息。
5、查询已安装某包的简要说明信息
rpm-qi PACKAGE_NAME
只是比上面的少了一个-q选项
6、查询某包安装后生成的所有文件的列表
rpm-ql PACKAGE_NAME
文件太多不一一列出了
7、查询某包安装后生成的所有配置文件的列表
rpm-qc PACKAGE_NAME
8、查询某包安装后生成的所有帮助文件的列表
rpm-qd PACKAGE_NAME
9、查询某rpm包制作时随版本变化的changelog列表信息
rpm-q --changelog PACKAGE_NAME
10、查询某包提供的文件;
rpm -q --provides PACKAGE_NAME
11、查询某包所依赖的文件
rpm-q --requires PACKAGE_NAME
12、查询某包安装卸载时的脚本
rpm -q--scripts PACKAGE_NAME
上面显示出程序安装卸载时会执行的脚本,有创建用户的,有创建组的,更改权限等,安装卸载脚本有四种:
preinstall: 安装前执行的脚本
postinstall: 安装后执行的脚本
preuninstall:卸载前执行的脚本
postuninstall:卸载后执行的脚本
校验:
检查包安装之后生成的文件是否发生了改变
rpm{-V|--verify} [select-options] [verify-options]常用用法:
rpm -V PACKAGE_NAME
文件安装后并没有改变其文件
S file Size differs # 文件大小发生了改变
M Mode differs (includes permissions and file type) # 文件权限发生了改变(包含文件类型变化)
5 digest (formerly MD5 sum) differs # MD5发生变化, 即文件已经改变
D Device major/minor number mismatch # 设备号改变
U User ownership differs # 所属主发生改变
G Group ownership differs # 所属组发生改变
T mTime differs # 修改时间发生改变,即文件被修改
包来源合法性及完整性验正:
rpm --import PUBKEY ...导入key
rpm {-K|--checksig}[--nosignature] [--nodigest] PACKAGE_FILE ...--nosignature: 不检查来源合法性
--nodigest: 不检查完整性
公共数据库:/var/lib/rpm
重建数据库
rpm {--initdb|--rebuilddb}
初始化:--initdb
如果事先不存在数据,则会新之;否则,不执行任何操作
重新构建:--rebuilddb
无论当前是否已经存在数据库,都会直接重建并覆盖现有数据库;
Linux程序包管理之yum
yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yumrepository: yum仓库:存储了众多rpm包,以及包的相关元数据的文件(放在repodata目录中)服务器,yum仓库可以是web服务器、ftp服务器、nfs、本地文件。
yum客户端:
配置文件:指向仓库的位置以及各种配置信息;每个yum客户可以有多个可用的yum仓库,有两部分组成:
主配置文件:/etc/yum.conf
/etc/yum.repos.d/*.repo
仓库定义:
[REPO_ID] # 仓库id
name=REPOdescription # 仓库描述
baseurl=ftp://172.16.x.x/pub/CentOS6/#指向仓库的地址,
enabled={1|0}# 是否可用
gpgcheck={1|0}# 是否开启gpg检查
gpgkey=ftp://172.16.x.x/pub/CentOS6/gpg-key
yum仓库相关的命令:
列出所有可用仓库:
yum repolist
缓存管理:
yum clean {all|packages}:清除缓存
yum makecache:生成缓存安装:
yum install PACKAGE_NAME...:安装指定名字的包 1yum installPACKAGE-VERSION:如果要安装指定的版本的程序 yum reinstall PACKAGE_NAME...:重装指定的程序包
升级:
yum update PACKAGE_NAME:升级指定名字的包 yum update PACKAGE-VERSION:如果有多个版本的升级包可用,且仅期望升级到指定版本 yum downgrade PACKAGE_NAME:降级 yumcheck-update:检查可用升级
卸载:
yum erase|removePACKAGE_NAME:依赖于指定程序包的其它包,会被一并卸载
查询
yum info PACKAGE_NAME:查看指定包的信息 yum search KEYWORD: 根据关键字模糊查询包名或包的sumary信息包含此KEYWORD的相关列表; yumprovides|whatprovides /path/to/somefile:查看某文件是由哪个文件提供的
包组管理:
yum grouplist:显示所有包组,分为已安装包组、已安装语言包、可用包组、可用语言包。 yum groupinfo"GROUP_NAME":显示某包组的相关信息: yum groupinstall"GROUP_NAME" yum install @GROUP_NAME:安装包组
卸载包组:
yum groupremove"GROUP_NAME" yum remove@"GROUP_NAME":卸载指定名字包组
升级包组:
yum groupupdate"GROUP_NAME" yum命令还可用安装本地rpm包文件: yum localinstall/path/to/rpm_package_file ... CentOS7: yum install /path/to/rpm_package_file ...
选项:
--enablerepo=
--disablerepo=
注意:优先级高于/etc/yum.repos.d/*.repo配置文件中定义的属性;
-y: 自动回答为yes
--nogpgcheck
如何构建yum仓库:
createrepo
yum客户端配置的高级用法:
1、在yum客户定义仓库时可使用cost定义仓库的使用开销,默认为1000;
2、baseurl中指定路径时可使用变量
$releasever: 当前OS发行版的主版本号
$arch: 平台
$basearch: 基础平台,例如i686,i586,i486,i386系列的基础平台都是i386;
$YUM0-$YUM9
例如:http://mirrors.sohu.com/centos/$releasever/os/$basearch
3、可以使用mirrorlist指令替换baseurl:
指向一个URL,此URL是一个文本文件,其中保存了大量镜像服务器列表;用户使用yum仓库时,会获取此列表文件,而后通过fastestmirror插件判断哪一个镜像为访问速度最快的服务器,并以之做为本次访问的baseurl




























