RPM 打包学习

简介: rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。

一、介绍


rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。


二、RPM 包与源码包的区别


1. 分类

源码包:C源代码包

rpm包:编译之后的二进制包


2. 比较


源码包

优点:开源;可以自由选择所需功能;可看源代码;卸载方便(直接删除安装位置);

缺点:安装步骤过多;编译时间过长;


RPM包

优点:使用简单,只需要几个命令就可以实现包的安装、升级、查询、卸载;安装速度快; 缺点:不能看源代码;功能选择不如源代码灵活;依赖性;RPM包命名和依赖性


三、 RPM 打包命令


1. spec 文件内容

  • 运行 %prep 部分来将源代码解包到一个临时目录,并应用所有的补丁程序。
  • 运行 %build 部分来编译代码。
  • 运行 %install 部分将代码安装到构建机器的目录中。
  • 读取 %files 部分的文件列表,收集文件并创建二进制和源 RPM 文件。
  • 运行 %clean 部分来除去临时构建目录。
  • %pre 在安装包之前运行
  • %post 在安装包之后运行
  • %preun 在卸载包之前运行
  • %postun 在卸载包之后运行

2. RMP 包命名规则

1、 httpd-2.4.6-67.el7.centos.x86_64.rpm

httpd 软件包名 2.4.6 软件版本 67 软件发行的次数 el7.centos 适合的linux平台 x86_64 适合的硬件平台 rpm rpm包扩展名

2、RPM包的依赖性 树形依赖性:a -> b -> c,即a依赖b,b依赖c 环形依赖:a -> b -> c -> a

3. RPM 基本功能

1、rpm命令用于管理程序包: 主要 作用:安装、升级、卸载、查询、校验、数据库维护

2、rpm具体使用方法


1)语法:rpm[OPTIONS][PACKAGE_FILE]  即 rpm 【选项】【包文件】2)相关选项参数命令安装:-i,--install升级:-U,--update,-F卸载:-e.--erase查询:-q  --query校验:-V,--verify数据库维护:--builddb,--initdb

3、各选项参数详解

(1)安装:


rpm {-i|--install} [install-options] PACKAGE_FILE ..
rpm -ivh PACKAGE_FILE ..(rpm包常规安装命令)
GENEARL OPTIONS:综合选项
 -i:安装
-v: 详细信息
-vv:更加详细的信息
-h:hash marks 输出进度条:50个#表示进度条
--prefix   :安装指定目录
--test:测试安装,检查并报告安装是否完成  --> rpm -ivh --test PACKAGE_FILE ..  
--nodeps:忽略依赖关系,不建议操作  --> rpm -ivh --nodepst  PACKAGE_FILE 
--replacepkgs:重新安装rpm包  --> rpm -ivh --replacepkgs     PACKAGE_FILE 
--nosignature:不检查签名信息,不检查来源合法性
--nodigest:不检查包完整信息:

举列:


[root@localhost leiyuncai]# rpm -ivh zsh- 5.0.2-14.el7.x86_64.rpm
  注意:忽略  --nodeps 依赖关系强制安装可能会导致所安装包不能够正常工作
(2)升级


rpm {-U|--upgrade} [install-options] PACKAGE_FILE ..
rpm {-F|--freshen} [install-options] PACKAGE_FILE ..
-U:  升级或者安装
-F:单纯的升级,如果之前没有rpm包将无法升级
--test:测试安装,检查并报告完成  --> rpm -Uvh --test     PACKAGE_FILE ..       
--nodeps:忽略依赖关系,不建议操作  --> rpm -Uvh --nodepst PACKAGE_FILE 
--replacepkgs:重新安装rpm包  --> rpm -ivh --Ueplacepkgs PACKAGE_FILE 
--oldpackage::降级操作
--force:强制升级


举列:
[root@localhost leiyuncai]# rpm -Uvh zsh-5.0.2-14.el7.x86_64.rpm


注意:(1)不要对内核做升级操作,Liunx支持多内核并存,直接安装新版本           (2) 如果源程序包的配置文件安装后曾修改过,升级时,新版本的程序提供的同一配置文件不会覆盖原有版本文件,而重命名为(FILENAME,rpmnew)
(3)卸载:


rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]   [--test] PACKAGE_NAME ...
rpm -e 软件包名称
 -e:卸载指定程序
-allmatches:卸载所有匹配指定名称的程序包的各个版本
--nodeps:忽略依赖关系
--test:测试卸载,显示依赖关系    
举列:
[root@localhost ~]# rpm -e zsh
(4) 查询


rpm {-q|--query} [select-options] [query-options]
select-options:给指定值,一般是需要查询文件名称
-a.all:查询所有已经安装过的包,后面一般通过管道输出至正则表达式匹配-列如: rpm -qa | grep "^z"
 -f FILE:查看指定的文件由哪个程序包安装生产:
-p, --package PACKAGE_FILE:对于未安装的程序包执行查询操作
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供
--whatrequlres CAPABILITY:查询指定的-CAPABILITY被哪个程序包依赖
[query-options]
--changelog:查询rpm包的changelog; 历史
-l --list:列出程序包安装生产的文件列表
-i,--info:查询程序包相关的信息,包含版本、信息、时间等等
-c,:查询程序包有哪些指定的配置文件
-d:查询指定的程序包提供的文档信息
--provides:列出指定程程序包的 CAPABILITY
-R,--regulres:查询程序包依赖的包
--scripts:查看程序包自带的脚本片断


举列:


#:查询所有安装的包
[root@localhost Packages]# rpm -qa 
 #:查询未安装包的详细信息       
[root@localhost Packages]# rpm -qpi httpd-devel
 #:查看程序包的相关信息       
[root@localhost Packages]# rpm -qi httpd-devel 
 #:查看程序包安装产生的文件列表     
[root@localhost Packages]# rpm -ql httpd-devel 
 #:查看程序包的配置文件      
[root@localhost Packages]# rpm -qc zsh
 #:查看程序包提供的文档信息       
[root@localhost Packages]# rpm -qd zsh    
 # :查询程序包依赖的包       
[root@localhost Packages]# rpm -qR zsh

      
目录
相关文章
|
7月前
|
缓存 应用服务中间件 Linux
RPM安装包制作
RPM安装包制作
72 0
|
3月前
|
Linux
rpm打包学习
rpm打包学习
|
4月前
|
Ubuntu Unix Linux
在Ubuntu安装RPM文件
Ubuntu软件源包含数千个deb软件包,可以从Ubuntu软件中心或使用apt命令行安装。 Deb是所有基于Debian的Linux发行版,例如包括Ubuntu,Linux mint等发行版使用的安装包格式。 如果某些软件在Ubuntu软件源中不可用,可以通过启用适当的软件源来安装,然后使用APT命令安装。 在大多数情况下,当软件开发者不提供软件源时,他们都有一个下载页面,您可以在该页面下载并安装deb软件包,或者下载源码然后编译。 虽然不常见,但某些软件开发者可能会仅发布RPM包格式的文件。RPM是Red Hat及其衍生的Linux发行版,例如如CentOS,Fedora使用软件包
|
应用服务中间件 Linux nginx
使用yumdownloader命令离线安装rpm服务包
使用yumdownloader命令离线安装rpm服务包
492 0
|
关系型数据库 MySQL 应用服务中间件
|
C语言 C++ 应用服务中间件