5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

rpm作成スレッド

1 :login:Penguin:02/10/12 14:56 ID:JJtJdOQ0
rpm管理って便利だよねー。
でもたまにrpmのないプログラムに遭遇する。
そんなときどうしようと思ったらこのスレで質問しよう。

だれかつくってねーかなぁと思ったら
http://rpmfind.net/

しかたねー作るかとおもったら
http://www.linux.or.jp/JF/JFdocs/RPM-BUILD-HOWTO.html
http://www.linux.or.jp/JF/JFdocs/RPM-HOWTO.html
http://www.vinelinux.org/MakingRPM/

223 :login:Penguin:05/01/05 09:24:40 ID:LBpiq6Ef
configure より configure.{in,ac} じゃねーか?

224 :login:Penguin:05/01/28 16:36:50 ID:hLcnqyW0
いままでrpm-modeと思って使っていたもの(Shell 何とか[rpm])は、rpm-modeではな
かったようだ。本物のrpm-modeを入れたら強烈にラクチンだった。今までの俺って orz


225 :login:Penguin:05/02/03 21:48:28 ID:VhVxZiHg
>>217
実行属性のついたシェルスクリプト。


226 :login:Penguin:05/02/10 09:28:36 ID:UHvPf+P5
すみません。ちょっと教えてください。
RPMデータのみあったとして、そのspecファイルの内容を見ることはできるのでしょうか?
できないとは思うんですけど…もしかしてできたりします?

227 :login:Penguin:05/02/10 09:52:51 ID:3A0OW5wm
>>226
普通はSRPMでないRPMにSPECファイルは入れないので、出来ない。

228 :login:Penguin:05/02/10 09:56:24 ID:tLOdBQ4i
SRPMならrpm -iでspecとソース一式が%_topdir以下に入る。
後は好きなように弄り回してrpmbuildでも何でも出来る。

binaryのRPMはspecの中身を見ることはできないけど、
rpm -qp --scripts momimomi.rpm
で、インストール、アンインストール時に実行するスクリプトは表示できる。


229 :login:Penguin:05/02/10 10:02:36 ID:UHvPf+P5
>>227-228
ですよね。そのシステム環境に適合するRPMデータがあったとしても、
specファイルを確認したい、場合によってはリビルドして入れたいということがあると思うのですが、
やはりSRPMデータなくしてspecファイルの内容は確認できませんよね。
ありがとうございました。

230 :login:Penguin:05/02/10 19:52:20 ID:jGutS7SU
>>229
いや、ある程度はできる
ttp://www.barabanov.ru/proj/rpm2spec
ただし、日付に日本語が入ってしまうので、
# LANG=C rpm2spec hgoehoge.rpm > hogehoge.spec
とすること

231 :login:Penguin:05/03/14 01:09:40 ID:WwdKdJuJ
src.rpm なファイルを展開したい時、どうやるのが手っ取り早いでしょ
う?

私は、こんな↓感じでやっているのですが、もっとすっきりした方法は
ないものでしょうか?

