RPM软件包管理之一二_2019.05.07.08_12:00-13:00:21:00-23:00_mage_linux_log


源程序–>编译–>链接–>可执行文件

程序:指令+数据

指令最终转换为cpu可执行的指令:
普通指令
特权指令

源程序会依赖于某些库:库一般不包含数据,只是一些功能模块,都是指令
linux中.so(shared object)
	静态库
	动态库
链接:
	静态链接:将所依赖的库直接打包放到源程序中
	动态链接:利用共享库

一般程序在内存运行后,其在内存中大致内容如下:

代码段text
数据段data+bss
heap:堆
堆向下增长(内存空间)
栈向上增长(内存空间)
stack:栈(包括本地变量等)

配置文件:说白了都是一些本地的变量
eg:dir=/path/to/somewhere
系统启动去读取变量的值加载进相应的程序和服务中

linux中一般程序的组成部分

linux中一般程序的组成部分:

二进制程序
库(非前面提到的共享库,为程序本身对外提供的调用接口库)
配置文件
帮助文件
linux文件目录
/boot
/etc
/usr
/var
/dev
/lib
/tmp
/bin
/sbin
/proc
/sys
/mnt
/media
/home
/root
/misc
/opt
/srv
其中:
/usr/share/man #帮助文件
/etc,/bin,/sbin,/lib `#系统启动就需要使用到的目录(程序),这些路径不能挂载额外分区,必须在根文件系统的分区上`

/usr/  `#提供操作系统核心功能,可以单独分区`
	bin
	sbin
	lib
	
/usr/local/  `#安装的第三方软件,外围软件`
		bin
		sbin
		lib
		etc
		man

/proc #不能单独分区,默认为空;伪文件系统
/sys  #不能单独分区,默认为空;伪文件系统
		
/dev #设备,不能单独分区

/root #不能单独分区

/var #建议单独分区

/boot #内核,initrd(initramfs),单独分区
linux大致启动过程:POST-->BIOS(HD)-->bootloader(MBR)(要能识别文件系统结构,ext3,ext4)-->Kernel
linux软件包管理

软件包管理器:
1.将二进制文件,库文件,配置文件,帮助文件等打包为一个文件;
2.生成数据库,跟踪所安装的每一个文件
软件包管理器的核心功能:
1.制作软件包;
2.安装、卸载、升级、查询、校验;

Redhat,SUSE:RPM(Redhat Package Manager,后来改名RPM is Package Manager)
Debian:dpt

rpm包管理的难点,依赖关系:
比如:x的运行依赖于y的某些功能,y依赖于z的某些功能
x–>y–>z

前段工具:yum,apt-get #解决依赖关系
后端工具:RPM,dpt #管理软件包

yum:Yellowdog Update Modifier #依赖于redhat的二次发型版软件包管理器

rpm命令
rpm:
数据库:/var/lib/rpm
rpmbuild:
rpm工作包括:安装、卸载、升级、查询、校验、数据库的重建、验证数据包等工作;

rpm包命名:

包:组成部分:主包,子包
    命令格式:name-version-release.arch.rpm
    	 bind-major.minor.release-release.arch.rpm #第一个release表示源程序版本,第二个release表示rpm包版本
    	 major主板本号:重大改进
    	 minor次版本号:某个子功能发送重大变化
    	 发行号:修正部分bug,调整部分功能
	主包:eg:bind-9.3.2-1.i586.e15.rpm
	子包:eg:bind-libs-9.3.2-1.i586.e15.rpm/bind-utils-9.3.2-1.i586.e15.rpm

rpm包格式:

	二进制格式:安装简单;由rpm包作者下载源程序,编译配置完成后制作为rpm包
	eg:bind-9.3.2-1.i686.rpm
	   bind-9.3.2-1.noarch.rpm #无平台限制
	源码格式:编译安装,更好发挥硬件性能

rpm命令:

`1,安装`
rpm -i /PATH/TO/PACKAGE_FILE
	-h: # 以#显示进度,每个#号表示2%;
	-v:显示详细过程
	-vv:显示更详细的过程
rpm -ivh /PATH/TO/PACKAGE_FILE	
	--nodeps:忽略依赖关系
	--replacepkgs:重新安装,替换原有安装
	--oldpackage:安装时,允许旧版本替换新版本
	--force:强制安装,可以实现重装或者降级安装

`2,查询`
rpm -q PACKAGE_NAME
rpm -qa :查询已经安装的所有包
rpm -qi PACKAGE_NAME:查询指定包的说明信息
rpm -ql PACKAGE_NAME:查询指定包安装后生成的文件列表
rpm -qc PACKAGE_NAME:查询指定包安装的配置文件列表
rpm -qd PACKAGE_NAME:查询指定包安装的帮助文件
rpm -q --scripts PACKAGE_NAME:查询指定包中包含的脚本	
rpm -qf /path/to/somefile:查询指定文件是由哪一个rpm包安装的

如果某rpm包尚未安装,我们需要查询其说明信息、安装以后会生成的文件等信息,则:
rpm -qpi /PATH/TO/PACKAGE_FILE	#信息
rpm -qpl /PATH/TO/PACKAGE_FILE	#安装后生成的文件列表 

`3,升级`
rpm -Uvh /PATH/TO/PACKAGE_FILE :`如果装有老版本的,则安装;否则,重装`
rpm -Fvh /PATH/TO/PACKAGE_FILE :`如果装有老版本的,则安装;否则,退出`

`4,卸载`
rpm -e PACKAGE_NAME
	--nodeps

`5,校验`
rpm -V PACKAGE_NAME

`6,重建数据库`
ls /var/lib/rpm/
rpm --rebuilddb #重建数据库,一定会重建数据库
	--initdb  #初始化数据库,没有才建立,有就不用建立


`7,检验来源合法性,及软件包完整性`
回忆加密类型:
	对称加密:加密解密使用同一个密钥
	公钥加密:一对密钥:公钥,私钥;公钥隐含于私钥中,可以提取出来并公开出去
	单向加密:

ls /etc/pki/rpm-gpg
RPM-GPG-KEY-redhat-release
rpm -K /PATH/TO/PACKAGE_FILE #检查是否合格(签名与完整性)
	dsa,gpg:来源合法性
	shal,md5:验证软件包完整性,使用--nodigest略此项
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release #导入密钥文件

校验错误提示:
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 differ

rpm -V
检验来源合法性,及软件包完整性
rpm -K

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值