サーバーに特定のバージョンのPythonをロードすると、次のエラーが発生します。
python:共有ライブラリの読み込みエラー:libpython2.7.so.1.0:共有オブジェクトファイルを開くことができません:そのファイルまたはディレクトリがありません。
lddはファイルが利用可能であることを示しています。唯一の驚くべきことは、以下のように権限です。
-rwxrwsr-x
~からS私はおそらく偶然にそのファイルに対してsetgidが呼び出されているという結論に達しました。しかし、私はファイルを所有しているグループのメンバーでもあります。この場合、グループメンバーでない場合でもPythonを実行できる必要がありますか?
Pythonは、以下を実行する環境モジュールによってロードされます。
prepend-path PATH /path/to/python/2.7.9/bin
prepend-path MANPATH /path/to/python/2.7.9/share/man
prepend-path PYTHONPATH /path/to/python/2.7.9/lib/python2.7/site-packages:/path/to/spss/22/Python/lib/python2.7/site-packages
prepend-path LD_LIBRARY_PATH /path/to/python/2.7.9/lib
答え1
S権限を削除した後、ライブラリを正しくロードできました。私たちがついに見つけた違いは、ライブラリをロードできるユーザーが実際に自分のgidをライブラリのgidと同じ値に設定したことです。単にライブラリに権限を与えられたグループのメンバーになるだけでは十分ではありません。ユーザーはそのグループをデフォルトグループに設定する必要があります。