- PR -

specファイルに関して

1
投稿者投稿内容
かなもの
ベテラン
会議室デビュー日: 2006/08/07
投稿数: 62
投稿日時: 2009-04-07 19:09
いつもここにはお世話になっています。かなものと申します。

rpmパッケージ作成でわからない事があり、質問させて頂きます。

現在学習目的で、specが無いtar.gzのアプリケーションを、rpmパッケージ化しようと試みています。
とは言っても、checkinstalを使ってある程度自動作成したものを変更するという形ですが・・・

(教材としてasterisk-1.4.21.2を使用しています)

自動作成したspecを編集し、pacthの適用、rpmファイルの分割等の編集を行う事が出来ました。
又、そのファイルをインストールし、エラーなくrpmコマンドが終了している事も確認出来ました。


質問はここからです。

rpmパッケージは作成されましたが、一部ファイルが足りませんでした。
確認した所、本来のインストール方法として「make install」の後に
「make config」「make sapmle」を実行する必要があり、rpmbuild実行時に
それが行われていませんでした。

しかし、「make config」「make sapmle」を実行するようspecファイルに記述する方法がわかりませんでした。

現在のbuild周りの内容はこのようになっています。

コード:

%build
CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS=$CFLAGS ./configure \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib \
--libexecdir=/usr/libexec \
--localstatedir=/var/lib \
--sharedstatedir=/usr/share \
--mandir=/usr/share/man \
--infodir=/usr/share/info
make
%install
[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf $RPM_BUILD_ROOT
%makeinstall



試しに、何も考えずに%makeinstallの下に、そのまま「make config」「make sapmle」を加えてみましたが、
エラーが発生し上手くいきませんでした。


ここから、どのように編集したら「make config」「make sapmle」を加えられるのでしょうか。

ご教授頂ければ幸いです。


※備考
「make config」は初期設定のコンフィグファイル作成
「make sapmle」はサービススクリプト設置
OS:CentOS4.7/5.3
checkinstall-1.6.1-1


[ メッセージ編集済み 編集者: かなもの 編集日時 2009-04-07 19:13 ]
瀬戸っぷ
ベテラン
会議室デビュー日: 2003/11/28
投稿数: 56
投稿日時: 2009-04-08 00:53
引用:

かなものさんの書き込み (2009-04-07 19:09) より:
試しに、何も考えずに%makeinstallの下に、そのまま「make config」「make sapmle」を加えてみましたが、
エラーが発生し上手くいきませんでした。
[ メッセージ編集済み 編集者: かなもの 編集日時 2009-04-07 19:13 ]



どのようなエラーが出るのか掲示された方がよくないでしょうか?
とりあえず、インストール先がrpmbuild用のディレクトリになっていたりとか
通常とは環境が異なっている場合もありますのでご注意を。

rpmbuildでエラーになるとテンポラリにエラーとなったスクリプトが残っているかと。
そちらの内容も参考になるのではないかと思われます。
かなもの
ベテラン
会議室デビュー日: 2006/08/07
投稿数: 62
投稿日時: 2009-04-08 11:25
引用:

瀬戸っぷさんの書き込み (2009-04-08 00:53) より:

どのようなエラーが出るのか掲示された方がよくないでしょうか?
とりあえず、インストール先がrpmbuild用のディレクトリになっていたりとか
通常とは環境が異なっている場合もありますのでご注意を。

rpmbuildでエラーになるとテンポラリにエラーとなったスクリプトが残っているかと。
そちらの内容も参考になるのではないかと思われます。



ご回答ありがとうございます。説明不足が多々あり、申し訳ありません。

まず、提示した情報に誤りがありました。
「make config」は、対象のバージョンにはありませんでした。
「make sapmle」は「make sapmles」の誤字です。

「make sapmles」を実行する事で、デフォルトコンフィグファイルが設置されます。
この作業はroot権限で作業しています。
作業ディレクトリは、/usr/src/redhat/ 上で行っています。

エラーに関しては、/etc/asteriskにコンフィグファイルが本来出来るのですが、
そのファイルが見当たらないというエラーです。

コード:
RPM build errors:

File not found by glob: /var/tmp/asterisk-1.4.21.2-root/etc/asterisk/*



記述はこのようにしております。

コード:
%files

%defattr(-,root,root)
%dir %{_sysconfdir}/asterisk ←これを追加
%{_sysconfdir}/asterisk/* ←これを追加
%dir %{_includedir}/asterisk
%{_includedir}/asterisk.h






make samples を実行すると、/var/tmp/asterisk-1.4.21.2-root/etc/asterisk/ に作成されず、本当の/etc/asteriskに展開されてしまいます。
これを /var/tmp/asterisk-1.4.21.2-root/etc/asterisk/ に作成したいと考えています。

ですが、rpmbuildの理解不足もあり、これを実現する為のspecファイルの記述方法がわかりませんでした。

情報が不足してましたら、追ってこちらに記載させて頂きます。

[ メッセージ編集済み 編集者: かなもの 編集日時 2009-04-08 11:26 ]
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2009-04-08 12:59
引用:

エラーに関しては、/etc/asteriskにコンフィグファイルが本来出来るのですが、
そのファイルが見当たらないというエラーです。



試してないですが、

make samples DESTDIR=%{RPM_BUILD_ROOT}

では駄目ですか?


[ メッセージ編集済み 編集者: あんとれ 編集日時 2009-04-08 13:03 ]
かなもの
ベテラン
会議室デビュー日: 2006/08/07
投稿数: 62
投稿日時: 2009-04-08 21:23
引用:

あんとれさんの書き込み (2009-04-08 12:59) より:

試してないですが、

make samples DESTDIR=%{RPM_BUILD_ROOT}

では駄目ですか?



ご回答ありがとうございます。

上記をそのまま使用出来なかったのですが、下記のように修正した所、想定している動作になりました。

make samples DESTDIR="$RPM_BUILD_ROOT"

これで一歩完成に近づく事が出来ました。
DESTDIRというオプションがある事・使い方を始めて知りました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)