ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

rpm管理包笔记

2022-04-18 21:00:06  阅读:148  来源: 互联网

标签:PACKAGE -- 管理 程序包 笔记 查询 FILE rpm


rpm管理包

Linux程序包管理

API:Application Program Interface
ABI:Application Binary Interface
	Unix-like,
		ELF
	Windows
		exe,msl
		
	库级别的虚拟化:
		Linux:WinE
		Windows:Cywin
		

系统及开发
	C/C++:httpd,vsftpd,nginx
应用级开发
	java/Python/perl/ruby/php
		java:hadoop,hbase,(jvm)
		Python:openstack,facebook,(pvm)
		perl:(perl)
		ruby:(ruby)
		php:(php)
		

C/C++程序格式:
	源代码:文本格式的程序代码;
		编译开发环境:编译器,头文件,开发库
	二进制格式:文本格式的程序代码-->编译器-->二进制格式(二进制程序,库文件,配置文件,帮助文件)


java/python程序格式:
	源代码:编译成能够在其虚拟机(jvm/pvm)运行的格式;
		开发环境:编译器,开发库
	二进制
	
	
项目构建工具:
	C/C++:make
	java:maven

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

程序包管理器:
	debian:dpt,dpkg,".deb"
	redhat:rpm[redhat package manager],".rpm";	rpm is package manager
	S.u.S.E:rpm,".rpm"
	
	
源代码:name-VERSION.tar.gz
	VERSION:major.minor.release
rpm包命名格式:
	name-VERSION-release.arch.rpm
		VERSION:major.minor.release
		release.arch:rpm包的发行号
			release.os:2.el7.i386.rpm
			archetecture:i386,x64(amd64),ppc,noarch
			
		如:redis-3.0.2.tar.gz-->redis-3.0.2-1.centos7.x64.rpm
		
		
	拆包:主包和子包
		主包:name-VERSION-release.arch.rpm
		子包:name-function-VERSION-release.arch.rpm
			function:devel,utils,libs,...
			
			
依赖关系:
	X,Y,Z
		
		X-->Y,Z
			Y-->A,B,C
			C-->Y

	前端工具:自动解决依赖关系;
		yum:rhel系列系统上rpm包管理器的前端工具;
		apt-get(apt-cache):deb包管理器的前端工具;
		zypper:suse的rpm包管理器的前端工具;
		dnf:Fedora 22+系统上rpm包管理器的前端工具;
		
程序包管理器:
	功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装,升级,卸载和查询等管理操作;
	
	1.程序包的组成清单(每个程序包都单独实现);
		文件清单
		安装或卸载时运行的脚本
	2.数据库(公共)
		程序包的名称和版本;
		依赖关系;
		功能说明;
		安装生成的各文件的文件路径及校验码信息;
		等等等
		
		/var/lib/rpm/



获取程序包的途径:
	1.系统发行版的光盘或官方的文件服务器(或镜像站点)
		http://mirrors.aliyun.com
		http://mirrors.sohu.com
		http://mirrors.163.com
	2.项目的官方站点:
		EPEL
		搜索引擎
			http://pkgs.org
			http://rpmfind.net
			http://rpm.pbone.net
		自己动手,丰衣足食
		
		建议:检查其合法性				
			来源合法性
			程序包的完整性

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




		升级:
			rpm {-U|--upgrade}{install-options}PACKAGE_FILE...
			rpm {-F|--freshen}{install-options}PACKAGE_FILE...
			
				-U:升级或安装
				-F:升级
				
				rpm -Uvh PACKAGE_FILE...
				rpm -Fvh PACKAGE_FILE...
				
					--oldpackage:降级;
					--force:强制升级;
					
				注意:
					1.不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;
					2.如果某原程序包的配置文件安装后曾被修改过,升级时,新程序的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
					
					
		卸载:
			rpm {-e|--erase}{--allmatches}{--nodeps}{--noscripts}{--test} PACKAGE_FILE...
			
				--allmatches:卸载所有匹配指定名称的程序包的各版本;
				--nodeps:忽略依赖关系;
				--test:测试卸载,dry run模式;
				
				
		查询:
			rpm {-q|--query}{select-options}{query-options}
			
				{select-options}
					PACKAGE_FILE:查询指定的程序包是否已经安装,及其版本;
					-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 PACKAGE,  -qf FILE,  -qc PACKAGE,  -ql PACKAGE,  -qd PACKAGE
					-qpi PACKAGE_FILE,  -qpl PACKAGE_FILE,  -qpc PACKAGE_FILE,...
					
					
					
			校验:
				rpm {-V|--verify}{select-options}{verify-options}
				
				
				S file Size differs
				M Mode differs (includes permissions and file type)
				5 digest (formerly MD5 sum) differs
				D Device major/minor number mismatch
				L readLink(2) path mismatch
				U User ownership differs
				G Group ownership differs
				T mTime differs
				P caPabilities differs
				
			包来源合法性验证和完整性验证:
				来源合法性验证:
				完整性验证:
				
				获取并导入信任的包制作者的密钥:
					对于CentOS发行版:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
					
				验证:
					1.安装此组织签名的程序时,会自动执行验证;
					2.手动验证:rpm -l PACKAGE_FILE
					
					
					
		数据库重建:
			rpm管理器数据库路径:/var/lib/rpm/
				查询操作:通过此处的数据库进行;
				
			获取帮助:
				CentOS 6:man rpm
				CentOS 7:man rpmdb
				
				rpm {--initdb|--rebuilddb}{--dbpath DIRECTORY}{--root DIRECTORY}
					--initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作;
					--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新构建;

标签:PACKAGE,--,管理,程序包,笔记,查询,FILE,rpm
来源: https://www.cnblogs.com/yachengmuCC/p/16156804.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有