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包會重新生成