$ cd /tmp
$ mkdir BUILD SOURCES SPECS
$ rpm --define "_topdir `pwd`" -i ${pkgfile}
$ rpmbuild --define "_topdir `pwd`" --nodeps -bp SPECS/*.spec || rpmbuild --define "_topdir `pwd`" --nodeps --target=i686 -bp SPECS/*.spec


232 :login:Penguin:05/03/14 02:34:55 ID:f4OaHYK/
>>231
ホームディレクトリに"rpm"とか"redhat"とか適当な名前のtopdirを作ってお
いて、その下にBUILD RPMS SOURCES SRPMS SPECSを作っておきます。(これら
のディレクトリはしょっちゅう使うので、作っておいたまま消さない)
~/.rpmmacrosには
%_topdir /home/foo/rpm
%_tmppath /var/tmp
%_rpmtopdir %{_topdir}/%{name}
と書いておきます。こうしておくと
$ rpmbuild -i bar.src.rpm
だけで、specは/home/foo/rpm/SPECに、ソースファイルは/home/foo/rpm/SOURCES
に展開されます。


233 :login:Penguin:05/03/14 05:45:27 ID:bsFYPQWA
>>231-232
他のディストリでちゃんと動くか知らないけど、
Vine の vutils って rpm に mkrpmdir ってスクリプトがあります。
mkrpmdir ~ とやると、
%_topdir と %packager を ~/.rpmmacros に書き込んで、
~/rpm/BUILD ~/rpm/SOURCES ~/rpm/SPECS ~/rpm/SRPMS
~/rpm/RPMS/noarch ~/rpm/RPMS/i386 ~/rpm/RPMS/i586 ~/rpm/RPMS/i686
を作ってくれます。
簡単に ~/rpm 以下のディレクトリを作れるので、けっこう便利です。

ビルド時の --target=i686 の指定も、~/.rpmmacros になんか設定書いておけば
省略出来そうな気がするけど、分かりません。

234 :login:Penguin:05/03/16 12:37:34 ID:zQujFZYD
age

235 :login:Penguin:05/03/16 19:42:44 ID:WEPzJzA3
httpd-2.0.53.tar.gz をインストールするのに必要だと言われたため、
apr-1.1.0.tar.gz を落としてきて、

$rpmbuild -ta apr-1.1.0.tar.gz

で rpm を作成しようと思ったんですが、

RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.8821 (%build)

と言われてしまいます。
この /var/tmp/rpm-tmp.8821 っての、
勝手に削除しちゃってもいいんでしょうか?

236 :login:Penguin:05/03/16 20:42:06 ID:xcO5JQtk
>235
spec ファイルをデバッグしないなら、消して構わない。

237 :235:05/03/16 20:58:19 ID:WEPzJzA3
>>236
ありがとうございます。
一旦削除してからもう一度やってみましたが、やはり

/var/tmp/rpm-tmp.17575: line 54: fg: no job control
error: Bad exit status from /var/tmp/rpm-tmp.17575 (%build)


RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.17575 (%build)

と言われてしまいました。
該当のテンポラリファイル /var/tmp/rpm-tmp.17575 の54行目には、

%check

としか書き込まれていません。

spec ファイルのデバッグ、というのはどのようにすればいいのでしょうか?

やはりこのへん↓
http://www.google.co.jp/search?q=rpm+spec+%E3%83%87%E3%83%90%E3%83%83%E3%82%B0&start=0&start=0&hl=ja&lr=lang_ja&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:ja-JP:official
から勉強しないといけませんね。

238 :login:Penguin:05/03/16 23:58:57 ID:V9z55zlo
>>237
>spec ファイルのデバッグ、というのはどのようにすればいいのでしょうか?
httpd-2.0.53.tar.gz から httpd.spec を取り出して ~/rpm/SPEC において、
httpd-2.0.53.tar.gz を ~/rpm/SOURCES において、
spec ファイルから build する。
--short-circuit とか使いながら -bc とか -bi とか順にやっていって、
引っかかったら spec を直すと。

> /var/tmp/rpm-tmp.17575: line 54: fg: no job control
> error: Bad exit status from /var/tmp/rpm-tmp.17575 (%build)
とりあえず、%build でエラーになってるみたいだから、
rpmbuild -bc httpd.spec 2>&1 | tee bp.log
とかやってみればいいかと。
もうちょっと前になんかもっと大事なエラーメッセージが出てそうな気もするけど。

使ってるディストリビューションで用意されてるパッケージの spec も見たほうがいいと思う。

ttp://www.linux.or.jp/JM/html/rpm/man8/rpmbuild.8.html
--showrc とか でマクロがどうなってるチェックするのとかも必要かも。

239 :235:05/03/17 02:20:42 ID:gC8u5PES
>>238
丁寧にありがとうございます。
すみませんが、明日というか今日の早朝から数日間家を空けるので、
再開は週明けからになると思います。
戻って来たらアドバイスいただいたことを試してみたいと思います。

240 :login:Penguin:05/03/17 17:53:11 ID:MYoA17yN
rpm自体のバージョンが古くて%check非対応とかの予感。

241 :login:Penguin:05/03/18 12:19:57 ID:x5kfc3Qj
>>231

rpm2cpio hoge.src.rpm | cpio -idm

242 :235:05/03/20 09:10:36 ID:7RtkTiX5
>>240

$ rpm -qa | grep rpm
rpm-build-4.1-1.06
rpmdb-redhat-8.0-0.20020910
rpmlint-0.60-0.fdr.1.rh80
rpm-python-4.1-1.06
rpm-4.1-1.06
redhat-rpm-config-8.0-1
rpm-devel-4.1-1.06
rpm404-python-4.0.4-8x.27
librpm404-4.0.4-8x.27
librpm404-devel-4.0.4-8x.27
rpm2html-1.7-8

古すぎますかね?

243 :240:05/03/20 13:26:29 ID:0berZzSr
4.1 -> 4.2:
- add %check scriptlet to run after %install (#64137).
ということで、%checkは4.2以降の機能。

244 :235:2005/03/21(月) 21:29:58 ID:NVWhmt+W
>>243
ありがとうございます。
なるほど。

こちらの使っている環境は Redhat8 なんですが、
http://download.fedora.us/fedora/redhat/8.0/i386/RPMS.os/ にある rpm は、
>>242 で書いたように rpm-4.1-1.06 で打ち止めのようです。

http://download.fedora.us/fedora/redhat/9/i386/RPMS.os/ にある
Redhat9 用の rpm-4.2-0.69 あたりを
強引に突っ込んでも問題出ないんでしょうかねぇ、、、

245 :login:Penguin:皇紀2665/04/01(金) 22:13:55 ID:jmD04yJB
>>235
他のプログラムをrpm化するときに、同じようなtmp〜のようなエラーが出ていた。

rpm化は諦めて、手動インストールしようとドキュメントを読んでいたら、他のrpmが必要だということで、
そのrpm(openssl-devel-0.9.7a-33.12.i386.rpm他)をインストールして、手動インストールしてみた。

で、その直後にもう一度rpm化を試したら今度は通った!!

だから、そのtmp〜っていうエラーは依存関係の問題かもしれないので、
よくドキュメントを読んでみては?

246 :login:Penguin:2005/06/26(日) 00:24:36 ID:/USjl/Oi
php-4.3.9-3.6.src.rpm のspecを利用してphp-4.3.11.tar.gzを
インストールしようと思います。

rpm -i php-4.3.9-3.6.src.rpm

SOURCE/ へ php-4.3.11.tar.gz を移動
php.spec のバージョンの書き換え
php.spec のpatchの無効化

rpmbuild -ba php.spec 

上記でrpmのビルドを行いましたが、ビルドでエラーになります。
patch を無効化したことがまずいのでしょうか

247 :login:Penguin:2005/06/26(日) 01:20:11 ID:eav5hmc+
>>246
>ビルドでエラーになります。
ただ今エスパー氏は不在。

248 :246:2005/06/26(日) 01:49:03 ID:/USjl/Oi
php-4.3.9-3.6.src.rpm の patch は php-4.3.11.tar.gz
に適用できないんでしょうか。

249 :login:Penguin:2005/06/26(日) 02:27:42 ID:ZWBgDAYC
>>248
そもそもphp-4.3.11のmakeは通るの?
そこでコケるのならくだ質とか使ってるディストリのスレで訊いたほうがいい。

つか、php-4.3.11のsrpmならググれば結構引っかかるけどな…
それを自環境に合わせて修正するのじゃダメなのか

250 :login:Penguin:2005/06/26(日) 02:56:15 ID:eav5hmc+
>>248
まず「php-4.3.9-3.6.src.rpm」といってもモノはひとつではない。
patchといっても1つじゃなくて20個ぐらいあるだろ?
全部はphp-4.3.11.tar.gzには当たらない
というかphp-4.3.11では既に不要なpatchがいっぱいある筈。

251 :login:Penguin:2005/06/26(日) 02:57:56 ID:eav5hmc+
あと>>247の意味を理解して欲しいのだが。

252 :login:Penguin:2005/06/26(日) 15:12:45 ID:+cLoHgEN
すみません。
Centos4をつかってます。
http://rpm.pbone.net/ で探しましたが、php-4.3.11のCentパッケージは
ありませんでした。

php-4.3.11.tar.gzをmakeしては通ります。しかしspecと手動makeでは
./configureの指定がだいぶ異なります。
Centのspecではbuild()と関数化して行っているようです。
いままでmake か checkinstallを使用してインストールを
行っていたのですが、インストール先をredhatにあわせたほうが良いので
rpmに挑戦したのです。

エラー内容ですが、
creating reloadable object files...
creating a temporary reloadable object file: ext/domxml/.libs/ext/domxml/domxml.la-1.o
/usr/bin/ld: cannot open output file ext/domxml/.libs/ext/domxml/domxml.la-1.o: No such file or directory
make: *** [ext/domxml/domxml.la] エラー 1

domxml.la-1.oは作られていないようなんです。

253 :login:Penguin:2005/06/26(日) 16:02:02 ID:JD/WWY4F
>>252
fedoraのじゃダメかね php-4.3.11
ttp://download.fedora.redhat.com/pub/fedora/linux/core/updates/3/SRPMS/

254 :login:Penguin:2005/06/26(日) 17:46:23 ID:+cLoHgEN
>>253
ためしに、fedora3をダウンロードしてspecを確認しました。
そしたら、RHEL(Centos)と違う部分がありました
(たとえば下)
PEARのパッケージです。
Source20: http://pear.php.net/get/DB-1.7.5.tgz
Source21: http://pear.php.net/get/HTTP-1.3.5.tgz
Source22: http://pear.php.net/get/Mail-1.1.4.tgz
Source23: http://pear.php.net/get/XML_Parser-1.2.6.tgz
Source24: http://pear.php.net/get/Net_Socket-1.0.6.tgz
Source25: http://pear.php.net/get/Net_SMTP-1.2.6.tgz

また、素朴な疑問です。
php-4.3.11 は普通のmake & installできますが
なぜspecでは php-4.2.2-lib64.patch
こんなに古いパッチを当てるのでしょうか。
このような指定が数箇所あります。

いまビルド中です。

255 :login:Penguin:2005/06/26(日) 19:58:24 ID:JD/WWY4F
PHPのことはくだ質かCentスレで。

要らないパッケージの部分はコメントアウトすればいいんでない?
%files <パッケージ名> のセクションを見れば、そのパッケージの構成が分かるから、
そこを見ながら%setup〜%installから要らない部分を削っていく。

ファイルの配置は rpmbuild -bi でbuildroot以下に仮インストールできるから、
それでconfigure のオプションや make install に渡す環境変数を調整していく。
ビルドし直すまでもない修正のときは--nobuiidを付ける。
俺の場合はこんな感じで作業してるけど。

256 :login:Penguin:2005/08/15(月) 09:44:17 ID:Dh2nyB7V
php-4.3.11のrpmを作成したくspecファイルについてお聞きしたいのですが、
php-imapパッケージが生成されずに困っています。
行頭には以下の記述があるのですが、どうも with_imapが0に設定されているようなのです。
%define contentdir /var/www
%define with_oci8 %{?_with_oci8:1}%{!?_with_oci8:0}
%define with_mssql %{?_with_mssql:1}%{!?_with_mssql:0}
%define with_mhash %{?_with_mhash:1}%{!?_with_mhash:0}
%define with_imap %{?_with_imap:1}%{!?_with_imap:0}

この部分がマクロであることは分かるのですが、_with_imapがどのように判断されて1か0かに
設定されているのかがよく分かりません。 勝手に1に設定しちゃってもいいものなんでしょうか?
お分かりになる方がいらっしゃればよろしくお願いします。
ちなみにimap関係のパッケージは以下のものが既にインストールされています。
imap-2001a-10
imap-devel-2001a-10

257 :login:Penguin:2005/08/15(月) 11:02:42 ID:Dh2nyB7V
自己レスです。
rpmbuild --define "_with_imap 1"

で作成できました。 お騒がせしました。

258 :login:Penguin:2005/08/15(月) 21:37:10 ID:xQpAXLUC
ただリビルドするだけの時に--defineを使うのは正しいのか?
rpmbuildのヘルプにあるのは--with=とか--without=だけど。

まあ俺はwithoutじゃなくてspec書き換えてるけど…

259 : ◆/UXtw/S..2 :2005/08/16(火) 15:47:59 ID:Vn0puH61
>>258

rpmbuild のヘルプをちゃんと読んだか?

Options implemented via popt alias/exec:
--dbpath=DIRECTORY use database in DIRECTORY
--with=<option> enable configure <option> for build
--without=<option> disable configure <option> for build

popt による alias と書いてあるだろ。正しいも正しくないも、
やってることは一緒なわけだが。popt が分からなかったら、
とりあえず

/usr/lib/rpm/rpmpopt-<rpmのバージョン>

でも読んでおけ。


260 :login:Penguin:2005/10/21(金) 15:09:28 ID:ugQ65p6N
yoper linuxのサイトにspecのひながたとrpmbuildの
スクリプトがある。これはすごい簡単。suseで
インストールのディレクトリを/usr/src/package/RPMS/i686
に指定してまとめてインスコできるか試してます

261 :login:Penguin:2006/06/11(日) 22:38:14 ID:cW+uyL68
%prep %setup %patch を飛ばして %build からテストしたいのですが、可能ですか?

262 :login:Penguin:2006/06/11(日) 22:42:16 ID:UdaIvYnC
short-circuit

263 :login:Penguin:2006/07/06(木) 03:11:44 ID:sbcTXFsT
http://www.linux.or.jp/JF/JFdocs/RPM-HOWTO-6.html

264 :login:Penguin:2006/07/06(木) 07:53:46 ID:jwQED/TG
誰か CentOS4.3 用 Apache2.2 系の RPM 作成をお願いしまーす。

265 :login:Penguin:2006/07/06(木) 15:25:43 ID:5XYo67aq
>>264
バーカ

266 :login:Penguin:2006/12/12(火) 18:31:21 ID:lKiUJVj/
rpmでパッケージできるSourceの最大サイズはどこかに書いてある?
電子辞書データを自分専用にrpm化しておきたいのだけど、2GBまでなら大丈夫かな?

267 :login:Penguin:2007/02/13(火) 13:30:40 ID:ec1JRjDY
rpmbuildの-short-circuitってなぜ-bc と-bi だけなんでしょうね。
(少なくともrpm 4.3.3ではそう)パッケージングも出来れば
-bpをした後ちょこっとソースを変更してパッケージをビルドとか出来て
便利だと思いません?

268 :login:Penguin:2007/02/13(火) 14:50:56 ID:g40J6Ywy
>>267
その方法だと -bp の後のソースの変更部分を src.rpm に取り込めないから不便。
あとで同じことをやる時にも手作業しなきゃならないから
src.rpm とは別にどこを変更したのかとかを残しておく必要が出てくる。
極端な言い方だけどそんな不完全なパッケージなら作る意味がない。

ビルド中にソースに変更が加えられるとかってなると
パッケージのバージョンとかリリースとかが意味の無いものになってしまう。

ソースに変更加えるなら patch を作って spec に書いて src.rpm に入れるべき。
そうしないのであれば make install するか
checkinstall で適当なリリース番号とかつけてインストールすべき。

SPEC を工夫すれば define とか with,without とかで
rebuild 時になんらかの情報を付け足すこともできる。

269 :login:Penguin:2007/02/13(火) 15:47:42 ID:VnTofYnD
>>267
だよね、でも何故か、-bp,-bc,-bi,-bl,-bbと順にできてしまったことが
あるようなないような、記憶違いか、なにかか?-blなんてあったっけか?w

270 :login:Penguin:2007/02/14(水) 10:36:18 ID:2LebhKkc
>>268
> src.rpm とは別にどこを変更したのかとかを残しておく必要が出てくる。
> 極端な言い方だけどそんな不完全なパッケージなら作る意味がない。

想定したのはちょっとしたデバッグ目的です。どうにも挙動が不明なパッケージが
あってちょっとsyslog()やprintfをはさんでみてインストールしてみて動作確認を
するなど。

> そうしないのであれば make install するか

それもそうですね。けどターゲットに開発環境が無い場合にはちょこっとRPMが
作れれば便利だなと思いました。


271 :login:Penguin:2007/02/16(金) 00:09:10 ID:cIm5BEYP
>>267
ちょこっとソースを変更してコンパイルをしたあと
%prep
%setup

%build
CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix}
make

%install
rm -rf $RPM_BUILD_ROOT

%prep
%setup -T -D

%build

%install
rm -rf $RPM_BUILD_ROOT
の様に変更し、rpmbuild -bbしてパッケージングではダメ。


272 :268:2007/02/16(金) 01:05:55 ID:bK5AnHCm
>>267 >>270 もう一個 spec 書けばいいだけのことのような気がする。
もとの hoge.spec で $rpm -bi hoge.spec 。
必要なファイルは /var/tmp/hoge-ver-root とかにインストールされてるはずだから
どこか適当なところで mkdir gehogeho-1
cp -pr /var/tmp/hoge-ver-root/* gehogeho-1/
tar czf gehogeho-1.tgz gehogeho-1/
cp gehogeho-1.tgz ~/rpm/SOURCES/

***gehogeho.spec***

Source0: gehogeho-1.tgz

%prep
%setup -q
%install
cp -pR * %{buildroot}
%files
/*
これでとりあえずgehogeho-1.tgzの中身が全部入るはず。

85 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)