以前の続きを書こうと思っていたんですが、とある疑問が生じたので、調べてみる事にした。事の発端は以下の記事より、
目次
unknownengineer.hatenablog.com
非常に問題な発言ではあるが、普段yumでインストールしているパッケージになんら興味を持っていなかった。どこかのサイトにpcre-develを入れる!と書いてあったから入れただけだ。ただ、今回片っ端からソースインストールした際は、pcreやzlibは-develがついていないものを使ったが、configureのエラーが解消出来てしまった。
develとはなにか?
まず、develありとdevelなしについて調べてみた。以外と情報が少ないがokwaveにそれらしい質問があった。
よく目にするファイル名にdevelとついたファイルは何をいみするのでしょうか? 【OKWAVE】
ベストアンサーを引用すると…
development(=開発)バージョンです。 次の正式版をリリースする前に、テスト的に配布しているバージョンを意味します。 とは言っても、もちろん一通りの検証は行われており、一般的にはほとんど問題なく使用できると思っていいでしょう。
えっ?そうなの?てか「一般的にほとんど問題なく」ってどんな定義だよ。そんな不安になりそうなものを平気で突っ込んでいたのか…と思ったら他の解答が…
php504さんがおっしゃられているように、開発に必要なヘッダファイル等が含まれています。 これらがないと自分でソースコードからアプリケーションをインストールしたいときにヘッダファイルが見つからず困ることがあります。 私も最初は開発段階のものであり、動作保障されたものではないパッケージだと思っていましたが、とんでもないことなので誤解されないように。
なんか下の方がそれらしい事を言っている気がする。何を信じればいいのかよく分からないので、とりあえず自環境で調べてみた。
develと無印の違いを調べる
まずrpmでdevelと無印を突っ込むと、どのディレクトリに何が入るのか確認してみた。
# rpm -qlp /home/rpmbuilder/rpmbuild/RPMS/x86_64/zlib-1.2.3-29.el6.x86_64.rpm /lib64/libz.so.1 /lib64/libz.so.1.2.3 /usr/share/doc/zlib-1.2.3 /usr/share/doc/zlib-1.2.3/ChangeLog /usr/share/doc/zlib-1.2.3/FAQ /usr/share/doc/zlib-1.2.3/README # rpm -qlp /home/rpmbuilder/rpmbuild/RPMS/x86_64/zlib-devel-1.2.3-29.el6.x86_64.rpm /usr/include/zconf.h /usr/include/zlib.h /usr/lib64/libz.so /usr/lib64/pkgconfig/zlib.pc /usr/share/doc/zlib-devel-1.2.3 /usr/share/doc/zlib-devel-1.2.3/README /usr/share/doc/zlib-devel-1.2.3/algorithm.txt /usr/share/doc/zlib-devel-1.2.3/example.c /usr/share/doc/zlib-devel-1.2.3/minigzip.c /usr/share/man/man3/zlib.3.gz
両方ともshare以下は気にしないとして、まず、作成されるファイルに違いがある事は理解できるし、/lib64直下と、/usr配下のディレクトリにファイルが置かれている。まずzlib.pcはコンパイルした時の情報っぽい。pkg-configってコマンドで利用出来るらしいけど、とりあえず今回は無視。でlibz.so関連は/lib64直下にリンク貼ってるだけ。あぁ、zlib-develの依存関係にzlibがあったのはこの為か。そして.h拡張子のファイルがヘッダファイルである。ヘッダファイルの説明は以下が参考になります。
そして、前回ソースインストールしたzlibを確認してみた。
# tree ../zlib/ ../zlib/ |-- include | |-- zconf.h | `-- zlib.h |-- lib | |-- libz.a | |-- libz.so -> libz.so.1.2.8 | |-- libz.so.1 -> libz.so.1.2.8 | |-- libz.so.1.2.8 | `-- pkgconfig | `-- zlib.pc `-- share `-- man `-- man3 `-- zlib.3
上記の通り、ヘッダファイルが含まれていた。apacheはどうやらzlibのヘッダファイルを探していたようだ。で、なんでヘッダファイルが含まれているか分からなかったので、zlibのsrcからビルドした所、zlibのrpm以外に、zlib-develやその他rpmが作成されていた。ソースにはdevelも無印も含まれていて、パッケージにする時の違いでdevelと無印に分かれていると勝手に結論したい。そしてこの結論から言えば、devel有りはヘッダファイルが含まれているものを指す為、リンク先のベストアンサーではなく、下の解答が正しいっぽい。闇雲にベストアンサーを信頼するのは、考えものなんですねと戒めます。
2017/04/07追記
もう少しだけdevelについて調べました。