PostfixがMySQL共有ライブラリを見つけることができません

PostfixがMySQL共有ライブラリを見つけることができません

MySQLをサポートするPostfixをインストールしようとしています。 postfixデーモンを起動または実行すると、/usr/local/mysql/libパッケージをビルドするとリンクされたディレクトリにある「libmysqlclient.so.18が見つかりません」というメッセージが表示されます。

/usr/local/mysql/lib/libmysqlclient.so.18シンボリックリンクを追加して/usr/lib問題を解決しましたが、これは本当に悪い解決策なので、正しい方法で行うことをお勧めします。

フォローするこの文書、その小さなバグを除いて動作します。

私はArch Linux、カーネルバージョン2.6.33を実行しています。

答え1

最も簡単な解決策は、Arch LinuxパッケージからMySQLをインストールすることです。これでライブラリがインストールされ、/usr/libすべてがスムーズに動作します。

パッケージングシステムの外部にMySQLをインストールした場合、これは/usr/local/libライブラリの予想位置です。ソースからプログラムをインストールするときに自動的にシンボリックリンクを生成するには、stowまたはxstowを使用することをお勧めします。追跡プログラム

すべてのプログラムでライブラリを検索できるようにするには、/usr/local/mysql/libそのライブラリをのデフォルトライブラリ検索パスに追加します/etc/ld.so.conf。しかし、/usr/local/libしたい場合はシンボリックリンクをお勧めします。

Postfixにライブラリを検索させるには、/usr/local/mysql/libPostfixを起動するスクリプトを次のように編集します/etc/rc.d/postfix(Archの正確な場所はわかりません)。 postfixデーモンを起動する前に、次の行を追加してください。

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}/usr/local/mysql/lib"

答え2

Arch Linuxでは、最近カスタムビルドからライブラリをインストールするときに同様の問題が発生しました。私の場合は、/usr/local/libにライブラリをインストールしました。このライブラリが必要なアプリケーションを実行すると、同様のランタイムエラーが発生します。ライブラリが見つかりません。 (BSDシステムを使用する方が簡単ではないでしょうか?:-D)

正しい回避策は、新しいデフォルトライブラリディレクトリをランタイムリンカパスに追加することです。 Arch Linuxで、次のように:

/etc/ld.so.conf

したがって、新しいライブラリパスを追加するには

sudo vi /etc/ld.so.conf

次に、パスを新しい行に追加します。

/usr/local/mysql/lib/

私の場合は/usr/local/libを追加したので、/etc/ld.conf.soファイルは次のようになります。

#
# /etc/ld.so.conf
#

include /etc/ld.so.conf.d/*.conf
/usr/local/lib

# End of file

私の使い方が正しいことを確認してください。

sudo ldconfig -v

カスタムライブラリを一覧表示する必要があります。つまり、リンカーによって「発見」された。

この設定ファイルとランタイムリンカの詳細については、

man ldconfig

Arch Linuxは、複数の設定ファイル(/etc/ld.so.conf.d/*.conf)を持つカスタムディレクトリを使用するように設定されているように見えますが、これは私にとって非常に多くのSYSVで完全な過剰です。 /etc/ld.so.conf パスです。

関連情報