** ERROR ** Could not open specified DVI file

** ERROR ** Could not open specified DVI file

- KIMURA Ryuji の投稿
返信数: 23
お世話になります。

mac os x 10.6+texshopです。
emathを導入すべくいろいろといじっているうちに、
タイプセットそのものができなくなってしまいました。
texshopのコンソールに以下のエラーが出ます。


ファイル名.dvi -> ファイル名.pdf

** ERROR ** Could not open specified DVI file: ファイル名.dvi

Output file removed.


ファイル名.texと同じディレクトリに生成されるファイル名.logの中身は空です。
これはdviファイルが生成されていないことを示しているのでしょうか。
KIMURA Ryuji への返信

Re: ** ERROR ** Could not open specified DVI file

- 奥村 晴彦 の投稿
> これはdviファイルが生成されていないことを示しているのでしょうか。

多分そうでしょうね。
これはここでお聞きになるより,Finderか何かでそのフォルダを見てみたほうが確実にわかりますよね。

どうしてdviファイルができなくなったのかは,これだけの情報ではまったくわかりません。
奥村 晴彦 への返信

Re: ** ERROR ** Could not open specified DVI file

- KIMURA Ryuji の投稿
言葉足らずでした。

Output file removed.
は、
「.texから.dviを作ったけど、.dviから.pdfが作れなかったので、.dviは削除しましたよ」
と解釈してよいのか、という質問でした。

つまり、
1)そもそも.dviが作られていないのか
2)あるいは(上記のように)一度作られた.dviが削除されたのか
のどちらなのかを、まず調べねばと思ったのです。

1)なら、tex>dviの段階に、
2)なら、dvi>pdfの段階に、
それぞれ問題があるのではないかと。

そして、
Finderで.dviが見つからない
.logの中身が空
の2点から、上記1)の意味ではないかと考えた次第です。


投稿後、ターミナルで試みることを思い出し、
.texの存在するディレクトリに移動した上で、
/Applications/pTeX.app/teTeX/bin/ptex ファイル名.tex
としてみました。
(パスを通していないので、コマンド部分はフルパスです。)
すると、何の反応もありません。

具体的には、ターミナルに、
コンピュータ名:ディレクトリ名 ユーザ名$ /Applications/pTeX.app/teTeX/bin/ptex ファイル名.tex
コンピュータ名:ディレクトリ名 ユーザ名$
と表示され、次のコマンドを待っている状態です。

何のメッセージも出ないため、さてどうしたものかと。
KIMURA Ryuji への返信

Re: ** ERROR ** Could not open specified DVI file

- 奥村 晴彦 の投稿
Output file removed. は dvipdfmx のメッセージですから,空のpdfを削除したということです。

何の反応もないというのは変ですね。私の配布しているものではなさそうなのでよくわかりませんが,platex でなく ptex で試されているのは大丈夫でしょうか(それにしても何もメッセージが出ないのは理由がわかりませんが)。
奥村 晴彦 への返信

Re: ** ERROR ** Could not open specified DVI file

- KIMURA Ryuji の投稿
>Output file removed. は dvipdfmx のメッセージですから,空のpdfを削除したということです。

なるほど。dvipdfmxが、
dviが作られていないので、当然開けない。
そのため空のpdfができた。
それを削除した。
と言っているわけですね。
理解できました。ありがとうございます。

と同時に、奥村先生のコメントを拝見し、
1)tex>dviの段階
2)dvi>pdfの段階
のうちの2)の方について、ターミナルからdvipdfmxを試していないことに気付きました。

そこで、以前(トラブル前)に作成したdviに対して、ターミナルから、
/opt/local/bin/dvipdfmx
としてみたところ、(いくつかのWARNINGは出ましたが)pdfが出力されました。

ここで、なぜoptなのかというと、
パスを通していないため、フルパスが必要。
Finderのスポットライトで、dvipdfmxを検索。
2つ見つかる。一つは、
/opt/local/bin/dvipdfmx(上記)
もう一つは、
/opt/local/var/macports/software/pTeX/20090501_1+darwin_9+motif+utf8/opt/local/bin/dvipdfmx
一つ目を使用。
という流れです。


>platex でなく ptex で試されているのは大丈夫でしょうか

これについてご説明します。
まず、Finderのスポットライトでplatexを検索しました。すると、
「platex」という名の「フォルダ」や、
「platex.拡張子」という名の「ファイル」
は出てくるのですが、
「platex」という名の「unix実行ファイル」
は一つも出てきませんでした。

