您的位置:首页 > 运维架构 > Linux

Linux下软件包管理之RPM初始化

2013-07-28 17:24 459 查看
Linux下软件包管理之RPM初始化 简单定义:rpm是linux下的一种包文件,现在用的全称叫RPM Package Manager,以前叫Redhat Package Manager。它是一种安装很方便的包,目前也有很多linux下的软件都以rpm格式发布。但它不是相当于windows中的exe文件,它的安装必须是要通过命令的(就算是rpm包的管理程序,在安装是也是通过命令方式的)rpm包有两种,二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。1、 软件包的组成部分: 1)二进制程序:如:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin2)程序的运行依赖的库文件如:/lib,/usr/lib,/usr/local/bin,2、rpm软件包管理工具包含的文件清单 a)文件清单:b)文件放置路径:c)提供的功能说明d)依赖关系e)数据库:
3、安装程序的方式: a)通用二进制格式b)软件包管理器c)软件包管理器的前端工具d)源代码编译lips:Linux下的rpm包都是经过编译的 ,而编译程序本身依赖CPU对其编译的软件进行优化,有些软件包依赖于平台比如64bit、32bitCPU。4、rpm包组成格式相关说明 RPM:打包、安装、查询、升级、卸载、数据库管理(重建) 1)源程序:name-version.tar.{gz|bz|xz}2)版本号:major.minor.release3)升级:在哪一个版本号上面进行升级4)如:bash-4.3.1.tzr.xz5)RPM包:name-version-release-arch.rpm6)发型号用于标识RPM包本身的发行号,可包含所适用的操作系统 7)arch:主机架构平台 lips:I686、X86_64 ADM64 noarch不依赖于平台 8)RPM分包: 主包:核心包 分包:支包 Bind Bind--level9)OS:安装程序lips:Linux软件包相关下载链接:http://mirros.sohu.com 搜狐镜像站点http://mirrors.163.com/ 网易镜像站点http://rpm.pbone.nethttp://rpmfind.net5、软件包安装来源可靠性和安全性建议RPM包有验证机制:来源的合法性、软件包的完整性
1)、首选光盘上存在的话还是建议用光盘上面的安装包 2)、其次是EPEL,下载下来最好还是要校验下 3)、对来源的合法性是通过公钥加密或者说是非对称加密来验证的,通常使用GPG来实现。 4)、GPG是PGP的开源实现;PGP是一种技术实现。 5)、非对称加密:一般有两个秘钥,Ppublic公钥和S secret私钥 6)、一般来讲使用公钥加密的只能使用与之配对的私钥解密,反之亦然 7)、公钥是从私钥中提取出来的,你只要有私钥,从公钥中可以把私钥提取出来。 8)、非对称加密执行的速度非常慢,所以通常不会用来所数据加密,做数字签名或秘钥交换的。私钥加密特征码,只能用公钥解密,反之亦然 9)只要能解密出来就能验证是合法的啦 10)散列值:单项算法,对比散列值 11)能解密出来说明软件包的来源是合法的, 12)只要是同样的加密算法,计算出来hash码,进行对比匹配即可。6、红帽签名,提供了公钥,RedHat系列官方公钥 lips:安装前的准备步骤: 1)、查看当前系统相关信息:
# lsb_release -a
# uname -a


2)、RHEL6的公钥信息保存在/etc/pki/rpm-gpg/
# ls /etc/pki/rpm-gpg/ -l


3)、导入公钥验证信息
#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release



4)、复制光盘软件到本地
#cp zip-3.0-1.el6.x86_64.rpm /test
#cd  /test
5、检查签名,验证软件包来源合法性
rpm -K zip-3.0-1.el6.x86_64.rpm


校验验证相关小贴士lips:
# rpm -K --nodigest zip-3.0-1.el6.x86_64.rpm
//不检验单项的相关内容(sda1,md5)



# rpm -K --nosignature zip-3.0-1.el6.x86_64.rpm
//不检验签名信息(gpg,dsa)


手把手教你学软件包安装: 从光盘复制软件包到本地安装
# mount /dev/cdrom  /media/cdrom/       //挂载光盘
# cd /media/cdrom/Packages/             //切换到光盘软件包所在目录
#ls
# cp zip-3.0-1.el6.x86_64.rpm  /test/   //复制相关软件包到本地test目录下
# cp zip-3.0-1.el6.x86_64.rpm  /test/   //执行安装
# rpm -K zip-3.0-1.el6.x86_64.rpm   //执行公钥校验软件包来源信息的合法性
# rpm -ivh /test/zip-3.0-1.el6.x86_64.rpm //执行安装


