RPM总结(一)

软件包基础
软件包运行环境
硬件、内核、应用程序的关系
包管理器
程序包管理器
Linux不同系统上的包管理器
RPM的优点
rpm包命名方式
一般源代码的命名
rpm包的命名
rpm包的分类与拆包
包管理工具
RPM包管理器:
程序包管理器:
获取程序包的途径:
rpm包管理
CentOS系统上使用rpm
命令管理程序包:
安装
升级:
降级
降级实例
more

软件包基础

包管理过程中,最常用的操作有:安装、卸载、检查

软件包运行环境

硬件、内核、应用程序的关系

  • 应用程序运行在内核之外,其中/bin/bash就是各种应用程序之一。

  • 内核运行在计算机硬件与应用程序直接。主要工作就是CPU进程、内存的管理,磁盘输入输出等工作。

  • 应用程序和内核直接的沟通需要接口。 
    区分以下两种接口:

  • API:应用程序接口。

    • 现成的开发包的工具,其动态的库以so结尾,静态的库以a结尾。这种接口中包含C语言中的stdio.h或者math.h这种文件,开发者在math.h中定义了sin()函数,所以在写C程序时,可以直接引入math.h文件,之后直接调用sin()函数。

  • ABI:应用程序二进制接口(application Binary interface)。

    windows系统和linux系统在数据存储等方面,都存在差异性。所以如果想在windows上模拟linux环境,或者是在linux系统上模拟windows环境,需要编写模拟的是ABI的应用程序。也就是库级别的虚拟化:

    • 它定义了一组在PowerPC系统软件上编译应用程序所需要遵循的一套规则。主要包括基本数据类型,通用寄存器的使用,参数的传递规则,以及堆栈的使用等等。它涵盖了各种细节:如数据类型、大小和对齐;调用约定(控制着函数的参数如何传送以及如何接受返回值);系统调用的编码和一个应用如何向操作系统进行系统调用;以及在一个完整的操作系统ABI中,目标文件的二进制格式、程序库等等。 
      API与ABI的不同

1.PNG

Java的代码可以在各个平台转移。这是因为java的代码是二次编译。

二进制文件hello.class可以在win或linux上运行。主要依靠jvm。jvm将windows命令转化成它同一的,在linux上也是。 
所以二进制文件hello.class可以转移


包管理器

二进制应用程序的组成部分 
二进制文件 
库文件 
配置文件 
帮助文件 
库文件:共用的程序模块(可无)

程序包管理器

Linux不同系统上的包管理器

系统名 包文件类型 包管理器 使用命令 线上升级机制(命令)
debian/Ubuntu deb文件 dpkg包管理器 dpkg APT(apt-get)
redhat rpm文件 rpm包管理器(RPM Package Manager) rpm,rpmbuild,rpmdb(centos7) YUM(yum)

RPM的优点

  • rpm包是通过预先编译并打包而成的,所以免除了重新编译的困扰

  • 避免错误安装:rpm包安装前,会检查系统的硬盘容量,操作版本等。

  • 更了解软件:该包本身提供软件版本资讯、依赖性软件名称、软件用途说明、软件所含文件等资讯

  • 数据库。RPM的管理方式使用数据库记录RPM文件的相关参数,便于升级、移除、查询与验证。

rpm包命名方式

  • 实例:yum-plugin-security-1.1.30-37.el6.noarch.rpm 
    其中:

    • noarch和硬件平台无关

    • i686支持32位(也可以装在64位)

    • x86支持64位

一般源代码的命名

一般源代码名:name-VERSION.tar.gz|bz2|xz 
其中,VERSION=major.minor.release

rpm包的命名

rpm包命名方式: 
– name-VERSION-release.arch.rpm 
其中 
– VERSION=major.minor.release 
– release:release.OS 
– OS:上例中,el7是表示OS的,代表RHEL7 
– 常见的arch有:

