CentOS 5.4 x64でRPMのリビルドに便利なrpm,rpmbuild,yumコマンド

タックス

今回は、私がwingリポジトリを立ち上げて3ヶ月が立ちますが、その経験も活かして、rpm、rpmbuild、yumコマンドの基本的な使い方や便利な使い方を説明します。

  • 依存関係の解決

  • まず、私は何も無い状態からspecファイルを作成することはありません。
    理由は、わざわざ何も無いところから作る必要性を感じていないからです。
    全てのパッケージは、現在のCentOSやfedora,remi,rpmforgeなどのいずれかのSPECファイルを参考にしていますが、SRPMを解体すれば、SPECファイルを手に入れることができます。
    その方法は、以前もこのブログでご紹介したとおりです。

    CentOS 5.4 x64でSRPMからRPMにリビルドする方法 - にわかSEの独り言

    さて、このSPECファイルを自分好みのものに変更するには、それ相応の知識が必要ですが、最大の難点は「依存関係」の解決です。
    fedoraの新しいバージョンのSPECファイルを参考にする場合、CentOSには無いパッケージに依存していたりするため、依存しているパッケージもリビルドしたり、もしくはCentOSでは別のパッケージで依存関係を解決していたりとさまざまです。
    また、私がSPECファイルを作成し配布しても、全ての依存関係をSPECファイルに記述出来ているとは限らず、知らず知らずのうちに依存関係としてSPECファイルに書かなければならないものがインストールされていて気づかなかったりするため、自力で解決する必要が出てきます。

    もしも、yum installコマンドを入力して、依存関係がある場合は自動的に依存しているパッケージもインストールされますが、libxxxxx.soなどとライブラリーが足りなくてエラーになったら大変です。
    しかし、下記のコマンドでそのライブラリーがどのパッケージに入っているのかを教えてくれます。

    # yum provides libxxxxx.so

    これで表示されたパッケージ名を、インストール時に一緒に入力することで、解決することができます。
    これで解決できない場合は、依存しているパッケージもリビルドする必要があります。

  • SPECファイルの編集で知っておくと便利なもの

  • SPECファイルを編集していると、よく出てくる変数(例:%{_sysconfdir})などは、以下のコマンドで何がパラメーターとして設定されているかを確認することができます。

    # rpmbuild --showrc

  • リビルドの方法

  • wingリポジトリでは、64bit版と32bit版のパッケージ両方を配布していますが、VMware Server 2.0.2をインストールし、その上でほぼ同等環境の64bitと32bitのCentOSを入れて、それぞれの環境でリビルドしています。
    最初は64bitで、以下のコマンドでリビルドしています。

    # rpmbuild -ba --define '.el5_0.wing' ????????.spec

    rpmbuildコマンドで-baは、RPMとSRPM両方を作り、--defineでパッケージ名の後に自分のリポジトリ名を入れることができます。
    もちろん、specファイル内に%{?dist}という記述がある場合に有効です。

    これで作成されたSRPMを32bit版の環境に持っていき、以下のコマンドでリビルドしています。

    # rpmbuild --rebuild --define '.el5_0.wing' ????????.src.rpm

    これでRPMのみが作成され、SRPM、i386、x86_64全てのパッケージが揃います。

  • 自作リポジトリの公開

  • あらかじめApacheの設定が必要になりますが(.htaccessにOptions +Indexesを追記等) 、SRPM、i386、x86_64のパッケージが揃いましたら、それぞれのディレクトリに配置して、

    # chown apache. *.rpm
    # chmod 600 *.rpm
    # createrepo .

    として、リポジトリを公開します。
    createrepoコマンドが使用できない場合は、

    # yum install createrepo

    でインストールが可能です。

  • パッケージのダウングレード

  • 私はよくFirefoxやPHPのパッケージを2世代分作成しているため、時にはFirefoxを3.6系から3.5系にダウングレードしたりすることがあります。
    そんな時は、

    # rpm -Uvh --oldpackage ????????.rpm

    で、ダウングレードしています。

    以上、少しでもRPMパッケージの作成のお役に立てられれば幸いです。

    以下、参考リンクです。

    Wikipedia(Linux)
    Wikipedia(CentOS)
    Wikipedia(RPM Package Manager)
    Wikipedia(Yellowdog Updater Modified)

関連記事


FC2Blog Rankingblogram投票ボタンとれまが人気ブログランキングブログランキング・にほんブログ村へ
くる天 人気ブログランキングにほんブログ村 IT技術ブログ CentOSへ

テーマ : Linux
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

WING☆

Author:WING☆


カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
カウンター
お問い合わせ

名前:
メール:
件名:
本文:

WING☆からのお知らせ
  • CentOS 7設定集
  •    └wingリポジトリ(el7)

  • CentOS 6 x64設定集
  •    └wingリポジトリ(el6)

  • CentOS 5 x64設定集
  •    └wingリポジトリ(el5)



    My Yahoo!に追加

    FC2ブログランキング



    リンク
    ブロとも一覧
    Virtualization & Sever Maniax
    RSSリンクの表示
    QRコード
    QRコード
    ブロとも申請フォーム

    この人とブロともになる