OpenRTM / OpenRTM-aist

OpenRTM-aist: RT-Middleware and OMG RTC implementation in C++ implemented by AIST
https://openrtm.org/
Other
19 stars 12 forks source link

Ubuntu 20.04でomniidl実行時にエラーメッセージが表示される #1067

Closed Nobu19800 closed 2 years ago

Nobu19800 commented 2 years ago

Describe the bug Ubuntu 20.04環境でomniidlを実行すると以下のメッセージが表示される。

$ omniidl

omniidl: ERROR!

omniidl: Could not open IDL compiler module _omniidlmodule.so
omniidl: Please make sure it is in directory /lib
omniidl: (or set the PYTHONPATH environment variable)

omniidl: (The error was 'No module named '_omniidl'')

To Reproduce Steps to reproduce the behavior:

  1. 問題が発生した環境では、Hyper-Vのクイック作成でUbuntu 20.04環境を構築した
  2. curlをインストール
    sudo apt install curl
  3. OpenRTM-aistをインストール
    bash <(curl -s https://raw.githubusercontent.com/OpenRTM/OpenRTM-aist/master/scripts/openrtm2_install_ubuntu.sh)
  4. omniidlを実行するとエラー

Reproducibility 手元のUbuntu 20.04環境では100%

Expected behavior

Screenshots or Logs

Environment

Additional context

n-kawauchi commented 2 years ago

私の方はVagrantにてUbuntu20.04のDesktop環境をコマンド一発で構築し、openrtm2_install_ubuntu.shを「 -l c++ -l python -c 」オプションで開発環境をインストール後、引数なしで実行し、OpenRTM2.0のパッケージすべてをインストールした環境です。ご指摘のエラーにはなりません。

$ omniidl
omniidl: No files specified. Use 'omniidl -u' for usage.
Nobu19800 commented 2 years ago

_omniidlmodule.soというファイルはomniidlをインストールしたらどこかのフォルダに入っているものなのでしょうか?

n-kawauchi commented 2 years ago

検索しても見つかりません。テストで使用していた別の2つのUbuntu20.04環境(それぞれRTM2.0と1.2.2をインストールしている)でも見つかりませんでした。

Nobu19800 commented 2 years ago

_omniidlというモジュールが見つかっていないためエラーになっているようです。 PYTHONPATHの設定(export PYTHONPATH=/usr/lib/omniidl/)をすると正常に動作するようですが、何故この設定が必要な場合と必要でない場合があるのかが分かりません。 正常に動作している環境でのPythonのバージョンと、環境変数PYTHONPATHの設定はどうなっていますか?

n-kawauchi commented 2 years ago

Python3.8.10で、PYTHONPATHは設定しておりません。 以下はどうでしょうか?

このエラー、過去に経験がありました! もしかして、/usr/bin よりも /bin のパスの方が先に定義されていませんか? $ echo $PATH /sbin:/bin:/usr/bin:/usr/local/bin:/snap/bin

通常ならばPATHの順番で、 /usr/bin/omniidl が実行されるので問題ないのですが、この環境では /bin/omniidl が実行されてしまい、報告頂いたエラーがでていました。

@n-ando さんに教えて頂いた下記情報で、XRDPをインストールしている環境で、/etc/pam.d/xrdp-sesmanを次のように修正したところ echo PATH の設定が正しくなったとのメモが残っています。 https://askubuntu.com/questions/92333/ubuntu-has-a-different-path-when-accessed-over-xrdp-session

#%PAM-1.0
@include common-auth
@include common-account
@include common-session
@include common-password
  ↓
#%PAM-1.0
session       required   pam_env.so readenv=1 envfile=/etc/environment
session       required   pam_env.so readenv=1 envfile=/etc/default/locale
@include common-auth
@include common-account
@include common-session
@include common-password
Nobu19800 commented 2 years ago

解決しました。ありがとうございます。Ubuntu 18.04では問題は発生しないのがよく分かりませんが、Htper-Vの拡張セッションのUbuntu 20.04対応に問題があるのかもしれません。このissueは閉じます。