程序包管理器: 源代码 --> 目标二进制格式(二进制程序,库文件,配置文件,帮助文件)-->组织成为一个或有限几个“包”文件; 安装,升级,卸载,查询,校验

安装: -ivh, --nodeps, --replacepkgs
卸载: -e, --nodeps
升级:-Uvh , -Fvh , --nodeps, --lodpackage
查询:-q, -qa , -qf , -qi , -qd , -qc ,-q --scripts,  -q --changlog, -q --provides, -q --requires
校验:-V


	
	程序包管理器:
	
				debian : dpt, dpkg, ".deb"
				redhat: rpm
				S.U.S.E: rpm
				
				Gentoo: ports
				Archlinux:
				
				
		源代码:name-VERSION.tar.gz
				VERSION:major.minor.release
				
			rpm包命名格式:
					 name-VERSION-release.arch.rpm
							 VERSION:major.minor.release
							 release.arch:rpm包的发行号
									 relae.os:2.ei7.i386.rpm
									 archetecture:i386,x64(amd64),ppc,noarch
									 
							redis-3.0.2.targz -->	redis-3.0.2-1.centos7.x64.rpm
				
		拆包:	主包和支包
					主包:name-VERSION-release.arch.rpm
					支包:name-function-VERSION-release.arch.rpm

前端工具:自动解决依赖关系; yum:rhel系列系统上rpm包管理器的前端工具; apt-get(apt-cache):deb包管理器的前端工具; zypper:suse的rpm管理器的前端工具; dnf:Fedord 22+ 系统上rpm包管理器的前端工具;


程序包管理器:
				功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装,升级,卸载和查询等管理操作;
				
		1.程序包的组成清单(每个程序包都单独实现);
					文件清单
					安装或卸载时运行的脚本
			2.数据库(公共)
						程序包的名称和版本
						依赖关系
						功能说明
						安装生成的各文件的文件路径及校验码信息

rpm包的数据库 [root@Centos7ip11 ~]# ls /var/lib/rpm Basenames __db.002 Group Obsoletename Requirename Triggername Conflictname __db.003 Installtid Packages Sha1header __db.001 Dirnames Name Providename Sigmd5

获取程序包的途径: 1.系统发行版的光盘或官方的文件服务器(或镜像站点); http://mirrors.aliyun.com http://mirrors.sohu.com http://mirors.163.com

			2.项目的官方站点
			3.第三方组织
						a.EPEL
						b.搜索引擎
										https://pkgs.org/
										http://www.rpmfind.net
										http://rpm.pbone.net
				4.自动动手,

建议:检查其合法性
			来源合法性
			程序包的完整性

Centos系统上rpm命令管理程序包: 安装,升级,卸载,查询和校验,数据库维护

http://www.runoob.com/linux/linux-comm-rpm.html

安装: [root@Centos7ip11 ~]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm

				rpm命令: 
				
						选项: 
						
								安装:-i, --install 
								升级:-U,--update, -F,--freshen
								卸载:-e,--erase
								查询:-q,--query
								校验:-V,--verify
								数据库维护:--builddb,--initdb
								
								-h: bash marks输出进度条;每个#表示2%的进度;
								--test:测试安装,检查并报告依赖关系及冲突消息等;
								--nodeps:忽略依赖关系;不建议;
								--replacepkgs:重新安装
								
								注意:rpm可以自带脚本;
											四类: 都不执行 --noscripts
													preinstall:安装过程开始之前运行的脚本,%pre , --nopre
													postinstall:安装过程完成之后运行的脚本,%post , --nopost
													preuninstall:卸载过程真正开始执行之前运行的脚本,%preun , -- nopreun
													postuninstall:卸载过程完成之后运行的脚本,%postun , --nopostun
													
													
													--nosignature:不检查包签名信息,不检查来源合法性;
													--nodigest:不检查包完整性信息;

升级:

						[root@Centos7ip11 ~]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm 
						[root@Centos7ip11 ~]# rpm -Fvh zsh-5.0.2-28.el7.x86_64.rpm
		
				选项:
						-U : 升级或安装;
						-F:升级
					
							--oldpackage :降级;
							--force:强制升级;
							
			注意:
				1.不要对内核做升级操作;linux支持多内核版本并存,因此,直接安装新版本内核;
				2.如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个牌子文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

	卸载:
		
			选项:
					-e, --erase:卸载
					--allmatches:卸载所有匹配指定名称的程序包的各版本;
					--nodeps:忽略依赖关系
					--test:测试卸载,dry run模式

实例: [root@Centos7ip11 ~]# rpm -q zsh zsh-5.0.2-28.el7.x86_64 [root@Centos7ip11 ~]# rpm -e zsh


查询: rpm {-q|--query} [select-options] [query-options]

		选项:
		
		[select-options]
		
				-a, --all:查询所有已经安装过的包;
				-f FILE:查询指定的文件由哪个程序包安装生成;
				-p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
				
				--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
				--whatrequires  CAPABILITY:查询指定的CAPABILITY 被哪个包依赖;
				
		
	[query-options]	
						--changelog:查询rpm包的changlog;
						-l,--list:程序安装生成的所有文件列表;
						-i,--info:程序包相关的信息,版本号,大小,所属的包组,等;
						-c,--configfiles:查询指定的程序提供的配置文件;
						-d,--docfiles:查询指定的程序包提供的文档;
						-provides:列出指定的程序包提供的所有的CAPABILITY;
						-R,--requires:查询指定的程序包的依赖关系;
						--scripts:查看程序包自带的脚本片段;
						

	用法:
			-qi
			-qf
			-qc
			-ql
			-qd
			-qpi
			-qpl

实例:

				[root@Centos7ip11 ~]# rpm -q --whatprovides bash
				bash-4.2.46-31.el7.x86_64

				[root@Centos7ip11 ~]# rpm -q --provides bash
				/bin/bash
				/bin/sh
				bash = 4.2.46-31.el7
				bash(x86-64) = 4.2.46-31.el7
				config(bash) = 4.2.46-31.el7

校验: rpm -V|-y|--verify [verify-options]

					 5      MD5校验和

					 S      文件大小

					 L      符号连接

					 T      修改时间

					 D      设备

					 U      用户

					 G      组

					 M      模式(包括许可和文件类型)

	包来源合法性验证和完整性验证:
					
						来源合法性验证:
						完整性验证:
						
				获取并导入信任的包制作者的密钥:
								对于CentOS发行版来说:rpm --import  /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
								
				验证:
						1.安装此组织签名的程序时,会自动执行验证;
						2.手动验证:rpm -k PACKAGE_FILE

数据库重建: rpm管理器数据库路径:/var/lib/rpm/ 查询操作:通过此处的数据库进行;

			rpm    {--initdb | --rebuilddb} {--dbpath DIRECTORY} [--root DIRECTORY]
			
			  对这些模式唯一的选项是--dbpath
				
			
			  --initab: 初始化数据库,当前无任何数据库可实现初始化创建一个新的;当前有时不执行任何操作;
				--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;
				
		
					~]# rpm --initdb --dbpath=/tmprpm