第五十四讲——软件包管理 本文共有36215个字,关键词: 软件包管理器其实也是一个程序。 包管理器应当具有一下几个功能: 打包:二进制程序、库文件、配置文件、帮助文档(制作软件包)。 安装:按需展开软件包 生成数据库,追踪所安装的每一个文件 卸载 查询、升级、校验 市面上较主流的发行版:red hat,SUSE,Debian red hat、SUSE:RPM(包管理器) Debian:dpt(包管理器) RPM:redhat package manager RPM后改名为:RPM is package manager递归缩写 redhat 和SUSE的包管理器虽然一样,但是软件包不能混用,因为redhat与SUSE组织文件系统路径的方式不同。 软件包管理有一个很头疼的问题:包之间的依赖关系。 后端工具:RPM、DPT 前端工具:yum、apt-get yum是一个基于redhat的二次发行版yellowdog中带的功能。 yum:yellowdog update modifier yum能够解决rpm的依赖关系,但是不是说yum就能够脱离rpm,而是给rpm提供一个更高级的工具。 rpm包管理器 制作rpm包 安装、卸载、升级、查询、校验 在安装时会生成数据库,追踪所安装的每一个文件,生成的数据库在/var/lib/rpm。一般而言,数据库都是hash编码的形式,这样查找的速度会块得多。如果rpm管理器的数据库损坏,软件的查询、升级、卸载等功能会受到影响。因此,不仅仅是安装、查询、卸载、升级、校验、还包括数据库的重建,验证数据包。 我们在服务器上安装软件时,应当确定软件的来源,不要使用盗版软件,并且要确定没有被修改过。 我们在删除一个软件包时,不得不手动去解决一些依赖关系 rpm包管理 rpmbuild创建软件包 rpm也是一个软件,也需要进行安装。 rpm包的命名: 包的组成部分(以bind为例) 主包:bind-9.7.1-1.el5.i386.rpm 子包:bind-libs-9.7.1-1.el5.i386.rpm 包名的格式: name - version - release . arch . rpm 包名 -版本号(主.次.开发者的) - 释放号(发行号).平台架构.rpm后缀 major:主版本号,重大改变 minor:次版本号,某个子功能发生变化。 release:修改了BUG或者整合了一点功能,不影响全局。 rpm包为二进制的包(方便安装管理) 还有有源码格式的包,需要动手编译安装。 我们所下载的软件包需要与CPU(硬件平台)和操作系统(软件平台)相匹配。 平台架构为noarch时表示安装包与平台无关。 uname –r 查看平台的版本(系统的版本) -a 查看完整平台版本(系统和硬件) rpm –i(install) /path/to/package_file(指定包所在目录) -h 在安装的时候以‘#’, 50个“#”显示安装进度,每个“#”表示2%。 -v(version) 显示详细的信息 -vv 更详细的信息 rpm -ivh /path/to/package_file --nodeps:忽略依赖关系,这会导致软件可能无法安装 --force 强行安装(无论是重新安装,还是降级操作) --force包含一下三个命令: --replacepkg:重新安装,替换原有安装 --replacefiles 替换文件 --oldpackage 降级安装 --test 测试是否需要解决依赖关系,不安装。 rpm查询:已安装的包依赖数据库查询 rpm -q 包名 查询指定的包是否已经安装 rpm -qa 显示当前系统安装的所有包 rpm -qi package name 查询指定包的的相关信息 rpm -ql package name查询指定包安装后生成的文件列表。 rpm -qf /path/to/somefile 查询某个指定的文件是由哪个rpm包安装生成的。 rpm -qc package name 查询指定软件包的安装配置文件(已安装) rpm -qd package name 查询指定包安装的帮助文件 rpm -q --scripts packages name 查询指定包中包含的脚本。脚本有四类:安装前(准备工作)、安装后(收尾工作)、卸载前、卸载后 如果某个软件包尚未安装,我们需要查询其说明信息,安装后会生成的文件,查询命令如下: rpm -qpi 查询安装包的相关信息。 rpm -qpl 查询安装包安装后生成的文件列表 rpm -qpc 查询安装包安装后的配置文件 rpm -qpd 查询安装包的帮助文件 rpm -qp –scripts 查询安装包中包含的脚本 rpm包升级 rpm –Uvh 包全名(新版本)如果有老版本则安装升级,窦泽进行安装。 rpm –Pvh 包全名,如果装有老版本则升级,否则退出,升级后可能导致其它的软件不能够使用,否则只能降级。 -Uvh/-Pvh 通常与—ddpackage使用(降低) rpm包卸载,卸载的前提是安装了相应的安装包。 rpm -e 包名卸载时应确定没有其他软件依赖。 --nodeps强行卸载(其它依赖的软件无法正常使用) 校验: -V(大写) rpm –V 包名 有8个校验位: S:文件大小发生改变 M:权限发生改变,文件类型发生改变 5:MD5 sum发生改变 D:设备文件的主/次号不匹配 L:路径不匹配 U:属主不匹配 G:属组不匹配 T:最近一次修改时间发生改变。 校验来源合法性,及软件完整性 使用非对称加密算法:公钥、私钥,公钥隐含在私钥当中,可提取出来并公开出去。 单项加密:提取特征码,具有不可逆的特性。 我们先使用单项加密将软件的特征码提取出来,并用私钥加密(使用私钥加密过程很慢),当我们要验证的时候通过公钥解密并比对特征码。 /etc/pki/rpm-gpg/中存放了密钥文件。将文件导入密钥文件,rpm命令中就可以完成验证。 rpm -k 包全名 验证安装包是否合法。 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 导入密钥文件 rpm -K(大写) 包全名 验证安装包是否合法。 dsa,gpg验证来源的合法性,即验证签名。 sha1,md5验证软件包的完整性,也可以使用—nodigest略过此项 重建rpm数据库: rpm --rebuilddb:重建数据库 --initdb:初始化数据库(没有校验位就不建立) 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2017-01-23 评论 1593 次浏览