« ゴムバンドの摩擦力による動力伝達(問題点が解決) | トップページ | ゴムバンドの摩擦力による動力伝達(3次元) »

2013年8月10日 (土)

Salome-Meca2013.2でASTKが起動しない

私の環境だけかもしれませんが、先月(2013年7月)リリースされた「Salome-Meca2013.2」にて、ASTKが起動できず困っていました。

Linuxに不慣れだと、こういうときに非常に苦労します。

試してみた環境は

(1)インテルマシン(SuSE10)+仮想PC(VirtualBox)+debian7 64bit
(2)インテルマシン(Windows7)+仮想PC(VMware)+debian6 64bit
(3)インテルマシン(Windows7)+仮想PC(VMware)+ubuntu12.04 LTS 64bit

です。

上記のいずれも、Salomeは立ち上がりますが、Asterモジュールのメニューから「Aster」-「Tool」-「Run Astk」をクリックしてもASTKが起動しませんでした。画面上のアイコンをクリックしても無反応です。

Salomeはインストーラーのデフォルト(自分のホーム)にしています。ユーザー名は「cae」にしているので、Salomeの起動は

/home/cae/salome/appli_V6_6_0/runSalomeMeca

をクリックして起動していますが、これを「端末内で実行」すると、端末にメッセージが表示されるので、これを見てみると、astkを起動しようとしたときに下記のエラーが出ていました(debian)。

/home/cae/salome/SALOME-MECA-2013.2-LGPL/tools/Code_aster_frontend_1131final/bin/astk: line 46: wish: コマンドが見つかりません

“wish”というのが無いようです。

debianとubuntuで色々試していましたが、ubuntu12.04上でwishと打ってみたときに、下記のメッセージが出ました。

The program 'wish' can be found in the following packages:
* tk
* tk8.4
* tk8.5
Try: sudo apt-get install <selected package>

なるほど、tkというのを入れると良いようです。
上記のうち新しそうなtk8.5を入れることにしました。

cae@ubuntu:~$ sudo apt-get install tk8.5

何やらズラズラとメッセージが表示されましたが、ちゃんと入ったようです。

その後、もう一度Salomeを立ち上げ、Asterからastkアイコンをクリックすると、無事astkが起動しました(Asterのメニューからでも起動しました)。

また、debian6でもtk8.5を入れた後に試してみると無事起動できました。

なお、DEXCS2012-Salome-D1-B1-64(ubuntu12.04 + Salome-Meca2013.1日本語版)に、追加で2013.2をインストールした場合は、初めからこの問題は起きませんでした。

それならDEXCS2012に追加インストールで良いじゃないかと思うのですが、DEXCS(ubuntu)は一部の仮想PC環境との相性が原因のためか、Geometryの表示画面(OCC)に問題が生じる場合が有り、私としてはdebianを使いたい理由があります。

環境がちょっと違うと動かない事があったりして、Linuxのアプリはなかなか難しいです。

« ゴムバンドの摩擦力による動力伝達(問題点が解決) | トップページ | ゴムバンドの摩擦力による動力伝達(3次元) »

導入・環境」カテゴリの記事

コメント

遅レスで失礼します.

確かに,Salome-Mecaのディレクトリ内にtkパッケージは含まれていないようです.
ただ,これまでLinuxとSalomeをインストールする際,tkを明示的にインストールした記憶がありません.

ひょっとしたら,最近のLinuxディストリビューションはtkパッケージはデフォルトでインストールされないのかもしれませんね.

tkは,GUI開発環境を含むパッケージで,ウィンドウとかボタンとかテキストボックスとかそういうのを提供しています.
昔はtcl/tk等でよく使われていたのですが,最近はQt等が台頭しており,tkはあまり使われなくなったんですかね.

しかし,もしそうだとしたら,Qtパッケージ同様,Salomeの中にtkも含んでほしいです.
Universal Packageですからね.

