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

linux自学笔记——rpm程序包管理

2017-08-10 17:02 169 查看
RPM是Redhat PackageManager(RPM程序包管理器)的缩写,这一文件格式名称虽然打上了Redhat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、Suse以及Turbo Linux的分发版本也都有采用。RPM程序包管理器可分为安装、升级、卸载、查询、校验等五种功能,以下我们将会对这五种功能的相应的用法一一说明。 RPM程序包: 源代码:name-VERSION.tar.gz 源代码由RPM自动编译安装; VERSION: major.minor.release 主版本号.次版本号.源代码的发行版本号RPM包的命名格式: name-VERSION-release.arch.rpm VERSION: major.minor.release; release.arch: RPM包的发型号,同时release还包含此包适用的os release.os: 2.e17.i386.rpm archetcture:i386,x64,ppc,noarch 例如:源代码经RPM编译后将会变成如下的包名: redis-3.0.2.tar.gz -->redis-3.0.2-1.centos.x64.rpmRPM包的依赖关系: X,Y,Z X--? Y,Z (X依赖于Y,Z)即要想安装X包,必须首先安装Y,Z这两个程序包; 当然,也有一些前端工具可以自动解决依赖关系: yum:rhel系列系统上rpm包管理器的前端工具; apt-get(apt-cache):deb包管理器的前段工具; zypper:suse的rpm管理器的前段工具; dnf:Fedora 22+系统上rpm包管理器的前端工具;程序包管理器: 功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查询等管理操作:1. 程序包的组成清单(每个程序包都单独实现)文件清单安装或卸载时运行的脚本2. 数据库(公共)程序包的名称和版本;依赖关系;功能说明;安装生成的各文件的文件路径及校验码信息;获取程序包的途径:(1) 系统发行版的光盘或官方的文件服务器(或镜像站点):http://mirrors.aliyun.com;http://mirrors.sohu.com;http://mirrors.163.com;(2) 项目的官方站点(3) 第三方组织(a) EPEL(b) 搜索引擎http://pkgs.org;http://rpmfind.net;http://rpm.phone.net; 建议:检查其合法性 来源的合法性; 程序包的完整性;Centos系统上rpm命令管理程序包: 安装、升级、卸载、查询和校验、数据库维护 rpm命令:rpm - RPM Package Manager 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 PACKAGES_FILE … GENERAL OPTIONS: -v:verbose,详细信息; -vv:更详细的输出; [install-options] -h: hash marks输出进度条;每个#号表示2%的进度; --test:测试安装,检查并报告依赖关系及冲突消息等; --nodeps:忽略依赖关系,强烈不建议;

--replacepkgs:重新安装

注意:rpm可以自带脚本: 四类:--noscripts preinstall:开始安装之前运行的脚本,%pre,--nopre postinstall:安装过程完成之后运行的脚本,%post,--nopost preuninstall:卸载过程真正开始执行之前运行的脚本,%preun,--nopreun postuninstall:卸载过程完成之后运行的脚本,%postun,--nopostun --nosignature:不检查包签名信息,不检查来源合法性; --nodigest:不检查包完整性信息;

我们将通过以下实例对rpm的安装功能的用法进行具体说明:1. 首先我们把虚拟机的centos6.6的光盘镜像挂载至本地/media/cdrom中,挂载为只读模式,切查看是否挂载成功;

2. 进入/media/cdrom/Packages目录,安装zsh-4.3.10-7.el6.x86_64.rpm;

查询: rpm {-q|--query} [select-options][query-options] [select-options] PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本; -a,--all:查询所有的已经安装过的包; -f FILE:查询指定的文件由那个程序包安装生成; -p,--packagePACKAGE_FILE:用于实现对未安装的程序包执行查询操作 --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供; --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖; [query-options] --changelog:查询rpm包的changelog; -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: -qlf FILE:查询指定的文件所在的安装包中文件分别被安装到哪个目录下;

升级: 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:强制升级;

可以看出,rpm –U 选项既可以升级也可以安装,而-F选项只能升级。 卸载: rpm {-e|--erase} [--allmatches][--nodeps] [--noscripts] [--test] PACKAGE_NAME ... --allmatches:卸载所有匹配指定名称的程序包的各版本; --nodeps:忽略依赖关系 --test:测试卸载,dry run模式 校验: rpm {-V|--verify} [select-options][verify-options] S file Size differs #文件大小 M Mode differs (includes permissionsand file type) #模式 5 digest (formerly MD5 sum) differs #MD5校验码 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 #性能 例:

包来源合法性验证和完整性验证: 来源合法性验证: 完整性验证: 获取并导入信任的包制作者的秘钥: 对于centos发行版来说:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 验正: (1) 安装此组织签名的程序时,会自动执行验正; (2) 手动验正:rpm -KPACKAGE_FILE 数据库的重建: rpm管理器数据库路径:/var/lib/rpm/

查询操作:通过此处的数据库进行; 获取帮助: Centos6:man rpm Centos7:man rpmdb rpm {--initdb|--rebuilddb} [--dbpathDIRECTORY] [--root DIRECTORY] --initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当时有时不执行任何操作 --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux rpm