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

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.rpm

RPM包的依赖关系:

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:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

时间: 2024-10-25 19:59:16

linux自学笔记——rpm程序包管理的相关文章

Linux系统管理-(8)-RPM程序包管理器

Centos下RPM程序包管理器:     安装:     rpm {-i|--install} [install-options] PACKAGE_FILE ...            -v: 显示过程            -vv:  显示更详细的过程            -h: 以#显示程序包管理执行进度:每个#表示2%的进度          其他选项: --test 测试安装 --nodeps:忽略依赖关系:                    --replacepkgs: 重新

Linux学习笔记:rpm程序包管理

以CentOS为例,rpm程序包管理器的相关内容如下: CentOS的程序包管理器:    程序包的命名规则:        源代码包:            software_name-VERSION.tar.gz            VERSION:major.minor.release                major:主版本号,通常代表重大功能改进的版本分支:                minor:次版本号,通常代表在某个版本的分支中的某个功能发生变化:          

linux程序包管理之rpm程序包管理器与yum前端工具

这里主要讲以CentOS为例,rpm程序包管理器的相关内容: CentOS的程序包管理器:   1) 程序包的命名规则:        源代码包:            software_name-VERSION.tar.gz            VERSION:major.minor.release                major:主版本号,通常代表重大功能改进的版本分支:                minor:次版本号,通常代表在某个版本的分支中的某个功能发生变化:     

Linux之Redhat系列程序包管理

安装.升级和卸载应用软件是每个系统不可或缺的一部分:对于在企业使用越来越广泛的Linux操作系统而言,强大而简洁的程序包管理机制为工程师们带来了很大的便利:下文主要介绍在RedHat系列的系统上如何使用RPM/YUM/编译三种方式去管理程序包. 一.RPM程序包管理 PRM全称是Red Hat Package Manager(RedHat 包管理器).Linux RPM软件包的命名有一定的规律:名称-版本-修正版-类型.rpm 例如: RPM命令详解: 功能: 安装.卸载.升级.查询和数据库维护

RPM程序包管理以及yum的应用

在早期我们使用源代码的方式来安装软件时,都需要先把源程序代码编译成可执行的二进制安装程序,然后进行安装.这就意味着每次安装软件都需要经过预处理-->编译-->汇编-->链接-->生成安装文件--> 安装,这个复杂而艰辛的过程.为简化安装步骤,便于广大用户的安装部署程序,程序提供商就在特定的系统上面编译好相关程序的安装文件并进行打包,提供给大家下载,我们只需要根据自己的系统去下载相应的安装包进行安装即可,其类似 Windows 的安装方式,由程序开发者直接在已知的系统上面编译好

RPM程序包管理

RPM的全名"RedHat Package Manager",当初这个是RedHad公司开发的一款程序包管理套件,随着RPM的不断完善,RPM逐渐成为众多linux发行版程序包管理器的代名词,那什么是RPM,为什么会用到RPM这个程序包管理工具那,接下来我一一揭晓. RPM是以一种数据库记录的方式将所需要的软件安装到linux主机的一套管理程序,最大的特点就是将需要的软件先编译并打包,通过包装好的套件中默认的数据库记录,来记录这个套件在安装的时候需要依赖的属性模块.知道是RPM是什么,

RPM 程序包管理详解

CentOS系统上rpm命令管理程序包 一.rpm程序包管理分为安装.升级.卸载.查询和校验.数据库维护 rpm程序包的安装 rpm命令后加的选项参数有: rpm -ivh ,程序包的安装工作,后面直接接要安装的程序包名称;例如: [[email protected] Packages]# rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm  准备中...                          #################################

linux rpm程序包管理器

在linux中的应用程序结构形式分为三种:1)源代码形式2)二进制形式3)程序包形式其中源代码是最权威的,二进制形式经过了一系列的编译.汇编.连接等等其他操作得到可以执行的程序及其他相关的文件,而程序包形式则是二进制形式进一步进行操作,使之可以自动安装程序包中的所有文件,当然在卸载的时候,也可以一并删除:一般来说,我们对于程序包形式的程序的操作比较常用.比较方便. 有了程序包之后,我们就需要程序包管理器来管理程序包,借此来方便终端用户的安装.卸载.升级.安装信息查询及校验等工作: 我们在这只说R

rpm程序包管理器详解

1. 程序包管理器的功能 我们知道,由程序员编写并提供的程序源代码要转换成目标二进制格式才能在计算机上运行起来,但用户要在平台上使用时需要手动编译安装后才能使用,对于普通用户来说有一定难度.因此为了降低普通用户对应用程序的使用难度,程序员可在提供源代码的同时提供已在特定环境下编译好的程序文件,只要用户的平台环境和程序员的平台环境相同,就可以通过解压程序员提供的二进制格式文件即可使用,而无需自己手动编译安装. 一个已编译好的程序由二进制程序.库文件.配置文件和帮助手册等组成,而程序包管理器的功能就