【RPM】rpmrebuild 提取spec重新打包rpm示例

1. rpmrebuild 安裝

rpmrebuild-2.11-3.el7.noarch.rpm 詳情頁
https://centos.pkgs.org/7/epel-x86_64/rpmrebuild-2.11-3.el7.noarch.rpm.html

安裝步驟:

#1. Download latest epel-release rpm from http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm
#2. Install epel-release rpm:
rpm -Uvh epel-release*rpm
#3. Install rpmrebuild rpm package:
yum install rpmrebuild

2. rpmrebuild 提取rpm的spec文件

執行命令,這時候會打開一個spec的vim文件,我們使用vim的另存爲將它保存下來(shift+: w文件名)

rpmrebuild -e -p hadoop_3_1_0_0_78-3.1.1.3.1.0.0-78.x86_64.rpm

我的另存爲了hadoop_3_1_0_0_78-3.1.1.3.1.0.0-78.spec
然後將hadoop_3_1_0_0_78-3.1.1.3.1.0.0-78.spec拷貝至rpmbuild/SPECS目錄等待使用

3. rpm2cpio 解壓rpm包

解壓到了當前目錄下usr(這個目錄就像你安裝完後的安裝目錄一樣,e.g usr/hdp/3.1.0.0-78…)
rpm2cpio hadoop_3_1_0_0_78-3.1.1.3.1.0.0-78.x86_64.rpm |cpio -idv

到rrpmbuild/BUILDROOT目錄下,創建hadoop_3_1_0_0_78-3.1.1.3.1.0.0-78.x86_64目錄
mkdir hadoop_3_1_0_0_78-3.1.1.3.1.0.0-78.x86_64
(至於爲什麼是到BUILDROOT下來建,我想可能是是因爲這個目錄原本是最終虛擬安裝目錄,而我們rpm解壓開的目錄就是安裝目錄的樣子,解壓出的rpm.spec文件中看一下files目錄並不是SOURCE)

但是注意:BUILDROOT目錄下,每次build rpm後都會清空,所以還是先把解壓的源碼放在SOURCE目錄下,然後拷貝到BUILDROOT下吧

下邊兒就是在如果要改源碼就改rpmbuild/BUILDROOT/hadoop_3_1_0_0_78-3.1.1.3.1.0.0-78.x86_64/usr下就行了,然後spec有需要改就去改

4. rpmbuild 重新build rpm包

[hdp01@hdp01 SPECS]$ rpmbuild -bb hadoop_3_1_0_0_78-hdfs.spec 

好了相應的rpm包會重新生成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章