天天看點

【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