この問題は、本家のForumでも話題になっているようです。
解決策は、
http://www.code-aster.org/forum2/viewtopic.php?id=18977
に記載されています。

takeru7584さん、 bairiさん、情報ありがとうございます。

私がLinuxをインストールするとき、開発環境をインストールしない構成を指定したのかもしれません。

aki 様

bairi様のリンク先について,
解説いたします.

まず,aki様のおっしゃるようなインストール時にパッケージ選択の問題ではありません.
eDFのセッティングミスによるものであると考えるのが自然です.
aki様は何も不備はありませんでした.

先のコメントで私が述べたとおり,
tkパッケージは本来Salome-Mecaのパッケージに含め,環境変数等によってSalome-Meca内のコマンドを実行するように作るべきです.

後々,bairi様と調査したところ,
実は,2013.1はそれが実現できておりました.
それが,2013.2でどうもセッティングミスがあったようです.
tkのパッケージ自体は2013.1,2013.2のどちらにも含まれておりました.

bairi様のリンク先では,
shスクリプトの中を変更することで問題を回避できる旨が記述されているのですが,
2013.1では,以下のようになっておりました.

./SALOME-MECA-2013.1-LGPL/tools/Code_aster_frontend_1131final/etc/codeaster/profile.sh より,
49行目:
export WISHEXECUTABLE=`which wish8.5`

このパッケージは以下にあります.
./SALOME-MECA-2013.1-LGPL/prerequisites/Tk_859

ところが,2013.2では,以下のようになっております.

./SALOME-MECA-2013.2-LGPL/tools/Code_aster_frontend_1131final/etc/codeaster/profile.sh より,
49行目:
export WISHEXECUTABLE=wish

このパッケージは以下にあります.

./SALOME-MECA-2013.2-LGPL/prerequisites/Tk_859

ところが,どちらもwishコマンドは存在しません.
wish8.5は存在します.

つまり,2013.2も2013.1と同様,

./SALOME-MECA-2013.2-LGPL/tools/Code_aster_frontend_1131final/etc/codeaster/profile.sh の
49行目は,

export WISHEXECUTABLE=`which wish8.5`

と記述するべきです.
(bairi様のリンク先では,以下のようにするよう指示がしてありました.
export WISHEXECUTABLE=wish8.5
)

推測ですが,
eDF開発側でtkパッケージをインストールしていたために
システム側にインストールされたwishコマンドを用いて動作してしまっていたので,
問題に気づけなかったのでしょう.

今,aki様の環境ではシステムにインストールされたtkパッケージを使って
ATSKを起動している状況であると思います.
むしろ,そちらの方がイレギュラーの状態だと思うので,
上記ファイルの編集をお奨めします.

もし何か不明な点があれば,コメントをお願いいたします.

takeru7584さん、詳細なご解説ありがとうございます。

なるほど、本来Salome-Meca内に含まれている方のwishを使うべきなのですね。

ご解説に従い、下記のようにやってみて、正常に動作しました。

(1)まず、追加でインストールしたTk8.5を削除しました。
suでスーパーユーザーになって
$apt-get remove tk8.5

(2)この状態では、最初のインストール状態と同様、Salomeからastkは起動しません。

(3)ご解説通り

./SALOME-MECA-2013.2-LGPL/tools/Code_aster_frontend_1131final/etc/codeaster/profile.sh の
49行目を

export WISHEXECUTABLE=`which wish8.5`

に修正しました。
これで、Salomeからastkが起動するようになりました。

