私はherokuベースの環境で実行しているため、システムスペースにパッケージをインストールすることはできません。この問題を回避するには、/app/.apt
にインストールし、これを反映するようにLD_LIBRARY_PATH
を更新します。リンカーは常にLD_LIBRARY_PATHによって提供されるシステムよりもlibsasldb.soを選択します
私はcyrus-sasl2を使ってインストールしようとしていますが、インストールされていることを確認していますが、このライブラリを使用しようとすると、同じ場所にインストールされているgssapiv2 。私は
通常file=/usr/lib/x86_64-linux-gnu/sasl2/libsasldb.so [0]; dynamically loaded by /app/.apt/usr/lib/x86_64-linux-gnu/libsasl2.so.2 [0]
何か面白いものを参照してくださいLD_DEBUG=all
でコードを実行
私は図書館が検索を行う見るが、これは、常にシステムを拾って、検索を実行していません。
1673:
1673: file=libsasl2.so.2 [0]; needed by /app/.heroku/python/lib/python2.7/site-packages/sasl/saslwrapper.so [0]
1673: find library=libsasl2.so.2 [0]; searching
1673: search path=/app/.heroku/vendor/lib:/app/.heroku/python/lib:/app/.apt/usr/lib/x86_64-linux-gnu:/app/.apt/usr/lib:tls/x86_64:tls:x86_64: (LD_LIBRARY_PATH)
1673: trying file=/app/.heroku/vendor/lib/libsasl2.so.2
1673: trying file=/app/.heroku/python/lib/libsasl2.so.2
1673: trying file=/app/.apt/usr/lib/x86_64-linux-gnu/libsasl2.so.2
のようなものがありますが、libsasldb.so
の場合は表示されません。
私の質問は、なぜリンカーは検索しないで、代わりに常にシステムバージョンを使用するのでしょうか?