架构系列 常见架构 说明
x86系列 i386,i486, i586, i686 i针对的是intel兼容的CPU的意思,后面的XXX表示不同的等级,不同的等级的CPU在针脚等方面或许会有不同
x86_64系列 x64, x86_64, amd64 针对64位的CPU进行最佳化编译配置。包括Intel Core2以上等级,AMD Athlon64以上等级,都是这类。
powerpc ppc
noarch 没有硬件等级上的限制(跟平台无关) 一般来说,这类型的RPM文件,里面应该没有二进制文件的存在,较常出现的就是属于Shell Script方面的软件

4.png

  • 软件版本号:

    主版本号,此版本号,修正版本号:在主版本的架构下,更动部分原始码内容,而释放出一个新的版本,就是次版本号。在此版本中,修正一些bug等,就是修正版本号。

  • 软件的编译次数:

    为何会有重新编译?因为某些原因(比如某些bug或者安全上的考虑),必须要进行小幅度的打补丁或重设一些编译参数。配置完成后重新编译打包,形成了新的rpm包。不同的打包数就出现了。

  • 硬件平台

    RPM可以适用在不同的操作平台上,但是不同的平台配置的参数还是有所差异的。针对性能比较高的CPU进行最佳化参数的配置,这样才能够适用高性能CPU所带来的硬件加速功能。这就是不同的arch。

rpm包的分类与拆包

如果将所有的功能与模块,放在同一个包中,不利于后来的管理和排错。所以最好将包按照功能等分类或拆开:

Application-VERSION-ARCH.rpm: 主包 
Application-devel-VERSION-ARCH.rpm:开发子包 
Application-utils-VERSION-ARHC.rpm:其它子包 
Application-libs-VERSION-ARHC.rpm:其它子包

包管理工具

在包与包之间,若是有循环依赖的关系,需要有工具来解决以来关系,并安装。这种循环依赖的安装,如果只是一步一步的安装解决依赖关系,那就太耗费人力物力了,这时,就需要使用一些前端工具来自动解决依赖关系。 
解决依赖包管理工具:

工具 作用
yum rpm包管理器的前端工具
apt-get deb包管理器前端工具
zypper suse上的rpm前端管理工具
dnf Fedora 22+ rpm包管理器前端管理工具

RPM包管理器:

程序包管理器:

功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作

  • 1、包文件组成(每个包独有) 
    RPM包内的文件 
    RPM的元数据,如名称,版本,依赖性,描述等 
    安装或卸载时运行的脚本

  • 2、数据库(公共) <===已经安装了的包的详细信息,记录这些东西,以后可能检查会用到。检查现在的程序是否有改变,比如有效用户等。 
    程序包名称及版本 
    依赖关系 
    功能说明包 
    安装后生成的各文件路径及校验码信息

  • 管理程序包的方式:

    • 使用包管理器:rpm 
      使用前端工具:yum,dnf

获取程序包的途径:

(1)系统发版的光盘或官方的服务器; 
CentOS镜像: 
https://www.centos.org/download/ 
http://mirrors.aliyun.com 
http://mirrors.sohu.com 
http://mirrors.163.com 
(2)项目官方站点 
(3)第三方组织:Fedora-EPEL:Extra Packages for EnterpriseLinux 
Rpmforge:RHEL推荐,包很全 
搜索引擎:(专门用于搜索软件包) 
http://pkgs.org 
http://rpmfind.net 
http://rpm.pbone.net 
https://sourceforge.net/

(4)自己制作 
需要对源码分析了解,才能够制作rpm包

** 注意:检查其合法性:来源合法性;程序包的完整性**

rpm包管理

CentOS系统上使用rpm

命令管理程序包:

安装、卸载、升级、查询、校验、数据库维护

安装

rpm {-i|--install} [install  -options] PACKAGE_FILE...
  • -v: verbos

  • -vv

  • -vvv

  • -h:以#显示程序包管理执行进度(50个) 
    常用命令:

rpm  -ivh  PACKAGE_FILE ...

选项:

  • –test:测试安装,但不真正执行安装;dry run模式

  • –nodeps:忽略依赖关系

  • –replacepkgs|replacefiles ##保存原来修改过的配置文件,(除非某配置文件没有,才会写入)

    • replacepkgs:原来损坏的软件和现在要装的包,版本等是相同的。

    • replacefiles:包名都不一样。原来的和现在的,有些库等,会重复,可以用这个。有点类似于升级了。

    • –nosignature:不检查来源合法性 
      RPM总结(一) 1.PNG
      由于现在网络等问题,无法检测signature时,也会说不合法

    • –nodigest:不检查包完整性

    • –noscipts 参数:不执行程序包脚本片断

