apt-getがライブラリパッケージを正しくインストールしていないようです。

apt-getがライブラリパッケージを正しくインストールしていないようです。

liblz4.so私は最近libraryをインストールしましたが、apt-get install liblz4-1上記のコマンドは次のファイル/リンクのみをインストールすることがわかりました。

/usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1
/usr/lib/x86_64-linux-gnu/liblz4.so.1 -> liblz4.so.1.7.1

私が理解しているのは、Ubuntuのライブラリ名にライブラリのバージョンを含めることができますが、それらを含まないこれらのファイルの1つへのリンクが常にある必要があるld他のバイナリ/ライブラリがそれを見つけることができるということです。上記の例では、これらのリンクはです/usr/lib/x86_64-linux-gnu/liblz4.so -> liblz4.so.1.7.1。ただし、apt-getこのリンクはまだ作成されていないため、直接作成する必要があります。

これがパッケージの「失敗」ですかliblz4、それとも一部のUbuntuパッケージで予想されるものですか?手動でリンクを生成せずにインストールするより良い方法はありますか?

ベストアンサー1

~からDebian Policy Manual、これは以下を管理します。

バイナリまたは他の共有ライブラリを共有ライブラリにリンクすると、共有ライブラリのSONAMEが不明です。代わりに、.soが追加されたライブラリ名と一致するファイルを見つけて、共有ライブラリを見つけます。ファイルは、共有ライブラリへのシンボリックリンクとしてファイルシステムに存在します。

共有ライブラリは通常、複数のバイナリパッケージに分けられます。 SONAMEシンボリックリンクはランタイム共有ライブラリパッケージによってインストールされ、ベア.soシンボリックリンクはバイナリまたは共有ライブラリをリンクするときにのみ使用されるため、開発パッケージにインストールされます。

したがって、liblz4-1ランタイムライブラリを含むパッケージで次のliblz4.so.1.7.1ものを使用できます。コンパイルされたバイナリ開発パッケージには、リンカーが正しい参照を含めることを可能にするシンボリックリンクがliblz4-devあります。liblz4.soコンパイル時

パッケージliblz4-devはランタイムパッケージの現在のバージョンによって異なるため、シンボリックリンクはぶら下がっておらず、ディストリビューションがリリースされると変更する必要がありますSOVERSION

おすすめ記事