そこで、pTeX.appのパッケージの中にあることを思い出し、
/Applications/pTeX.app/teTeX/bin/platex
としました。しかし反応ナシ。これは、
/Applications/pTeX.app/teTeX/bin/platex
が、エイリアスファイル(Windowsのショートカットファイル)だからか?と考え、
オリジナルファイルである
/Applications/pTeX.app/teTeX/bin/ptex
で試した。という次第です。


今、Finderのスポットライトでptexを検索してみたところ、
さきほどのdvipdfmxと同様に、
/opt/local/bin/ptex
と、
/opt/local/var/macports/software/pTeX/20090501_1+darwin_9+motif+utf8/opt/local/bin/ptex
の2つが見つかりました。

/Applications/pTeX.app/teTeX/bin/ptex
は、パッケージ内部のため検索結果に反映されないのだと解釈しています。

そして、ターミナルから、
/opt/local/bin/ptex
としてみたところ、反応はありました。ありましたが、
This is pTeX, Version 3.141592-p3.1.10 (utf8.euc) (Web2C 7.5.4)
(./ファイル名.tex
! Undefined control sequence.
l.1 \documentclass
[11pt]{jarticle}
?
というものでした。returnキーを押していくと、
! Undefined control sequence.
l.2(略)
! Undefined control sequence.
l.3(略)
と続いていきます。

長くなり申し訳ありません。
自分なりに整理してみますと、
1)複数のtexがインストールされている。具体的には、
/opt
と、
/opt/local/var/macports/software/pTeX/20090501_1+darwin_9+motif+utf8/opt/
と、
/usr
の3箇所。
2)1)の3箇所目/usrに、dvipdfmxやptexが存在しない。
以上2点が根本的な問題のような気がしております。

実は「LaTeXiT」というアプリケーションも併用しており、
そちらは、上記1)の一つ目/optを使用しています。
そして、これまで通り機能しています。

ということは、今回のトラブルの要因は2)の方かなと感じるのですが。。。

いずれにしろ、1)の状態を解消し、texを使用するための環境を整理せねばと感じています。

手順としては、
一度tex関連をすべて削除し、再度構築
だと思うのですが、
どこからどこまでを削除すればよいか
がわかりません。
どうかご教授願えませんでしょうか。

なお、削除の後の再構築については、奥村先生の「美文書作成入門」の5版が本日到着予定ですので、そちらを参照してゼロから取り組んでみるつもりです。
KIMURA Ryuji への返信

Re: ** ERROR ** Could not open specified DVI file

- KIMURA Ryuji の投稿
pTeX.appの再インストールにより解決しました。

今回、そもそもの発端は、
mac+texshop+emath
の組み合わせで、perlが正しく作動しないことでした。

初歩的なこととは思いますが、同様にお困りの方がおられた場合のために、記しておきます。

1)emath.plの置き場所について
/Library/Perl/
ではダメで、
/Library/Perl/5.10.0
でした。

2)--shell-escapeについて
http://www2.kumagaku.ac.jp/teacher/herogw/shell.html
の方法により、解決しました。

貴重な時間を割いていただき、ありがとうございました。
蛇足ですが、奥村先生の「美文書作成入門」の到着は明日でした。
楽しみに持っているところです。
KIMURA Ryuji への返信

Re: ** ERROR ** Could not open specified DVI file

- 奥村 晴彦 の投稿
うまくいってよかったですね。
ところで私はまだ --shell-escape は怖くて使えていません。
その代わりに今度の美文書付録のものについていえば
/usr/local/texlive/p2009/texmf/web2c/texmf.cnf

shell_escape_commands =
のところに,安全なコマンドを列挙しています。具体的には私の場合
extractbb
を書き足しています。
emathについても同様にできるかもしれません。
奥村 晴彦 への返信

Re: ** ERROR ** Could not open specified DVI file

- Akira Kakuto の投稿
> shell_escape_commands =
> のところに,安全なコマンドを列挙しています。

TeX Live 2009 における restricted shell escape には
security 上の問題が残っています。TeX Live 2009
としては、無効にしてあったと思います。
(TeX Live 2009 段階の W32TeX では、知られていた部分
を fix して、有効にしていました。)
従ってこれも不明のソースに対しては、使わないことを
お勧めします。準備中の TeX Live 2010 では今のところ
問題は見つかっていないので、有効になっています。

Akira Kakuto への返信

Re: ** ERROR ** Could not open specified DVI file

