よくわからないエンジニア

よく分からないエンジニアの日々の記録

よくわからないエンジニア

無印とdevelの違いについて

以前の続きを書こうと思っていたんですが、とある疑問が生じたので、調べてみる事にした。事の発端は以下の記事より、

目次

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拡張子のファイルがヘッダファイルである。ヘッダファイルの説明は以下が参考になります。

itpro.nikkeibp.co.jp

そして、前回ソースインストールした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について調べました。

www.unknownengineer.net