(なお、この時に、初めはwhich wish8.5を囲んでいる`(キーボードのShiftを押しながら@)を、'(Shiftを押しながら7)と間違えていて起動せずあせりました。`は普段あまり使わないので・・・。

それから

export WISHEXECUTABLE=wish8.5

にしても、同じく正常に起動いたしました。

takeru7584さん、bairi さん、ご提供頂いたリンク先の内容を正しく理解できず、お手間をおかけして申し訳ございませんでした。
今後ともよろしくお願い申し上げます。

aki様

コメントありがとうございます.

余談ですが,折角なので
"`"と"'"の違いについて少し説明します.

結論を言うと,
2013.1で行われている通り,2013.2でも

export WISHEXECUTABLE=`which wish8.5`

と入力する方が望ましいと思います.

"'"は,"と同様,囲んだ中身を文字列として変数に格納する等行う際に用います.
スクリプト言語の種類によって細かな意味は違いますが,
例えば,""の中に'を使いたいときや,その逆のときに使い分けたりします.

ところが,"`"はちょっと意味が違います.

今回,

export WISHEXECUTABLE=`which wish8.5`

と入力すべきと書きました.

実は,この行の意味は,

`which wish8.5`のコマンド実行結果をWISHEXECUTABLEという変数名で格納し,
それを環境変数として設定するよう指示(export)しています.

このうち,

which wish8.5

とは,

wish8.5 のコマンドのフルパスを返すという意味です.
ただし,"wish8.5"というコマンドが,
カレントディレクトリ,またはパスの通っている(環境変数PATHに登録されている)ディレクトリに存在するときのみコマンドのパスを返し,ない場合は,コマンドがないと怒られます.
(ためしに,コマンドラインでwhich lsとか,which runSalomeMecaとかしてみてください.)

今回の場合,

runSalomeMeca

が実行されたときに環境変数パスが再設定され,

/home/username/salome/SALOME-MECA-2013.2-LGPL/prerequisites/Tk_859/bin

にもパスが通るのでしょう.

その上で,

which wish8.5

が実行されると,

/home/username/salome/SALOME-MECA-2013.2-LGPL/prerequisites/Tk_859/bin/wish8.5

と帰ってくるのだと思います.

上のwish8.5のフルパスが

WISHEXECUTABLE

という変数に一度格納され,

export でWISHEXECUTABLEが環境変数にセットされます.

profile.shの49行目を

export WISHEXECUTABLE=wish8.5

と設定しても動作するのは,

多分,runSalomeMeca実行時に

/home/username/salome/SALOME-MECA-2013.2-LGPL/prerequisites/Tk_859/bin

にパスが通っているため,

フルパスではなくてもwish8.5が実行できてしまっているのでしょう.

ただし,
スクリプト言語等の種類によっては,
そのスクリプトから別スレッドや別プロセスであるコマンドを実行する際,
環境変数が引き継がれない場合があります.
それ以外にも,環境変数PATHはよく使われるため,
その分途中で編集したりすることもあります.
(これはプログラムの考え方によってはです.
私は編集するのはあまりよく思っていません.)

そのために,

export WISHEXECUTABLE=`which wish8.5`

として,WISHEXECUTABLEにwish8.5のフルパスを格納しているのでしょう.
(その方がトラブルが少ないと考えてのことだと思います.)

以上,
シェルスクリプトの話でした.
難しかったら流して頂いて結構です(^_^;).
(ここまで読んだらもう遅いですね...(笑))

takeru7584さん、再び詳細なご解説ありがとうございます。
なるほど、` にはそのような役割があったのですね。

Linuxのソフトを使おうとすると、やはり基本的なところが分かっていないと難しいですね。
コンパイル不要のバイナリ配布であっても、ちょっとつまずくと、とたんに分からなくなります。

そういう事を考えると、Salome-Mecaは公式フォーラムが有るのが助かりますね。

また、takeru7584さんのようにネット上でアドバイスして頂ける方の存在も有り難いです。どうもありがとうございました。

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1605696/52819405

この記事へのトラックバック一覧です: Salome-Meca2013.2でASTKが起動しない:

« ゴムバンドの摩擦力による動力伝達(問題点が解決) | トップページ | ゴムバンドの摩擦力による動力伝達(3次元) »