脚本 名称 对应选项
%pre 安装前脚本 –nopre
%post 安装后脚本 –nopost
%preun 卸载前脚本 –nopreun
%postun 卸载后脚本 –nopostun

升级:

  • 使用格式:

rpm {-U|--upgrade}  [install-options]  PACKAGE_FILE...
rpm {-F|--freshen}  [install-options]  PACKAGE_FILE...
  • 二者区别

  • upgrade:安装有旧版程序包,则“升级”(升级意味着,如果有新版本,老版本就没了) 
    – 如果不存在旧版程序包,则“安装”

    • freshen:安装有旧版程序包,则“升级” 
      – 如果不存在旧版程序包,则不执行升级操作

  • 常用命令

rpm  -Uvh   PACKAGE_FILE ...
rpm  -Fvh  PACKAGE_FILE ...
  • 内核的升级 
    往往不是升级,而是安装新的内核 
    这样新旧内核就可以同时存在,使用新内核过程中出现问题,就继续使用旧内核。

  • 内核也可以降级 
    notes: 
    (1)不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核 
    (2)如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

降级

常在新包不稳定的时候使用降级,获得稳定的版本使用

  • –oldpackage:降级(这个得配置i才能够装的上-i –oldpackage)

  • –force:强行(可以省去好多其他选项:–replacepkgs…..等 )

降级实例

6.8—>6.7 

RPM总结(一) 1.jpg

需要安装的是这两个包 
当前系统内核: 
RPM总结(一) 
RPM总结(一) 1.jpg

1.jpg可以看出,爆出来的这个问题,并不是那么严重 
RPM总结(一) 1.jpg
装完后,系统中同时存在原来的和现在的,这主要是因为原来版本和现在版本安装时,很多文件是相同的,冲突了。所以不会直接覆盖。看/boot启动目录中,都是两个了。 
RPM总结(一)1.jpg

more

rpm -l可以查看包的文件列表,但是看不到脚本 
RPM总结(一)1.jpg

原创文章,作者:m20-吴清玲,如若转载,请注明出处:http://www.178linux.com/39858

(1)
m20-吴清玲m20-吴清玲
上一篇 2016-08-24
下一篇 2016-08-24

相关推荐

  • N26-博客作业-week8

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;      在线的主机使用绿色显示;      不在线的主使用红色显示; #!/bin/bash # for i in {1..254}; do if -W 1 -c 1 ping 1…

    Linux干货 2017-03-26
  • systemd、awk命令 N28

    第八周-2018 1/22

    2018-01-22
  • 第七周

    第七周 1 创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动…

    Linux干货 2017-02-20
  • 正则表达式字符集

    POSIX Description ASCII Unicode Shorthand Java [:alnum:] Alphanumeric characters [a–zA–Z0–9] [\p{L}\p{Nl}  \p{Nd}] \p{Alnum} [:alpha:] Alphabetic characters …

    Linux干货 2017-07-07
  • Linux的哲学思想

    Linux的哲学思想 一切皆文件  几乎把所有的资源系统抽象为文件形式:包括硬件设备,甚至通信接口等 由众多功能单一的程序组成:一个程序只做一件事,并且做好;组合小程序完成复杂任务  力求使程序精简凝练,出现地完成最核心的需求;尽量避免使其膨胀成为一个臃肿的程序,致使大部分代码很少被需要和执行。 小程序易于理解,维护,消耗系统资源较少,易…

    Linux干货 2017-07-03
  • 常用大数据词汇中英文对照表

    A 聚合(Aggregation) – 搜索、合并、显示数据的过程 算法(Algorithms) – 可以完成某种数据分析的数学公式 分析法(Analytics) – 用于发现数据的内在涵义 异 常检测(Anomaly detection) – 在数据集中搜索与预期模式或行为不匹配的数据项。除了“Anomalies”,用来表示异常的词有以下几种:outlie…

    Linux干货 2015-03-10