共有ライブラリのバージョン番号は、ABIが変更された場合にのみ変更されることになっています。(古いバージョンのFreeBSDはこれを正しく理解していませんでした。最近のバージョンでは修正されていますが、システムライブラリのみです!)したがって、これらのアプリケーションを正しく動作させる唯一の方法は、アプリケーションを再コンパイルするか、正確なバージョンを提供することです。それらがリンクされた共有ライブラリ。古いバージョンのFreeBSDシステムライブラリのみに依存するプログラムの場合、compat [45678] xパッケージをインストールできます。これは、指定されたバージョンのOSで提供されるライブラリのバージョンを提供しますが、重大な落とし穴があります。
1)アプリケーションが依存するライブラリの一部が、アプリケーション自体よりも新しいバージョンの標準ライブラリにリンクされている場合、ダイナミックリンカは標準ライブラリの2つの互換性のないコピーを提供し、動作しない可能性があります。
2)アプリケーションがdlopen()を使用して外部モジュールまたはプラグインをロードする場合、これらのモジュールはバージョン管理されていないため、すべての賭けはオフになります。
FreeBSD 8以降では、Cライブラリおよびその他の重要なシステムライブラリにシンボルバージョン管理を使用しているため、これらのライブラリはライブラリバージョンを再度変更することはなく、ABIの互換性は維持されます。多くのサードパーティ開発者はそれほど注意を払っていません。ライブラリのバージョンを変更せずにABIを壊し、ABIを壊さずにライブラリのバージョンを変更するため、勝つことはできません。(一部の開発者はドキュメントを読んでおらず、共有ライブラリのバージョン番号は製品のバージョン番号と同じである必要があると考えています。)