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)
上一篇 2016-08-24 21:21
下一篇 2016-08-24 21:21

相关推荐

  • Linux系统

    1、计算机的组成及其功能 从基本结构上来讲,电脑可以分为五大部分:运算器、存储器、控制器、输入和输出设备。 运算器(Datapath):对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。 存储器(Memory):存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。 控制器(Control):整个计算机的中枢神经,对程序规定的控制信息进行解释,…

    Linux干货 2016-10-30
  • iptables练习

    系统的INPUT和OUTPUT默认策略为DROP; 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机; 系统默认策略设定: ~]# iptables -P INPUT DROP ~]# iptables -P OUPUT DROP 网络说明…

    Linux干货 2016-12-27
  • 新的征程即将开始……

    新的征程,新的开始,开博祭旗篇!!!

    Linux干货 2016-12-26
  • yum——替你排忧解难的前端包安装工具

    yum CentOS前端工具: yum, dnf 统一资源定位符:URL YUM: Yellowdog Update Modifier,rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,自动安装软件包,以及该软件包的依赖包,up2date的替代工具 yum repository: yum repo (yum仓库)  &nbsp…

    Linux干货 2016-08-24
  • man使用手册

    Linux下man的各章节使用介绍        1 – commands     2 – system calls     3 – library calls  &nbsp…

    Linux干货 2016-10-18
  • 文件管理命令以及bash特性之命令行展开

    一 Linux文件管理 Linux中对文件管理的命令主要有:mkdir rmdir mv rm cp touch file stat等命令 创建目录mkdir mkdir [OPTION]… DIRECTORY… [root@MiWiFi-R3-srv testdir]# mkdir /root/dirtest 在/root下创建一个dirtest的…

    Linux干货 2017-08-13