スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CentOS 6.xでrpmを作る環境を構築する方法

タックス

この度、CentOS 6.xの32bit環境のrpmを提供するのを辞めることにしました。理由はほとんど使われてないからです。
そのため、今後のパッケージのアップデートに関しては、自力でお願いしたいと思っております。
そこで、rpmを作るための環境の構築方法やビルドの方法をご紹介したいと思います。

    今回ご紹介する内容は、32bitでrpmを作る方法に限らず、64bitでも同じ手順で作ることができ、環境さえ整えば自力でSRPMをリビルドしてrpmを作成できます。
    もしも、自力で作ってみたい方も参考にして頂ければと思います。

    ■ 環境整備

    1. OSインストールとSELinuxの無効

    まずCentOS 6.xをMinimalでインストールした状態から、SELinuxを無効にした状態に設定してください。

    2. ビルドに必要な最低限のパッケージをインストール。

    # yum -y groupinstall 'Development tools'

    3. epel、wingリポジトリ及びwing-extrasリポジトリを導入します。

    # yum -y install wget epel-release

    # wget http://wing-repo.net/wing/6/EL6.wing.repo -P /etc/yum.repos.d
    # vi /etc/yum.repos.d/EL6.wing.repo
    enabled=0

    enabled=1

    ※ Apache 2.4系を利用したい場合は以下も実施。

    # wget http://wing-repo.net/wing/extras/6/EL6.wing-extras.repo -P /etc/yum.repos.d
    # vi /etc/yum.repos.d/EL6.wing-extras.repo
    enabled=0

    enabled=1

    Apache 2.4を利用した上でPHPを使用する場合は、Apache 2.4をインストールした状態でなければなりません。

    以上で環境は整いました。
    あとは、SRPMを取って来てリビルドするだけです。


    ■ SRPMパッケージを取得してリビルド

    では、試しにPHPのパッケージをリビルドしてみます。
    Apache 2.2の環境の場合はこちらからダウンロード。
    Apache 2.4の環境の場合はこちらからダウンロード。

    今回はApache 2.2環境でphp 5.4.40をビルドしてみます。

    1. SRPMのダウンロード

    # wget http://wing-repo.net/wing/6/SRPMS/php54-5.4.40-1.el6_37.wing.src.rpm

    2. rebuild

    ※ 32bit環境の場合
    # rpmbuild --rebuild --target i686 --define 'dist .el6_37.wing' php54-5.4.40-1.el6_37.wing.src.rpm

    ※ 64bit環境の場合
    # rpmbuild --rebuild --define 'dist .el6_37.wing' php54-5.4.40-1.el6_37.wing.src.rpm

    そうすると以下のようなエラーが表示されます。
    php54-5.4.40-1.el6_37.wing.src.rpm をインストール中です。
    cat: /usr/include/httpd/.mmn: そのようなファイルやディレクトリはありません
    エラー: ビルド依存性の失敗:
    bzip2-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    curl-devel >= 7.9 は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    gmp-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    httpd-devel >= 2.0.46-1 は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    pam-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    openssl-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    sqlite-devel >= 3.6.0 は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    zlib-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    pcre-devel >= 6.6 は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libedit-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libtool-ltdl-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    krb5-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libc-client-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    cyrus-sasl-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    openldap-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    mysql-devel >= 4.1.0 は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    postgresql-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    unixODBC-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libxml2-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    net-snmp-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libxslt-devel >= 1.0.18-1 は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libxml2-devel >= 2.4.14-1 は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libjpeg-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libpng-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    freetype-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libXpm-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    t1lib-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    db4-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    tokyocabinet-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libmcrypt-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libtidy-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    freetds-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    aspell-devel >= 0.50.0 は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    recode-devel は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    libicu-devel >= 3.6 は php54-5.4.40-1.el6_37.wing.i686 に必要とされています
    enchant-devel >= 1.2.4 は php54-5.4.40-1.el6_37.wing.i686 に必要とされています

    実はこれに表示されるものは、全てビルドする時に必要なパッケージで、インストールされていないものになります。
    なので、これらを全てインストールします。

    # yum -y install bzip2-devel curl-devel gmp-devel……(省略)

    そして、再度リビルドしてみます。

    ※ 32bit環境の場合
    # rpmbuild --rebuild --target i686 --define 'dist .el6_37.wing' php54-5.4.40-1.el6_37.wing.src.rpm

    ※ 64bit環境の場合
    # rpmbuild --rebuild --define 'dist .el6_37.wing' php54-5.4.40-1.el6_37.wing.src.rpm

    すると、ビルドが開始されマシンのスペックにも寄りますが、数十分で/root/rpmbuild/RPMS/i686/にrpmが作成されます。
    (64bit環境の場合は/root/rpmbuild/RPMS/x86_64/)

    このようにSRPMが存在していれば、リビルドすることでrpmを作ることができることがお分かり頂けると思います。

    その他に存在しないrpmや古いSRPMを拾ってきて新しいバージョンのrpmを作成することも出来ますが、それはまた別の機会にでもご紹介したいと思います。
    また、しばらく今まで作った32bit版のrpmは残しておきますので参考にしてください。

    以下、参考リンクです。

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


関連記事


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

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

コメントの投稿

非公開コメント

プロフィール

WING☆

Author:WING☆


カレンダー
06 | 2017/07 | 08
- - - - - - 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 31 - - - - -
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
カウンター
お問い合わせ

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

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

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

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



    My Yahoo!に追加

    FC2ブログランキング



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

    この人とブロともになる

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。