- 奥村 晴彦 の投稿
ptexlive for TeX Live 2009では有効になっていますが,フィックスされていたんでしたっけ>土村さん。
奥村 晴彦 への返信

Re: ** ERROR ** Could not open specified DVI file

- Akira Kakuto の投稿
私が調べた限り 20100322 ではフィックスされていないと思います。

Akira Kakuto への返信

Re: ** ERROR ** Could not open specified DVI file

- 土 村 の投稿
すいません、話題についていけてないですが、shell_escape_commands について、何もしていません。つまり ptexlive for TeX Live 2009 は TeX Live 2009 のままです。

grep shell_escape ptexlive-20100322/*.sh

でも何も出てきません。

TeX Live 2010 で修正されるのでしたら、該当部分の差分をどなたか作って公開して下さらないでしょうか。ptexlive に取り込みます。

土 村 への返信

Re: ** ERROR ** Could not open specified DVI file

- Akira Kakuto の投稿
TeX Live 2009 の texmfmp.c に対するパッチを
添付します。

Akira Kakuto への返信

Re: ** ERROR ** Could not open specified DVI file

- 土 村 の投稿
ありがとうございます。texlive-20091011-source/texk/web2c/lib/texmfmp.c を修正すればよいのですね。久しぶりなので探し回りました。ついでに dvips のパッチも差し替えて、本日版を公開しておきましたが、動作確認ができていませんので、不具合あったらすいません。

土 村 への返信

Re: ** ERROR ** Could not open specified DVI file

- 奥村 晴彦 の投稿
素早い!ありがとうございます。

確かに美文書5版DVDのものを実行しても
/usr/local/texlive/p2009/bin/i386-apple-darwin10.3.0/latex
では
restricted \write18 enabled.
が出ますが
/usr/local/texlive/2009/bin/universal-darwin/latex
では出ませんね。

どうやってexploitできるのかまだよく理解できていませんが,何かアナウンスすべきでしょうか。
奥村 晴彦 への返信

Re: ** ERROR ** Could not open specified DVI file

- Akira Kakuto の投稿
> 確かに美文書5版DVDのものを実行しても
> /usr/local/texlive/p2009/bin/i386-apple-darwin10.3.0/latex
> では
> restricted \write18 enabled.
> が出ますが
> /usr/local/texlive/2009/bin/universal-darwin/latex
> では出ませんね。

異なる texmf.cnf を読んでいるのでしょうか?
約束は以下のとおりです:
shell_escape = y or
shell_escape = t or
shell_escape = 1
どんなコマンドも shell escape として許可する。
shell_escape = p
制限付き。つまり shell_escape_commands にリストしたもの
だけを許可する。 shell_escape_commands が空のときは、
何も許可していないことになる。
それ以外、通常
shell_escape = n
shell_escape = f
shell_escape = 0 など。
shell escape を禁止する。

Akira Kakuto への返信

Re: ** ERROR ** Could not open specified DVI file

- 奥村 晴彦 の投稿
失礼しました。バイナリレベルで無効にしてあるということではなかったのですね。

両者のtexmf.cnfを比較してみると,ptex関連のものが挿入されているだけでなく,shell_escape = p か f かが違っていました。
奥村 晴彦 への返信

Re: ** ERROR ** Could not open specified DVI file

- 土 村 の投稿
TeX Live 2009 の中でも、いろいろあるようですね。
source/texlive-20091011-source.tar.xz を展開して Build スクリプトを実行すると inst/texmf/web2c/texmf.cnf が出来上がりますが、DVD の中の texmf/web2c/texmf.cnf と内容が異なります。ソースは直さずに DVD だけ手直ししたのでしょうか。

ptexlive ではソースからコンパイルするようにしているので、こういうのは対処に困ります。
奥村 晴彦 への返信

Re: ** ERROR ** Could not open specified DVI file

- 帯田 木偶太 の投稿
emath からの外部コマンド呼出しといえば大概 perl ですので、
shell_escape_commands に記述するのは危なっかしく感じます。

このスレッドでは emath への言及が唐突になっていますが、
最初に emath の掲示板で、perl の呼出しの問題として質問があり、
やりとりの中で TeX 自体のインストールのトラブルらしいと
目星がついてこのフォーラムに場所を移されたもののようです。
奥村 晴彦 への返信

Re: ** ERROR ** Could not open specified DVI file

- KIMURA Ryuji の投稿
ありがとうございます。

>ところで私はまだ --shell-escape は怖くて使えていません。

--shell-escapeについて調べると、必ずセキュリティ上の問題について言及があります。
しかし、具体的にどのようなことが起こり得るのかが書かれていません。
初心者である自分の解釈は、

1)自分で作成したtexのソースファイルを処理する分には、何ら危険性はない。
2)他人が作成したtexのソースファイルを処理する際には、悪意ある記述により、外部プログラムが起動され、被害を受ける可能性がある。
3)ということは、自分で書いたtexのソースファイルに限って--shell-escapeを用いれば問題ない。

というものでした。
しかしここで皆さんの議論、つまり熟練者が警戒している様子を拝見すると、
自分は何か大きな勘違いをしているのではないかという気がしてきたのですが、
いかがでしょうか。
KIMURA Ryuji への返信

Re: ** ERROR ** Could not open specified DVI file

- Akira Kakuto の投稿
> 自分は何か大きな勘違いをしているのではないかという
> 気がしてきたのですが、いかがでしょうか。

間違っておられません。自分のソースなら大丈夫です。
また、実際上殆どの場合心配ないと言ってもよいと思います。
悪意を持って、書いたソースを配布するような人は、おそらく
いないだろうという仮定をしています。
出所不明のものを扱わないようにすれば、あまり気にしない
でよいでしょう。

Akira Kakuto への返信

Re: ** ERROR ** Could not open specified DVI file

- 奥村 晴彦 の投稿
昨日は出張のため失礼しました>皆様。

角藤先生,どうもありがとうございます。さっそく土村さんに連絡をとっているところです。

KIMURA Ryuji 様,すでに角藤先生が書いてくださっていますように,信頼できる出所のファイルであればまったく問題ありません。

トノ 様,いまemathを見てみましたが,実行コマンドはemath.plといったものではなくperlそのものなんですね。これでは(脆弱性がなくても)shell_escape_commands に書くのはまずいですね。

emath掲示板は見ていませんでした。すみません。
奥村 晴彦 への返信

Re: ** ERROR ** Could not open specified DVI file

- KIMURA Ryuji の投稿
皆さんありがとうございます。
-shell-escapeのリスクについて、
自分で書いたtexソースファイルに対しての使用には問題がない
ということが確認でき、安心いたしました。

余談ですが、昨日届いた奥村先生の「美文書作成入門(5版)」を拝読しております。
第1章とあとがきを読むと、多くの方々の長期間にわたる膨大な労力の上に成り立っている素晴らしい資産なんだなあと感じました。
奥村 晴彦 への返信

Re: ** ERROR ** Could not open specified DVI file

- 大熊 一弘 の投稿
> emathについても同様にできるかもしれません。

と,水を向けていただきましたので,emath の場合について
   restricted \write18 enabled.
を利用する私案を書かせていただきます。
ただし,Windows を前提とします。

perl を起動するバッチファイルを用います。
ここでは仮に,そのファイル名を hoge.cmd とします。
仮のファイル名(hoge) は各自の好みで決めてください。
以下,hoge とあるところはすべて置き換えてください。
ただし,そのファイル名を他人に知られると \write18 の危険が身に及びます。

1) emathMy.sty (なければ作り,emath.sty と同じディレクトリに置きます)
 に,次の1行を追加します。
   \setPerlName{hoge}%

2) tex の実行ディレクトリ(platex.exe が存在しているディレクトリ)に
 次の1行からなるファイル hoge.cmd を作成します。
   perl %1

3) texmf.cnf の shell_escape_commands 末尾に
   ,hoge
を追加します。

注1:emath のバージョンについて
 丸ごとパックだけではダメで,修正パックを当ててあることが条件です。

注2:log ファイルには,ファイル名 hoge が記録されます。
 log ファイルをさらすことは危険を伴います。

注3:確認リスト perlhoge.tex です。-shell-escape オプションをつけずに
   platex perlhoge.tex
 を実行して,2の平方根の近似値
   1.4142135623731
 が表示されれば,
   emath から perl を子プロセスとして呼び出す
 ことが出来ています。なお,実行すると2個の作業ファイル
   perlhoge.d1.pl
   perlhoge.d1.dta
 が作成されます(emath のバージョンによっては
   perlhoge.d1 の部分は perlhoge_d1
 となります)。

% --- perlhoge.tex ---------------------------
\documentclass{jarticle}
\usepackage{emath}
\usepackage{emathPl}

\begin{document}
\calcval[s]{sqrt(2)}\rootii
\rootii
\end{document}