Maxima,gnuplot,wxMaxima,を期待した通りに動かしたい。

以前Maximaについて質問(TerminalでMaximaを起動時にトラブルがあります。)した者です。

その後いろいろと試行錯誤を重ねまして、現状の説明を含むやや長文の質問をいたします。


上記の質問をした後、トラブルを避けるには使い始めまでお膳立てされているものがいいと考え、こちら(http://andrejv.github.io/wxmaxima/download.html)からダウンロードしたパッケージを使おうと試みました。

デザインされたアイコンもあり見かけは親切できちんと動きそうなものでしたが、gnuplot.appはx11もaquatermも認識しません(gnuplot>set terminal # でaqua無しx11無し)し、Maximaはgnuplot.appが見つからないと言ってきます。wxMaximaに至ってはただGUIが立ち上がるだけで数式処理さえ動作しません(shift+return→出力がないまま次の行に移る)。

これらは現在は/Applicationsにて$ rm -r -fで削除済みです。


次にMacPortsを使ってgnuplot,Maixima,wxMaximaをそれぞれインストールをしました。これらはすべてきちんと動作しているのですが、別の問題があります。

MacPortsを使ってインストールしたものの内、gnuplotとMaximaは/opt/local/binに保存されています。しかしwxMaximaのバイナリはどこか分かりません。$ which wxMaximaと聞いても応答は無く何も言わずコマンドプロンプトが出てきます。

またMaximaについても数式処理は動作しますがplot3dが使えません。/Applications/gnuplot.appが見つからないと言ってきます。これは/Applications/gnuplot.appが存在しないので当然ですが。

更に、/ApplicationsにwxMaximaは存在しないにも関わらず、LaunchpadにはwxMaximaのアイコンがありそれをクリックするとwxMaximaが立ち上がります。理解できません。


以上、長くなりましたが現状報告となります。


ここからが質問となります。

私の希望は以下のようなものです。


・gnuplotの出力先をx11とaquatermのどちらも選べること

・Maximaからgnuplotを起動させられること

・上の二項目をwxMaximaで動作させられること

・/Applicationsにgnuplot.app、Maxima.app、wxMaxima.appがあること

・それらがLaunchpadにて、上記のURL先で配布されているパッケージのアイコンで表示されること


これらの希望を実現する方法を教えていただけますでしょうか。

よろしくお願いします。

MacBook Air, OS X El Capitan (10.11.6), null

投稿日 2016/12/09 05:03

返信
返信: 12

2016/12/09 08:47 hymd.apple への返信

失礼します。

SourceForge版を少し触っただけでMacPorts等は現在使っていませんので、わかる範囲だけになります。

hymd.apple による書き込み:


次にMacPortsを使ってgnuplot,Maixima,wxMaximaをそれぞれインストールをしました。これらはすべてきちんと動作しているのですが、別の問題があります。

MacPortsを使ってインストールしたものの内、gnuplotとMaximaは/opt/local/binに保存されています。

『/opt/local/bin』にあるのは「〜.app」ということでよろしいでしょうか。

しかしwxMaximaのバイナリはどこか分かりません。$ which wxMaximaと聞いても応答は無く何も言わずコマンドプロンプトが出てきます。

FinderやLaunchPadからのアプリケーション起動と、Terminal(shell)からのコマンド実行は別の仕組みです。

  • Finderからではアイコンをクリックするとこでそのアプリファイル内にある情報に基づいて実行されます。
  • LaunchPadからでは専用のデータベースを参照し、クリックされたに対応するアプリファイルを特定します。(あとはFinderと同じ)
  • shellからではパス無し(例:echo)で指定された場合、環境変数PATHに登録されたディレクトリ(フォルダ)を順に検索し、見つかったコマンドを実行します。

「which」コマンドはあくまでもshellで実行するコマンドを検索するだけです。

アプリ内からコマンドが実行されるときは、パス付き(例:/bin/echo)で指定するか、独自にPATH環境変数への追加が行われているので、whichで見つかるとは限りません。

またMaximaについても数式処理は動作しますがplot3dが使えません。/Applications/gnuplot.appが見つからないと言ってきます。これは/Applications/gnuplot.appが存在しないので当然ですが。

SourceForge版のwxMaximaの「How to intall.rtf」を見るとgnuplotを使用するにはMaximaに対してgnuplotの場所を指定する必要があり、そのための初期設定ファイルを作成することになっています。

更に、/ApplicationsにwxMaximaは存在しないにも関わらず、LaunchpadにはwxMaximaのアイコンがありそれをクリックするとwxMaximaが立ち上がります。理解できません。

先にも書きましたが、LaunchPadが表示するアイコンはデータベース上の情報に基づいています。/Applicationにあるアプリは自動的に登録されますが、インストーラ等により他の場所にあるものが登録されることもあります。

以上、長くなりましたが現状報告となります。


ここからが質問となります。

私の希望は以下のようなものです。


・gnuplotの出力先をx11とaquatermのどちらも選べること

SourceForge版のデフォルトではqtになっています。出力先の指定は「set term」コマンドで行いますが、Sourceforge版ではサポートされていません。それらの出力先を選択可能にするにはgnuplotのコンパイル時にオプション(--with-X11と--with-aquaterm)で指定しておく必要があるようです。

MacPortsではVariantによる指定になるかと思いますが、何を指定するかは未確認です。

・Maximaからgnuplotを起動させられること

SourceForge版では「~/.maxima」に「maxima-init.mac」という初期設定ファイルを以下の内容で作成します。

gnuplot_command:"/Applications/Gnuplot.app/Contents/Resources/bin/gnuplot"$

set_plot_option([gnuplot_term, qt])$

hymdさんの場合は、1行目の下線部を実際にあるgnuplot実行ファイルのフルパス、2行目の下線部を初期設定で使用する出力先(x11、aquaterm)に変更が必要でしょう。

・上の二項目をwxMaximaで動作させられること

設定(command-,)のMaximaタブでMaxima本体のパスは正しく設定されていますでしょうか。

・/Applicationsにgnuplot.app、Maxima.app、wxMaxima.appがあること

移動できない理由はわかりませんが、アプリケーション本体を別の場所に置いたまま、/Applicationsにもアイコンを起きたい場合はエイリアスかシンボリックリンクを作成すれば良いのではないでしょうか。

シンボリックリンクの作成例:(名前等は例文ようで実在するものではありません)

ln -s /some/where/on/disk/sample.app /Applications/.

wxMaximaの場所が不明ということですが、起動中であればDockアイコンのcontrol+クリックで表示されるメニューから「オプション>Finderで表示」で確認できるのではないでしょうか。

・それらがLaunchpadにて、上記のURL先で配布されているパッケージのアイコンで表示されること

/Applicationsフォルダにアプリ(もしくはそのエイリアスかシンボリックリンク)が置かれた時点でLaunchPadにも登録されると思います。

これらの希望を実現する方法を教えていただけますでしょうか。

よろしくお願いします。


以上、ご参考まで。

2016/12/10 15:46 hymd.apple への返信

なるほど、gnuplotが出力しようにも(その時点で)出力先となるX11の環境がなかったということですね。

処理の流れとしては

  1. 数式入力→wxMaxima→
  2. 処理依頼→Maxima→
  3. グラフ作成依頼→gnuplot→
  4. 表示依頼→X11/aquatermなど

のはずなので、問題はgnuplotということになりそうです。

手元でgnuplotのサイトから落とした5.0.5を試しましたが、Xquartzを終了した後だった場合はXquartzが起動して表示されました。(数秒待つ必要はありましたが...)

一応確認ですが、Xquartzはgnuplotをコンパイルする前にインストールされていましたか?

以前のX11はOS Xの一部でしたが、今のXquartzはAppleのバックアップがあるとはいえ独立したアプリケーションですので、標準のX11とは違うところがあるかもしれません。

なお、XquartzをインストールするとDaemonとAgent(バックグラウンドで動作するプログラム)が登録されます。

これらが正常に動作しているかも確認しておいた方がよいかもしれません。以下は手元での確認例です。

(通常)

$ launchctl list | egrep xquartz

- 0 org.macosforge.xquartz.startx

(XQuartz動作中)

$ launchctl list | egrep xquartz

5566 0 org.macosforge.xquartz.X11.7376

5577 0 org.macosforge.xquartz.startx

startxが動作していないようなら一度再起動してみるとかXQuartを再インストールしてみるとどうでしょうか。

2016/12/11 01:45 hymd.apple への返信

こちらで行った gnuplot についての検証結果を少しばかり。

# 前回のテストとは別のMacを使用(OS: El Capitan)

# Macportsでx11,aqua,qt,xwtを追加指定してインストール。


  1. set term x11の時点でXQuartzは起動。
  2. set term で出力先を切り替えても、それまでの出力先との接続は残っている。
  3. 切る方法はあるかもしれないが現時点では不明。
  4. そのため、その段階で出力先のアプリケーションを終了するとエラーが発生する。
  5. 一旦エラーが発生すると、再度そのアプリケーションに出力しようとしても描画に時間がかかったりまったく描画されなかったりする。(出力先により異なる。アプリ終了時にgnuplot側で表示されるエラーメッセージ参照)
  6. 見た感じだと「set term x11 reset」を実行することでエラー状態が解消され、次の「set term x11」で再びXQuartzが起動。
  7. またgnuplotを再起動することでも正常化。

ということで基本的にgnutplotから指定した出力先のアプリケーションはgnuplotを終了するまで起動したままにしておくのが良さそうです。(3の答えが見つかれば別ですが)


それと、一つ訂正です。ずっと「aquaterm」としてきましたが、gnuplotで指定するときは単に「aqua」でした。


とりあえず、今回は以上です。

2016/12/09 08:50 ToMi への返信

補記:

SourceForge版のデフォルトではqtになっています。出力先の指定は「set term」コマンドで行いますが、Sourceforge版ではサポートされていません。それらの出力先を選択可能にするにはgnuplotのコンパイル時にオプション(--with-X11と--with-aquaterm)で指定しておく必要があるようです。

ちなみに以下がSourceForge版で選択できる出力先一覧になります。

gnuplot> set term


Available terminal types:

canvas HTML Canvas object

cgm Computer Graphics Metafile

context ConTeXt with MetaFun (for PDF documents)

corel EPS format for CorelDRAW

dumb ascii art for anything that prints text

dxf dxf-file for AutoCad (default size 120x80)

eepic EEPIC -- extended LaTeX picture environment

emf Enhanced Metafile format

emtex LaTeX picture environment with emTeX specials

epslatex LaTeX picture environment using graphicx package

fig FIG graphics language for XFIG graphics editor

gif GIF images using libgd and TrueType fonts

hpgl HP7475 and relatives [number of pens] [eject]

jpeg JPEG images using libgd and TrueType fonts

latex LaTeX picture environment

lua Lua generic terminal driver

mf Metafont plotting standard

mp MetaPost plotting standard

pcl5 HP Designjet 750C, HP Laserjet III/IV, etc. (many options)

png PNG images using libgd and TrueType fonts

postscript PostScript graphics, including EPSF embedded files (*.eps)

pslatex LaTeX picture environment with PostScript \specials

pstex plain TeX with PostScript \specials

pstricks LaTeX picture environment with PSTricks macros

qms QMS/QUIC Laser printer (also Talaris 1200 and others)

qt Qt terminal

svg W3C Scalable Vector Graphics

tek40xx Tektronix 4010 and others; most TEK emulators

tek410x Tektronix 4106, 4107, 4109 and 420X terminals

texdraw LaTeX texdraw environment

tgif TGIF X11 [mode] [x,y] [dashed] ["font" [fontsize]]

tikz TeX TikZ graphics macros via the lua script driver

tkcanvas Tk/Tcl canvas widget [perltk] [interactive]

tpic TPIC -- LaTeX picture environment with tpic \specials

unknown Unknown terminal type - not a plotting device

vttek VT-like tek40xx terminal emulator

xterm Xterm Tektronix 4014 Mode

gnuplot>

2016/12/09 11:04 ToMi への返信

返信いただきありがとうございます。



『/opt/local/bin』にあるのは「〜.app」ということでよろしいでしょうか。

分かりません。ただ.app(拡張子?)はついてません。

$ open gnuplot で起動する類のものです。バイナリというのでしょうか。

移動できない理由はわかりませんが、アプリケーション本体を別の場所に置いたまま、/Applicationsにもアイコンを起きたい場合はエイリアスかシンボリックリンクを作成すれば良いのではないでしょうか。

インストールしたgnuplotやMaximaの構成が/opt/local/binや/opt/local/share等複数のディレクトリに散らばっていて、何がどう関連していてgnuplotやmaximaが動作しているのか私自身が把握できていないからです。ちなみにMacportsからインストールしたものです。


アドバイスをいただいた後あれこれと調べてみました結果、gnuplotとmaximaに関してはwxMaximaやGNU Octaveの裏で働いてくれる何かだと思っておいて見えない状態、つまりLaunchpadにアイコンが表示されなくてもよい、と考え直しました。


現状について、wxMaximaの保存場所に関しては/Applications/Macportsにて確認しました。数式処理も確認済です。

/opt/local/binにあるgnuplotは、デフォルトの出力先がaquatermであり、gnuplot> set term x11で出力先が切り替わることが確認できています。

同じディレクトリにあるMaximaは数式処理はしますが、gnuplotに出力ができません。

そこで新たな目標設定として


・wxMaximaやGNU Octaveでgnuplotを立ち上げることが出来る。

・デフォルトの出力先はX11で任意でAquatermに切り替えられる。


この二点に変更します。


ToMiさん、親切に教えていただいて本当にありがとうございます。

初心者の私の説明なので至らない点も多いかと思いますが、もしMacportsでインストールしたものについてご存知でしたら返信お願いします。

2016/12/09 13:05 ToMi への返信

追加報告:

/Users/user にて


$ echo 'set term x11' >> .gnuplot


/Users/user/.maximaにて


$ echo 'gnuplot_command:"/opt/local/bin/gnuplot"$' >> maxima-init.mac

$ echo 'set_plot_option([gnuplot_term , x11])$' >> maxima-init.mac


でほぼ解決しました。初めてCUIを通してインストールしたプログラムが動いて感動です。


あとはwxMaximaから出力先を任意で(aquaterm等に)指定できれば完璧です。

2016/12/09 13:25 hymd.apple への返信

そこまでくれば、ゴールは目の前ですね。


「.gnuplot」や「maxima-init.mac」はそれぞれのコマンドが起動時に実行するコマンドをならべただけですから、maxima/wxMaximaでのgnuplotの出力先をaquatermに変更する際は

set_plot_option([gnuplot_term, aquaterm])$

をその中で実行すればいいはずです。


以下は補足になります。

『/opt/local/bin』にあるのは「〜.app」ということでよろしいでしょうか。

分かりません。ただ.app(拡張子?)はついてません。

$ open gnuplot で起動する類のものです。バイナリというのでしょうか。

ということは、アプリケーションではなく実行ファイルということでしょうね。そのファイルがどんなものかは「file」コマンドである程度確認できます。

実行例:

$ file /opt/local/bin/git

/opt/local/bin/git: Mach-O 64-bit executable x86_64

この場合は、x86系64bitアーキテクチャ(CPU)におけるMach-O形式の64bitの実行形式のファイルであることを表しています。(OS Xで実行されるバイナリファイルは基本この形式です)

移動できない理由はわかりませんが、アプリケーション本体を別の場所に置いたまま、/Applicationsにもアイコンを起きたい場合はエイリアスかシンボリックリンクを作成すれば良いのではないでしょうか。

インストールしたgnuplotやMaximaの構成が/opt/local/binや/opt/local/share等複数のディレクトリに散らばっていて、何がどう関連していてgnuplotやmaximaが動作しているのか私自身が把握できていないからです。ちなみにMacportsからインストールしたものです。

MacPortsは実行ファイルを/opt/local/bin(や/opt/local/sbin)にデフォルトでは置くようになっているようですね。

また、Macportsはshellの起動時に読み込まれるファイル(.bash_profileなど)に変更を加え、前述のPATH環境設定に/opt/local/binや/opt/local/sbinを追加するようにしています。それにより、改めて設定しなくてもそこにあるコマンドをshellからパス無しで実行可能になっています。ちなみに、/opt/local/share以下には実行時やコンパイル時に参照されるライブラリやマニュアル(manファイル)などが格納されているはずです。

2016/12/09 13:47 ToMi への返信

ありがとうございます。

また少々トラブルが有りました。


wxMaxima起動にて。


(%i1) (sin(x),[x,-6*%pi,6*%pi],[y,-2,2],[gnuplot_term, aquaterm);

(%o1) [/Users/user/maxout.gnuplot_pipes,/Users/user/maxplot.x11]


上記を実行した結果何らかのファイルがホームディレクトリに出力されましたが、グラフィックに表示されません。

先程は[gnuplot_term, aquaterm]の記述がない状態で上手くいったのですが、それもさっきまでの話で今はこの記述を抜いても同じような出力結果になります。


朝早くから返信ありがとうございます。

2016/12/09 15:29 hymd.apple への返信

それら二つのファイルが作られること自体はプロット描画時の正常な動作です。

# SourceForgeサイトにあるマニュアル参照。

コマンドの入力ミスとかありませんか?

# ここへの書き込みでは間違っていますよね?(1: plot2dがない。2: gnuplot_term指定部の“]”が無い。)

実際に実行したコマンドを正確(かつ実行順)にしることができれば問題点がわかるかもしれません。

# 私でなくても誰かが...


なお、手元のテストでは出力先をQt(画面)とGIFファイルの間で問題なく切り替えられています。

# Qt出力

plot2d(sin(x),[x,-6*%pi,6*%pi],[y,-2,2],[gnuplot_term, qt]);

# GIF出力

plot2d(sin(x),[x,-6*%pi,6*%pi],[y,-2,2],[gnuplot_term,gif],[gnuplot_out_file,"~/maxima-test.gif"]);

2016/12/09 15:39 ToMi への返信

コマンドに関しては、コピペ作業中にミスをしました。

確かに、(%i1) plot2d(sin(x),[x,-6*%pi,6*%pi],[y,-2,2]); と打ちました。


このトラブルに関して一つ発見がありました。

XQuartzを閉じた状態で上記のコマンドを実行すると先程説明したような症状が出ますが、

XQuartzを立ち上げた状態で実行したときには描画されます。

wxMaximaとgnuplotのどちらかは分かりませんが、コマンド実行時に立ち上がってないXQuartzを呼び出せないようです。

2016/12/10 17:56 ToMi への返信

返信ありがとうございます。

一応確認ですが、Xquartzはgnuplotをコンパイルする前にインストールされていましたか?

はい。XQuartzはネットで検索してダウンロードしたインストーラでインストールしました。

gnuplotはMacportsを通してインストールしました。

$ sudo port install gnuplot +x11

こんなコマンドを実行しました。


XQuartzに関して。

(起動時)

$ launchctl list | egrep xquartz

- 0 org.macosforge.xquartz.startx


(XQuartz起動中)

$ launchctl list | egrep xquartz

63360org.macosforge.xquartz.X11.85472

63460org.macosforge.xquartz.startx

2016/12/11 02:40 ToMi への返信

ToMiさんのほうでもいろいろと試していただいたようでありがとうございます。


1. set term x11の時点でXQuartzは起動

4. そのため、その段階で出力先のアプリケーションを終了するとエラーが発生する

こちらの環境も同様です。


gnutplotから指定した出力先のアプリケーションはgnuplotを終了するまで起動したままにしておくのが良さそうです。

はい。wxMaximaからplotを実行するときも、x11が立ち上がっているときのみ描画に成功します。

現時点では手動でx11を立ち上げるしかないのかもしれません。

海外の掲示板にもこちらで確認した症状と似たようなケースが報告されていたのですが、どうやらデバッグが済んでないといいますか、バイナリに由来しているのか、gnuplotのMacでの動作には不自由があるようです。


ToMiさんには、ここまでお付き合い頂きありがとうございました。結果的には望んだ形で終われませんでしたが、始めにこの質問を投稿したときにはバイナリというものさえ知らなかった私ですが、この件を通してUnixやソフトの構成への理解が格段に進んだように思います。また別の質問をこのコーナー(Mac OS & システムソフトウェア)に投稿することもあるだろうと思います。またそのときはよろしくお願いします。ありがとうございました。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

Maxima,gnuplot,wxMaxima,を期待した通りに動かしたい。

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。