RPMパッケージングで興味深いパターンを見てきました。メインライブラリパッケージには、共有ライブラリ自体が含まれます。
/usr/lib64/libavcodec.so.54
-develパッケージは、ヘッダーとシンボリックリンクを提供します。
/usr/include/libavcodec/libavcodec.h
/usr/lib64/libavcodec.so -> /usr/lib64/libavcodec.so.54
Libavcodec.soシンボリックリンクがdevelパッケージによって提供され、共有ライブラリパッケージに含まれているだけではないのはなぜですか?シンボリックリンクは、開発者が望むものと関係がありますか?ヘッダーは理にかなっていますが、なぜ共有オブジェクトへのシンボリックリンクなのですか?
ディストリビューションのソフトウェアは一貫して機械的にリンクされており、libavcodec.so.54
が見つかることを期待しているため、ビルド済みのパッケージにはバージョン管理されていない名前は必要ありません。
ただし、自分でソフトウェアを構築している場合は、-lavcodec
などを使用するのが一般的で、libavcodec.so
はバージョン管理されていません。同様に、ビルドスクリプトは、これらの名前が存在することを期待する場合があります。
バージョン管理されていない名前は配布パッケージには必要ないため、デフォルトでは含まれていませんが、他のソフトウェアをビルドするときに役立つため、-devel
パッケージに含まれています。他のディストリビューションは異なる描写を行い、メインパッケージに.so
リンクを含めます。どちらも合理的な選択です。