2009-07-17

【L】Build RPM from Tarball

之前有看 Garlic 用,但很複雜的Fu,就…有點給它放在腦後,當沒這件事。

但這次…真的要自已Build了,所以只好努力看看該怎麼弄。

弄起來好像真的不難(如果沒遇到問題的話,有遇到spec沒寫好,就很難…)

使用環境:SUSE 10.1

首先要有環境才能開始學習怎麼 build RPM,下面就先來建立環境。

先用一般使用者登入 (不要使用root)。

  1. 建立 .rpmmacros 檔於家目錄,內容如下:
     %_topdir   /home/user/chingwei/rpmbuild
  2. 然後建立要build rpm 的目錄結構。在家目錄下
    mkdir   rpmbuild
    mkdir   rpmbuild/BUILD
    mkdir   rpmbuild/RPMS
    mkdir   rpmbuild/RPMS/athlon
    mkdir   rpmbuild/RPMS/i386
    mkdir   rpmbuild/RPMS/i486
    mkdir   rpmbuild/RPMS/i586
    mkdir   rpmbuild/RPMS/i686
    mkdir   rpmbuild/RPMS/noarch
    mkdir   rpmbuild/SOURCES
    mkdir   rpmbuild/SPECS
    mkdir   rpmbuild/SRPMS
    另外,也可以直接從複制 /usr/src/packages 下的目錄結構(如果有的話)
    sudo cp -R /usr/src/packages/ /home/user/chingwei/rpmbuild/

這樣子環境就完成了。

接著就是將 Tarball rebuild 成 RPM了

 

(下面內容,節錄自 鳥哥的 Linux 私房菜 -- RPM 小技巧 )

tarball 分成以下幾種方式:

  1. tarball with spec
    檢查方法,以spamassassin為例,
    tar fzt Mail-SpamAssassin-3.0.2.tar.gz | grep .spec
    或者是
    tar fjt Mail-SpamAssassin-3.0.2.tar.bz2 | grep .spec
    建RPM
    rpmbuild -tb Mail-SpamAssassin-3.0.2.tar.gz
    或者是
    rpmbuild -tb --define "srcext .bz2" Mail-SpamAssassin-3.0.2.tar.bz2
  2. tarball without spec
    請先安裝 CheckInstall (http://checkinstall.izto.org/) ,
    即可將 tarball without spec 轉成 RPM ,安裝過程如下:
    tar xvfz program_name-version.tar.gz
    cd program_name-version
    ./configure
    make
    checkinstall      (註:原來應該是make install,在此換成此命令即可)。
  3. Perl Modules
    請先安裝 cpan2rpm (http://perl.arix.com/cpan2rpm/)
    以 perl module Text-Iconv為例,
    執行
    cpan2rpm   Text-Iconv-1.4.tar.gz
    這樣就會產生以下兩個檔案:
    rpmbuild/RPMS/i386/perl-Text-Iconv-1.4-1.i386.rpm
    rpmbuild/SRPMS/perl-Text-Iconv-1.4.1.src.rpm

另外

如果你要自已改SPEC的話,就將xxxx.spec複制到SPECS下修改,tar.gz 放至 SOURCES

rpmbuild -bb xxx.spec

就可以了

 

參考網站:

不大會寫程式 -- Build software with source rpm

鳥哥的 Linux 私房菜 -- RPM 小技巧

 

0 comments:

張貼留言