• 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:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新构建;
  • 相关阅读:
    解决在cmd命令下不能输入中文方法
    报错注入
    html表单中的name属性和value属性
    xss漏洞
    DVWA-xss反射型(跨站脚本漏洞)
    DVWA-brute force
    owsap top 10 2017(十大web安全应用程序安全)
    sqli_labs less-5
    盲注
    c++ 类
  • 原文地址:https://www.cnblogs.com/yachengmuCC/p/16156804.html
Copyright © 2020-2023  润新知