0 支持
(180 ポイント)
MonobitEngineが推奨されているCentOS7.4が古くなり、ミラーからダウンロードすることが困難になってしまいました。(ダウンロードに凄く時間がかかります)

そこで、試しに最新のCentOS7.8で試したところ、C#版でのサーバ起動でエラー発生しました。

--

[root@localhost csharp]# ./mun_dotnet_core.sh start

mun_master pid:(53203)

Unhandled Exception: System.DllNotFoundException: Unable to load shared library 'libdl.so' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibdl.so.so: cannot open shared object file: No such file or directory

   at MrsLibs.Configuration.DllLoaderForLinux.dlopen(String fileName, Int32 flags)

   at MrsLibs.Configuration.DllLoaderForLinux.LoadLibrary(String fileName) in /opt/server/csharp/mrs_extension/misc/mun_libs.cs:line 344

   at MrsLibs.Configuration.DllLoader.LoadLibrary(String fileName) in /opt/server/csharp/mrs_extension/misc/mun_libs.cs:line 507

   at mun_master.main.LoadLibrary() in /opt/server/csharp/mun_master/src/main.cs:line 94

   at mun_master.main.Main(String[] parameters) in /opt/server/csharp/mun_master/src/main.cs:line 111

./mun_dotnet_core.sh: 46 行: 53203 中止                  (コアダンプ) dotnet ./mun_master/bin/$1/${NETCOREAPP}/publish/mun_master_dotnet_core_linux_x64.dll

mun_resolver pid:(53219)

--

「libdl.so」ファイルは「./libmrs/centos7_4.8.5/libmrs.so」にしっかりと配置されていることを確認しています。

何か解決方法がございましたら、ご教授お願いいたします。

回答 2

+2 支持
(2.2k ポイント)
選択
 
ベストアンサー

結論から言えば、以下のコマンドを実行すれば解決すると思います。

$ sudo yum -y install glibc-devel

以下説明になりますが、以下の見解は異なります。

 「libdl.so」ファイルは「./libmrs/centos7_4.8.5/libmrs.so」にしっかりと配置されていることを確認しています。

ここで指す libdl.so は libmrs.so とは異なりますので、ご注意ください。

で、CentOS7.8 に限らず、yum/dnf インストーラをサポートしているLinuxディストリビューションであれば、共有ライブラリ(.so)の依存関係はコマンドで調べることができます。

$ sudo yum whatprovides */libdl.so

実行すると

glibc-devel-2.17.317.el7.x86_64 : Object files for developement using standard C libraries ...

などと表示され、これが glibc-devel パッケージに含まれているのが分かるのですが、CentOS7.8-minimum では除外されているようなので、ドキュメントの inst.sh でのインストールに加え、これを手動でインストールする必要があるようです。

(180 ポイント)
ご回答ありがとうございます。
仰る通り、glibc関係でした。
C#を諦めて、C++の方の「inst.sh」した後に、C++で動くのを確認した後、
なんとなくC#の方をもう一度試したら、正常に動作しました。
C++の「inst.sh」でインストールしたものの依存関係で、たまたまglibc-2.17-317も一緒にインストールしたようです。
0 支持
(330 ポイント)

>liblibdl.so.so: cannot open shared

このへんちょっと気になりますね。

なんか.soを正しく読めてない気がする。

間違ってmun_dotnet_core.shを編集してしまった…とか?

 ./mun_dotnet_core.shの中でパスのダンプをかけるとなにかわかりそうな気がしますが

CentOSのマイナーバージョンが1上がっただけなら特段問題なさそうですが

暇なときウチでもやってみよう

(180 ポイント)
編集
ご回答ありがとうございます。
こちらの問題解決しました。
他の回答者の仰るように、glibcが原因でした。
とくに、スクリプトの編集は行っておりません。
...