-i --install 安装路径-v -vv -vvv详细信息,V字越多信息越详细-h hash码,也就是警号#显示安装进度,一个警号2%,总共是50个#。Linux rpm软件包安装前的小插曲LipsRPM包具体细节的组成:1)要安装的文件2)要执行的脚本 (pre安装前、post安装后、prenu卸载前、postun卸载后)
# rpm -ivh --test bind-chroot-9.8.2-0.17.rc1.el6.x86_64.rpm
依赖关系lips: 定义:一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系;依赖关系并不是Linux特有的,Windows操作系统中也是同样存在的;比如我们在Windows系统中运行3D游戏,在安装的时候,他可能会提示,要安装Direct 9 ;Linux和Windows原理是差不多的。


RPM依赖的东西叫capacity中文意为能力。rpm的一些基本选项:--nodepends忽略依赖关系,与--replacepkgs(重装)搭配使用--replacepkgs重装软件包重装软件包 --replacegks
# rpm -qa |grep ^zip
# rpm -ivvvh --replacepkgs zip-3.0-1.el6.x86_64.rpm



--force无视冲突
卸载 -e 后面跟软件包名 e----> erase 擦除之意 lips:擦除、抹除之意,只有别的软件或相关进程依赖于某个软件时才提示不能卸载,如果此软件依赖于其他相关软件和进程的话卸载是任何相关提示信息的。升级 -F:old-->new,无old,则不new -U old --->无old,安装new -vh也是常用的组合选项,以显示详细信息的方式安装 关于内核的lips注意:内核不应该升级安装,内核允许多版本并存,多疑可以内核;如果测试一段时间新内核很稳定的话可以直接卸载旧内核,不过还是建议备份哦!升级之后即使新内核不稳定或者无法启动再启用新内核即可;不影响公司正常业务的开展!这是大家要注意的事项哦!
查询 查询:rpm -q |--query包名
# rpm -q zip


#rpm -qa             //查询系统中所有已安装的软件包
# rpm -qi zip        //查询zip软件包的相关信息
lips: rpm包单项加密,所谓单项加密就是提取数据的指纹信息。特点:1)如果原数据一样,结果一定会一样;2)雪崩效应,如果原数据有一点点不同,结果就大大不同;初始条件的微 小改变会引起结果的巨大改变。单项加密会提取数据的特征码,如果,两次提取不一样呢?官方:提取rpm特征码,附加在光盘里面,使用自己的私钥加密。关于对验证签名的简单lips: 1)用官方的公钥解密这段加密的特征码;得到可靠的官方提供的特征码;2)单项加密不可逆,自己再使用同样的方法提取特征码,并比较和解密出来的特征码是否一致;RPM -ql 软件包名 用于显示RPM包安装完成之后在系统上生生成了哪些文件。
# rpm -ql zip


查询rpm包安装生成的文件清单:rpm -ql 包名

查询某文件是由哪个RPM包生成的格式:rpm -qf 文件路径
# rpm -qf /etc/inittab


查询此软件包生成的配置文件格式:rpm -qc 包名 查询包安装生成的帮助文档格式:rpm -qd 包名查询此软件包内置的脚本格式:rpm -q --scripts 包名四个脚本preinstall安装前脚本postinstall安装后脚本preuninstall卸载前脚本postuninstall卸载后脚本 linux RPM包的一些基本扩展 查询尚未安装的包的相关信息格式:rpm -qpi 软件包全名
# rpm -qpi bind-9.8.2-0.17.rc1.el6.x86_64.rpm


校验,前面已经写过,这里介绍其他的校验方法 定义:检查rpm包安装生成的文件有没有被非法改变过。格式:-Vpkgname
# rpm -V zip


# rpm -ql zip 查看此文件生成了哪些文件
# rpm -ql zip
# echo "i love linux" >> /usr/share/doc/zip-3.0/algorith.txt
# rpm -V zip


-V选项信息的基本说明
S表示size大小之意LReadlink路径不匹配
M表示权限为改变U属主改变
5Md5特征码之意G属组改变
D主次设备号不匹配T最近一次的修改时间
Rpm包数据库
# ls /var/lib/rpm/ -l    //RPM数据库文所在路径


RPM数据库重建
RPM数据库在使用过程中出现丢失或者损坏的情况下需要重建数据库,以保证系统中RPM软件包的正常运行。
#rebuild initdb //重新初始化丢失了的库
rebuilddb重建,无论事先是否存在#rpm –rebuilddb //在rpm数据库已破坏且不能安装软件包的时候使用 至此,linux RPM软件的基本管理暂且写到此处,难免会有错误和遗漏之处,请大家多提出意见和建议,谢谢。本文出自 “Linux运维” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: