天天看点

【linux】rpm和src.rpm、rpm和noarch.rpm的区别

目录

​​简略​​

​​前言​​

​​一、rpm和src.rpm文件类型区别及联系​​

​​二、rpm文件名称那么长,分别是什么意思?​​

​​三、如何本地编译并安装rpm包?​​

​​四、如何查看rpm包的源码包名称?​​

简略

 xxxxxxxxx.rpm   <==RPM 的格式,已经经过编译且包装完成的 rpm 档案;

 xxxxx.src.rpm    <==SRPM的格式,包含未编译的原始码资讯。

noarch的包说明,你可以在任何平台上安装这个软件包,就是说它并不依赖于哪个特定的linux发布版。

 平台名称    适合平台说明

   i386     几乎适用于所有的 x86 平台

   i686     在 pentun II 以后的 Intel 系列 CPU ,及 K7 以后等级的 CPU 都属于这个 686 等级!

  noarch     就是没有任何硬体等级上的限制。一般来说,这种类型的 RPM 档案,里面应该没有 binary file 存在。

下文转自:​​http://events.jianshu.io/p/00de73b138f6​​

前言

rpm的概念——Redhat Package Manager,翻译过来就是,红帽包管理器。

这里关键字有“红帽”、“包”和“管理器”。“红帽”是linux操作系统服务商,“包”是一指包含完整特定功能的代码集合,“管理器”是用于管理“包”的工具。

1.安装软件:执行rpm -ivh rpm包名

升级软件:执行rpm -Uvh rpm包名。

3.反安装:执行rpm -e rpm包名称。

4.查询软件包的详细信息:执行rpm -qpi rpm包名称

5查询文件属于哪个rpm包:执行rpm -qf rpm包名称

6检查软件包将写入系统的文件:执行rpm -qpl rpm软件包名称

一、rpm和src.rpm文件类型区别及联系

我们以git包为例。

git-2.9.5-3.fc25.src.rpm 

这是包含git源码的rpm包,换句话说,就是还没有编译成二进制的原始代码。它只是以rpm包的方式存在。我们使用file命令来看一下这个包的类型。

[root@arm-team-0009 2]# file git-2.9.5-3.fc25.src.rpm

git-2.9.5-3.fc25.src.rpm: RPM v3.0 src

git-2.9.5-3.fc25.i686.rpm 

这是已经经过编译、包装完成的 rpm 文件。就是可以直接安装到你的系统中运行的目标文件。我们使用file命令来看一下这个包的类型。

[root@arm-team-0009 2]# file git-2.9.5-3.fc25.i686.rpm

git-2.9.5-3.fc25.i686.rpm: RPM v3.0 bin i386/x86_64 git-2.9.5-3.fc25

说完区别,我们再来说说联系。

src.rpm包可以经过编译,生成rpm包。并且它们是一对一或者一对多的关系。换句话说,就是一个src.rpm包可以编译出一个rpm包,或者一个src.rpm包可以编译出多个rpm包。

比如git-2.9.5-3.fc25.src.rpm ,就编译出来下面6个包:

git-2.9.5-3.fc25.i686.rpm

git-core-2.9.5-3.fc25.i686.rpm

git-core-doc-2.9.5-3.fc25.i686.rpm

git-daemon-2.9.5-3.fc25.i686.rpm

git-debuginfo-2.9.5-3.fc25.i686.rpm

git-svn-2.9.5-3.fc25.i686.rpm

二、rpm文件名称那么长,分别是什么意思?

下面我们来拆解一个rpm包全名:

git-2.9.5-3.fc25.i686.rpm

git——名称

2.9.5——版本号

3——release号

i686——架构类型,常见的有aarch64,x86_64,noarch等

rpm——文件类型

三、如何本地编译并安装rpm包?

步骤一:安装源码包

rpm -ivh git-2.9.5-3.fc25.src.rpm

步骤二:编译

rpmbuild -ba /root/rpmbuild/SPECS/git.spec

步骤三:安装编译好的rpm包

rpm -ivh /root/rpmbuild/RPMS/i686/git-2.9.5-3.fc25.i686.rpm

注意:根据你环境的架构的不同,编译出来的二进制rpm包存在路径略有差异。比如上面的i686架构,如果是aarch64架构,那么编译好的包就在

/root/rpmbuild/RPMS/aarch64/git-2.9.5-3.fc25.aarch64.rpm

当然,一些跟架构无关的二进制包,都存在于/root/rpmbuild/RPMS/noarch/路径。

四、如何查看rpm包的源码包名称?

并不是所有的rpm包名称都和src.rpm名称对应,真实的情况是,rpm的名字是A,src.rpm包的名字可能是B。如果系统上已经安装了A rpm包,你想找到A的源码包,自行修改重新编译,该如何是好呢?

下面一条命令可以帮助你:

[root@arm-team-0009 2]# rpm -qip git-2.9.5-3.fc25.i686.rpm

Name        : git

Version    : 2.9.5

Release    : 3.fc25

Architecture: i686

Install Date: (not installed)

Group      : Development/Tools

Size        : 2485070

License    : GPLv2

Signature  : (none)

Source RPM  : git-2.9.5-3.fc25.src.rpm

Build Date  : Thu 16 Nov 2017 03:55:56 PM CST

Build Host  : buildvm-24.phx2.fedoraproject.org

Relocations : (not relocatable)

Packager    : Fedora Project

Vendor      : Fedora Project

URL        : https://git-scm.com/

Summary    : Fast Version Control System

Description :

Git is a fast, scalable, distributed revision control system with an

unusually rich command set that provides both high-level operations

and full access to internals.

The git rpm installs common set of tools which are usually using with

small amount of dependencies. To install all git packages, including