RPMパッケージングで興味深いパターンを見つけました。デフォルトのライブラリパッケージには共有ライブラリ自体が含まれます。
/usr/lib64/libavcodec.so.54
-develパッケージはヘッダーとシンボリックリンクを提供します:
/usr/include/libavcodec/libavcodec.h
/usr/lib64/libavcodec.so -> /usr/lib64/libavcodec.so.54
libavcodec.soシンボリックリンクが共有ライブラリパッケージにのみ含まれておらず、develパッケージで提供されるのはなぜですか?開発者が望むものとシンボリックリンクはどのような関係がありますか?ヘッダーは意味がありますが、共有オブジェクトへのシンボリックリンクを使用するのはなぜですか?
ベストアンサー1
ディストリビューション内のソフトウェアは一貫した方法で機械的に接続されており、見つかると予想されるため、事前にビルドされたlibavcodec.so.54
パッケージにはバージョンのない名前は必要ありません。
ただし、ソフトウェアを直接構築すると、同様のソフトウェアが頻繁に使用されますが、バージョンが管理されていないこと-lavcodec
がわかります。libavcodec.so
繰り返しますが、ビルドスクリプトではこれらの名前が存在すると予想できます。
リリースパッケージには、バージョン指定されていない名前は必要ないため、デフォルトでは含まれていませんが、他のソフトウェアをビルドするときに便利なため、-devel
パッケージに含まれています。他のディストリビューションは説明が異なり、.so
基本パッケージにリンクが含まれています。どちらも合理的な選択です。