まあ、ようは、src.rpm を持って来たけどそのままでは
$ rpm --rebuild
を、出来ないって時に使う手だね。
ほんとうは、galeon を入れたいんだけど
galeon には Gconf が必要で、
GConf は aof-devel が必要で、
aof-devel は aof が必要で、
aof は gtk-doc が必要で、
gtk-doc を
$ rpm --rebuild gtk-doc-0.4-0vl2.src.rpm
したら、configure で
--with-dsssl-dir=PATH ってのが指定させる事が出来なくて途中で止まっちまう。
gtk-doc -> oaf -> oaf-devel -> Gconf
の流れのいっとー始めでつまづいちまったのさ。
で、しょうがないから Linux magazine を読みながら gtk-doc-0.4.0vl2.src.rpm を作り直した。
gtk-doc-0.4.0vl2.src.rpm を rpm dir へコピー。
$ cp gtk-doc-0.4.0vl2.src.rpm ~/rpm/SRPMS/
ソースパッケージを展開
$ cd ~/rpm/SRPMS/
$ rpm -ivh gtk-doc-0.4.0vl2.src.rpm
~/rpm/SPECS/gtk-doc-vl.spec
~/rpm/SOURCES/gtk-doc-0.4.tar.gz
が作られる。
tar玉を展開
$ cd ~/rpm/SPECS/
$ rpm -bp gtk-doc-vl.spec
-bp は SPEC ファイルのプレアンブルから %setup(あれば %patch)までを実行。
今回は tar玉の展開をするだけ。
~/rpm/BUILD/gtk-doc-0.4/ が作成、その下にファイルが展開される。
展開されたファイルをいじって、ちゃんと動くように修正をする。
ほんとうは、ここがキモなんだけど、今回はハショッて、
問題の部分をコメントにすることで解決とした。
$ cd ~/rpm/BUILD/gtk-doc-0.4/
$ cp -p configure configure.org
差分を取るためにオリジナルを残す。
$ vi configure
if test "x$DSSSL_DIR" = x ; then
{ echo "configure: error:
*** Cannot find DocBook stylesheets in "$dirs".
*** Perhaps you need to specify the --with-dsssl-dir=PATH option?" 1>&2; exit 1 ; }
fi
この部分を全部コメントにした。
# if test "x$DSSSL_DIR" = x ; then
# { echo "configure: error:
# *** Cannot find DocBook stylesheets in "$dirs".
# *** Perhaps you need to specify the --with-dsssl-dir=PATH option?" 1>&2; exit 1; }
# fi
修正終了。
差分を取る。
$ cd ~/rpm/BUILD/gtk-doc-0.4/
$ diff -Naur configure.org configure >& patch
diff のオプションは
diff にはもっとたくさんのオプションがあるけど、おれレベルにはこれで充分だろう。
-N 新規にファイルが作成されたいた場合は、元のディレクトリに空のファイルがあったものとして扱う -a バイナリファイルでもパッチを作成する -u diff の出力フォーマットを unified output format にする(こっちが主流らしい) -r サブディレクトリに対しても検索する
作成したパッチファイルをソースディレクトリに移動。
$ mv patch ~/rpm/SOURCES/
SPEC ファイルの修正。
$ cd ~/rpm/SPECS/
$ cp -p gtk-doc-vl.spec gtk-doc-vl.spec.org
$ vi gtk-doc-vl.spec
> # Note that this is NOT a relocatable package
> %define name gtk-doc
> %define ver 0.4
> %define rel 0vl2_my -> オリジナルと名称を変える。
> .
> .
> Source: ftp://ftp.gtk.org/pub/gtk/v1.1/docs/rdp/%{name}-%{ver}.tar.gz
> Patch: patch -> このパッチを使ってね。
>
> BuildRoot: %{_tmppath}/%{name}-%{PACKAGE_VERSION}-root
> Obsoletes: %{name}
> .
> .
> %prep
> %setup -q
>
> %patch -p0 -> パッチを当てるよ
>
> %build
> .
> .
ここで、%patch -p0 の -p はディレクトリをいくつ無視するかという指示。
今回はカレントディレクトリで修正を行ったので、無視するディレクトリはなし(=0)となる。
パッチがたくさんあって、ディレクトリごとパッチを当てた場合、
$ diff -Naur gtk-doc-0.4.org/ gtk-doc-0.4/ > patch
1つ上のディレクトリでパッチを取るので -p1 となる。
あとは、ソースパッケージを作って、インストール。
古いディレクトリを消して、
$ rm -rf ~/rpm/BUILD/gtk-doc-0.4/
$ cd ~/rpm/SPECS/
$ rpm -ba gtk-doc-0.4.spec -> .rpm と、src.rpm の作成。
~/rpm/SRPMS/gtk-doc-0.4-0vl2_jun1.src.rpm
~/rpm/RPMS/noarch/gtk-doc-0.4-0vl2_jun1.noarch.rpm
今回の場合、noarch なので rpm は noarch に入る。
おしまい。