ローカルの仮想マシンにTeX Live (LaTeX) をインストール (2)

Apache2 が動いているローカルの仮想マシンに LaTeX と mathTeX をインストールしてみます。

LaTeX のインストール

まず、「ローカルの仮想マシンにTeX Live (LaTeX) をインストール (1)」を参考にしながら LaTeX を入れます。多少条件を変えました。

適当なディレクトリで、

wget  http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar  zxvf  install-tl-unx.tar.gz
./install-tl  -portable

で TeX Live のインストーラを USB などで持ち歩くためのモードで起動します。

メインメニューで、

<S> installation scheme

から、詳細メニュー Select scheme: で

a [ ] basic scheme (plain and LaTeX)

を選択します。メインメニューに戻って、

<C> standard collections

の詳細メニュー Select collections: では

a [X] Essential programs and files
o [X] Basic LaTeX packages

の二つが [X] で選択状態なので、 dvipng が含まれる c を追加します。

c [X] TeX auxiliary programs

メインメニューに戻り、

<D> directories:

詳細メニュー Directories setup: の

<1> TEXDIR:       /usr/local/texlive

以下を書き換えます。<1> を入力すると、<2>~<4> は自動的に書き換わります。<5>~<7>は -portable ではパス指定がないので、デフォルトのままです。仮に /home/makisima/texlive/2010 にインストールするなら、

<1> TEXDIR:       /home/makisima/texlive/2010
<2> TEXMFLOCAL:     /home/makisima/texlive/texmf-local
<3> TEXMFSYSVAR:    /home/makisima/texlive/2010/texmf-var
<4> TEXMFSYSCONFIG: /home/makisima/texlive/2010/texmf-config

<5> TEXMFVAR:       $TEXMFSYSVAR
<6> TEXMFCONFIG:    $TEXMFSYSCONFIG
<7> TEXMFHOME:      $TEXMFLOCAL

これでインストールオプションの設定が終わったので、メインメニューの I でインストールを開始します。

Actions:
<I> start installation to hard disk

ダウンロードしながらインストールが行われます。

インストールが終わっても、./install-tl -portable のときは、環境変数をどう設定するかという指示は表示されません。

LaTeX や dvipng が動くかどうか確認するため、フルパスまたは相対パスを指定して実行します。

find / -name latex
find / -name dvipng

でフルパスがわかります。

ちなみに、 dvipng は TeX Live のインストールオプションとしてインストールしなくても、実行ファイル単体ひとつだけを latex と同じディレクトリにコピーすれば動きます。

mathTeX のコンパイル

LaTeX のインストールが終わったら、mathTeX にとりかかります。LaTeX を web から利用する方法は様々にあると思いますが、 mimeTeX との互換性から mathTeX を選びました。mimeTeX が動いている環境なら、mimetex.cgi へのパスを mathtex.cgi に書き換えるだけで、プラグインも同じプラグインで動きます。
まず、

download mathTeX リンクから、仮想マシンの適当なフォルダにダウンロードします。今回は Ubuntu 10.10 desktop です。

mathTeX のページの指示に従い、コンパイルします。latex と dvipng へのパスは、実行ファイル名まで必要です(複数の LaTeX 処理系のどれかを任意に選べる)。また、それぞれの二重引用符の前には\が必要です(忘れるとコンパイルエラーになる)。上に述べてきたような設定で、デフォルトのオプションでコンパイルするときは次のようになります。デフォルトでは GIF 画像が生成されるようになります。

cc -DLATEX=\”/home/makisima/texlive/2010/bin/i386-linux/latex\” -DDVIPNG=\”/home/makisima/texlive/2010/bin/i386-linux/dvipng\” mathtex.c -o mathtex.cgi

mathTeX で LaTeX を動かすときに環境変数はどうするのだろうかと疑問だったのですが、コンパイル時に cgi に組み込んでしまうんですね。したがって、配布用の実行ファイルも存在しないということになります。

できた mathtex.cgi をターミナルで実行できるかどうか確認します。たとえば、

./mathtex.cgi “x^2+y^2” -o equation1

生成された equation1.gif が予想どおりの画像なら mathtex.cgi は正常です。ファイル・ブラウザですぐに確認できます。

Apache の設定

できた mathtex.cgi を apache2 で動かす設定です。

Ubuntu 10.04 desktop に apache2 を入れると、デフォルトでは、ウェブのルートは /var/www です。今回は http://localhost/mathtex/mathtex.cgi に置くことにしたので、/var/www/mathtex/ に mathtex.cgi をコピーしました。なお、apache の設定次第で、どのディレクトリに置いても //localhost/mathtex に見せることは可能です。

Apache2 mod_rewrite と AllowOverride

のときの設定を流用して、/etc/apache2/sites-available/default を

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews +ExecCGI
#Options Indexes FollowSymLinks MultiViews
# AllowOverride None
AllowOverride All
Order allow,deny
allow from all
</Directory>

と書き換えました。公開するわけではないので、とりあえず動けばいいという設定です。apache2 を再起動します。

$ sudo /etc/init.d/apache2 restart

ブラウザで、

http://localhost/mathtex/mathtex.cgi

を開いて

No expression supplied

などと表示すれば動いています。

http://localhost/mathtex/mathtex.cgi?y=x^2

のように ? の後に LaTeX の式を入れて数式画像が表示されれば正常です。

赤字でエラーメッセージが表示されたら

http://www.forkosh.com/mathtex.html の Run-time error messages… の項を参照して対処します。

たとえば、cache ディレクトリ mathtex が作れないと言ってきたら、mathtex ディレクトリのパーミッションを

sudo chmod 777 /var/www/mathtex

といった具合です。

デフォルトのコンパイル オプションでは、 mathtex.cgi のあるディレクトリに mathtex というサブディレクトリを作って、一度生成した画像をキャッシュとして置いておくようになっています。

プラグインの設定

ここまでの設定で、HTML の <img > タグに mathtex.cgi を指定すれば LaTeX 画像を表示できます。たとえば、

<img src=”http://localhost/mathtex/mathtex.cgi?y=x^2″ alt=”y=x^2″ />

WordPress などではプラグインを使うと便利です。mathTeX は mimeTeX と入替えて使えるので、プラグインの mimeTeX への http パスを mathTeX のものに書き換えるだけです。

ちなみに、 mathTeX の配布先に公開サーバがあるので、http のパスをそちらに接続すれば品質確認できます。

mimeTeX から mathTeX に切り替えたとき、そのままでは数式画像が表示されず、WordPress でページを編集→更新すると表示されるという現象が発生しました。このあたりの動作についてはどうなっているのかよくわかりません。

(2010.11.17)

ローカルの仮想マシンにTeX Live (LaTeX) をインストール (1)

ローカルの仮想マシン (Ubuntu 10.04) で LaTeX を動かそうという試みです。あわよくば WordPress で数式を表示するのに使おうという思惑ですが、とりあえず、LaTeX を動かせるかどうか確認です。

日本語の文章や日本語フォントは考慮せず、一般的な数式さえ書ければいいという前提なので、英語版で十分です。また、今回はローカルの仮想マシンですが、ホスティング サーバでは root 権限がないので、ユーザ権限で環境構築できなければなりません。

定番の奥村先生のサイトで Linux 版のインストールについてみると( Make – TeX Wiki )、「ptexlive がお薦め」とのことで、その FrontPage – ptexlive Wiki を見ると、 TeX Live を日本語化するのが ptexlive です。ならば、今回は英語版 TeX Live だけで十分です。そのサイトは、

ですが、サイトの作りがよくわかりません。そこでまず DVD イメージを

から torrent で落としました。2 GB くらいです。その中身を読んで、なんとなくわかってきました。

DVD イメージ作成後も更新されているようですし、今回は最小限の LaTeX だけ必要で、フルセットの 2 GB もいりません。ネット越しにインストールするのがよさそうです。

で Linux 用の install-tl-unx.tar.gz (2.5mb) を持ってきて解凍すればよいことがわかりました。ただし、この URL は最寄りのミラーサーバにリダイレクトされるようになっているのですが、うまくリダイレクトされないことがあります。その場合は list of CTAN mirrors から日本のサーバの URL を探します。各サーバはたいてい /CTAN で終わっていますが、そこから CTAN → systems → texlive → tlnet とたどっていきます。たとえば、 jaist.ac.jp (北陸先端科学技術大学院大学)ならば、

  • http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/

に install-tl-unix.tar.gz やその他のインストーラ類が置いてあります。

Windows でダウンロードして解凍、サーバに転送でもよいですし、直接、サーバで落として解凍でもかまいません。今回は仮想マシンの Ubuntu 10.04 の端末 (terminal) で実行しました。適当なディレクトリに移って、

wget http://ftp.sample.com/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz (URLは適宜読み替え)

tar  zxvf  install-tl-unx.tar.gz

インストール方法は

に詳しく書かれています。Linux ではテキストモードでインストールできて、root 権限も不要です。

Perl で書かれた install-tl を実行すると、最下行で一文字(大文字・小文字の区別あり)または文字列を入力して設定をカスタマイズするようになっています。入力するごとにメニューの案内画面が書き換わって最下行でコマンドを打つようになっているので、たぶん telnet や SSH でも実行可能です。

./install-tl

今回はインストールするディレクトリをユーザのホームディレクトリの下にまとめるようにパスを設定しました。(USB メモリなどで持ち運びできるようなインストール方法もあり、./install-tl -portable 、環境に合わせてパスを自動検出するようです。)

<S> installation scheme

の項目を変更するので、S キー。詳細メニューになります。

a [ ] basic scheme (plain and LaTeX)

最低限を目標にするので、a キーで TeX と LaTeX のみ選択すると、

a [X] basic scheme (plain and LaTeX)

に変わります。選択している項目が [X] で示されます。

メインメニューに戻るので R キー。

<D> directories:

の設定で、D キー。今回は、インストールディレクトリを

~/texlive/2010

にすることにして、予めディレクトリを作成しておきます(または、別のターミナルで作成)。インストーラの設定では、’~’ がユーザのホームディレクトリを示すことになっています。

<1> TEXDIR:       /home/makisima/texlive/2010

のように、1 キーで選択、次の行でディレクトリを ~/texlive/2010 と指定すると、1~4 のパスが書き換わります。同様に 5~6 も順に書き換えました。

<1> TEXDIR:       /home/makisima/texlive/2010
<2> TEXMFLOCAL:     /home/makisima/texlive/texmf-local
<3> TEXMFSYSVAR:    /home/makisima/texlive/2010/texmf-var
<4> TEXMFSYSCONFIG: /home/makisima/texlive/2010/texmf-config

<5> TEXMFVAR:       ~/texlive/makisima/texmf-var
<6> TEXMFCONFIG:    ~/texlive/makisima/texmf-config
<7> TEXMFHOME:      ~/texlive/makisima/texmf

パスを書き換えて、 R キーでメインメニューに戻り、他のオプションを確認します。今回はその他の設定項目はデフォルトのままです。

<I> start installation to hard disk

の I でインストールが開始されます。

しばらく待つと、環境変数を設定するようにというメッセージとともに、そのパスと変数が示され、インストールが終了します。インストールの詳しいログは install-tl.log に書き込まれています。

環境変数の設定方法は、別項のとおりです。

ターミナルで TeX が動くかどうか確認します。

$ tex -version
TeX 3.1415926 (TeX Live 2010)
kpathsea version 6.0.0
Copyright 2010 D.E. Knuth.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the TeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.

PATH の設定も成功して、動いているようです。

LaTeX が動くかどうか確かめるため、適当なファイルを作ります。たとえば、sample.tex に次のように書き込みます。

\documentclass{article}
\begin{document}
\LaTeX

Using latex article style.

\[
y=x^2 + \int_0^\infty \sin x dx
\]

\end{document}

コマンドラインで、

latex sample.tex

で sample.dvi が生成されます。

X window が動いているなら、

xdvi sample.dvi

で表示できます。

どうやら、最低限は動いていたようです。

容量はどれくらいになったのか確認すると、

$ du -sm texlive
179    texlive

なので、容量はおよそ 180 MB でした。どれくらい必要かはインストーラのオプションを変更すると随時表示されるのでわかります。

(2010.11.15) (2010.11.17)

Ubuntu 10.04 desktop の環境設定メモ

Ubuntu 10.04 desktop の環境設定についてのメモ

情報が錯綜していてわかりにくいと思ったら、Ubuntu 7.04 から bash (デフォルトのシェル)の設定をしているファイル名が変わっていたようです。

要は、「 Ubuntu 7.04 で ~/.bash_profile のかわりに ~/.profile となった。ただし、~/.bash_profile が存在する場合は ~/.bash_profile を読み込む」ということになります。

Ubuntu 10.04 の時点でどうなっているのかわかりませんが、少なくとも Ubuntu 10.04 desktop のインストール直後は ~/.bash_profile は存在しません。bash での環境変数の設定は ~/.bash_profile で説明されていることが多いので、~/.profile に読み替えておけばよさそうです。

なお、どちらのファイルもドットファイル(隠しファイル)ですから、ls -a や ls -al としないと表示されません。

環境変数にパスを通す方法は、一旦シェル変数に設定して、export で環境変数へという手順のようです。 ~/.profile に書き込んでしまう場合は、ファイルを修正して、 source ~/.prifile

実際にローカルの仮想マシンで書き換えたのは、gedit で ~/.profile の末尾に次の4行を追加

PATH=”$PATH:/home/makisima/texlive/2010/bin/i386-linux”
MANPATH=”$MANPATH:/home/makisima/texlive/2010/texmf/doc/man”
INFOPATH=”$INFOPATH:/home/makisima/texlive/2010/texmf/doc/info”
export PATH MANPATH INFOPATH

export の行を忘れると環境変数に反映されません。なお、それぞれのパスはインストールの都合上、標準的でないパスにしてありますのであしからず。ファイルを書き換えたら、

source ~/.profile

です。

最近の Linux ディストリビューションは環境設定を特にしなくても、それなりに動いてしまうところが便利でもあり、落とし穴でもありですね。

(2010.11.15)

Apache2 mod_rewrite と AllowOverride

仮想マシン上の WordPress でパーマリンクをデフォルトの (?p=番号) 形式以外にすると動かない件、考えてみるに、

  • Apache mod_rewrite

が入っていないのかもしれません。

仮想マシンは Ubuntu 10.04 desktop に tasksel で Apache、PHP、MySQL を入れたもので、WordPress の動作要件を調べていませんでした。

Apache の mod_rewrite が入っているかどうかの調べ方ですが、ターミナルで httpd -l としたら、そんなコマンドはありませんと言われてしまいました。

$ ps -e

でプロセスを調べたら、 apache2 という名前でした。

$ apache2 -l

Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
prefork.c
http_core.c
mod_so.c

ということで、静的には mod_rewrite が入っていません。しかし、 mod_so があるので動的にロードしているかもしれません。

動的なモジュールも表示してくれる apache2 -M は受け付けてくれませんでした。どうやら、 apache2ctl というコマンドを使うようです。

$ apache2ctl -v  (バージョン)
$ apache2ctl -V (バージョン、環境)
$ apache2ctl -l  (静的モジュール)
$ apache2ctl -M  (静的・動的モジュール)

どれも実行可能でした。

$ apache2ctl -v
Server version: Apache/2.2.14 (Ubuntu)
Server built:   Sep 28 2010 12:52:38

Apache2 のバージョンは 2.2.14 ということです。

「動的共有オブジェクト (DSO) サポート」というそうですが、今動いているモジュールを調べると、

$ apache2ctl -M
apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgi_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
negotiation_module (shared)
php5_module (shared)
reqtimeout_module (shared)
setenvif_module (shared)
status_module (shared)
Syntax OK

残念ながら mod_rewrite は入っていないようです。

それで、モジュールをどうやって有効にするのか。

Google 「ubuntu apache2 mod_rewrite」

と検索したら、

$ sudo a2enmod rewrite

とするようです。man a2enmod で調べると、逆は a2dismod だそうです。実行すると、

$ sudo a2enmod rewrite
[sudo] password for … :
Enabling module rewrite.
Run ‘/etc/init.d/apache2 restart’ to activate new configuration!

ということで、apache2 を再起動です。

$ sudo /etc/init.d/apache2 restart
$ apache2ctl -M

rewrite_module (shared)

mod_rewrite を有効にして再起動に成功したらしいので、WordPress を動かしてみます。

まだパーマリンクがデフォルトの (?p=数字) 形式しか動きません。

よく見ると、404 Not Found のページが WordPress ではなく Apache/2.2.14 から報告されています。これはどうやら Apache の設定をいじらなければならないような雰囲気です。WordPress が動き始めたときも、ルートの index.php が有効にならずに index.html が優先されたままだったので、おかしいなとは思っていました。 これは、.htaccess が有効になっていません。

などで検索。

これらを参考に、Apache の設定ファイル 「/etc/apache2/sites-available/default」 を sudo gedit で開き、AllowOverride のところを None から All へ変更。

<Directory /var/www/>
	Options Indexes FollowSymLinks MultiViews
#	AllowOverride None
	AllowOverride All
	Order allow,deny
	allow from all
</Directory>

それから、apache2 を再起動

$ sudo /etc/init.d/apache2 restart

これでルートディレクトリの .htaccess が有効になり、WordPress が生成する動的なページ群が有効になりました。日付 + スラッグ のページ指定できちんと見えます。

(2010.11.13)

WordPressの引越―仮想マシンにクローンを作る

ローカルの仮想マシンに WordPress を引っ越してみます。ふつう逆だろうという突っ込みをしたくなりますね。ローカルでテストしてからインターネットに公開するのが手順というものです。それだといつまでたっても、こんどまた、で永遠に取りかかりそうになかったので…

に沿ってやればできそうです。

データのバックアップについては WordPress のバックアップ でやったとおり。

次が wp-config.php の編集になっていますが、その中身を見ると、MySQL の設定情報です。先にローカルの仮想マシンで、MySQL を最低限は設定してやらなければならないということですので、

を参照します。仮想マシンの phpMyAdmin は、ゲストの仮想マシン上では

http://localhost/phpmyadmin/

や、ホストマシンからなら

http://192.168.56.102/phpmyadmin/

でアクセスできるようにしました。「仮想マシンに LAMP を入れる tasksel」や「VirtualBox “ホストオンリー ネットワーク インターフェースの作成に失敗しました”」 で苦労したとおりです。

WordPress の解説に戻ると、「データベース」から「新規データベースを作成する」。次に「特権」から「新しいユーザを追加する」で追加して、特権をデータベース固有にするらしいのですが、何をやっているのか今ひとつよくわからないので、そのまま引用しておきます。

  1. WordPress 用のデータベースが左側のデータベースドロップダウンリストになければ、作成します:
    1. WordPress データベースの名前を決めて (例えば ‘wordpress‘)、新規データベースを作成するフィールドに入力し、作成をクリックしてください。
  2. 左上のホームアイコンをクリックしてメインページに戻り、特権をクリックしてください。もし WordPres s用のユーザーがまだ存在しなければ、作成します。
    1. 新しいユーザーを追加するをクリックしてください。
    2. WordPress のユーザー名を決めて (例えば ‘wordpress‘)、ユーザー名フィールドに入力します (テキストフィールドの値を利用するがドロップダウンメニューから選ばれていることを確認してください)。
    3. 推測しづらいパスワードを決めて (大文字、小文字、数字、記号を組み合わせたものが理想的です)、パスワードフィールドに入力してください(テキストフィールドの値を利用するがドロップダウンメニューから選ばれていることを確認してください)。それからもう一度入力してくださいフィールドにパスワードを再入力してください。
    4. ユーザー名とパスワードをメモしておきましょう。
    5. グローバル特権のすべてのオプションはデフォルトのままにしておきましょう。
    6. 実行するをクリックしてください。
  3. 特権画面に戻ったら、先ほど WordPress 用に作成したユーザー名の右にある特権を編集アイコンをクリックしてください。データベースに固有の特権セクション内にあるデータベースに特権を追加ドロップダウンから、先ほど作成したデータベース名を選択してください。ページはそのデータベース用に更新されます。すべてチェックするをクリックしてすべての特権を選択したら、実行をクリックしてください。
  4. 結果ページで、ページの上部にあるサーバ:の後に続くホスト名を確認してください (通常は localhost)。

となっていますが、4 の localhost は、2 でユーザを追加するときに、「ローカル」 localhost を明示的に指定するからそうなるのではないかと思われます(解説には書いてありません)。

さて、MySQL の設定がうまくいっているのかどうかわかりませんが、ファイルと SQL の編集に移ります。

wp-config.php を編集します。

データベースの .sql ファイルをエディタで開き、 www.makisima.org を localhost に置換します。今回はローカルホストで動かしてみることが目的なのでこれでかまいませんが、もともと存在したであろう localhost と区別がつかなくなるので、あまりよい方法ではありません。ユニークな文字列になっていたほうがよいですね。また、 URL としてではなく地の文で www.makisima.org と言及している部分を判別するのは困難です。正規表現を駆使すればできるのかもしれませんが。このあたりの書き分けは、今後、文章を書くときにも考慮したほうがよさそうです。

WordPress のファイルを仮想マシンにアップロードします。

アップロード… FTP サーバを入れていませんでした。FTP (に類似のサーバ)を入れてもいいですし、ホストマシンとファイルを共有してもかまいません。ホストとのファイル共有は別項 「ホスト Windows 7 の VirtualBox でゲスト Ubuntu とファイル共有(Guest Additions 導入)」 にて。

SQL のほうは

にしたがって行います。ログインは上で作った wordpress 用のアカウントです。

phpMyAdmin でデータベース名を選択します。その後でインポートする .sql ファイルを選択、アップロード実行します。

phpMyAdmin でデータベースを選択、さらに ‘wp-options’ テーブルを選択し、’site_url’ と ‘home’ の値を確認します。必要に応じて書き換えます。

デフォルトの index.html があると、apache がそちらを優先して表示する設定になっているかもしれません。その場合、とりあえずは index.html の名前を変えてブラウザのキャッシュを消去すれば WordPress の index.php が表示されるようになります。実際には、Apache の設定で AllowOverride None になっていて .htaccess が有効になっていない可能性が高いと思われます。(cf. Apache2 mod_rewrite と AllowOverride

WordPrss がサブディレクトリにインストールされていて、それでもトップになるようにしている場合、つまり、

のようになっている場合は、サブディレクトリの URL に相当するアドレスのほう( http://localhost/wp/ )で WordPress にログインできるかもしれません。ログインは WordPress のユーザ名で行います。WordPress の管理画面になれば、とりあえず再設定できるようになります。仮想マシンの localhost のルート (/var/www)  に .htaccess や index.php をきちんとコピーして設定する必要があります。

.sql をアップロードしたあとの設定方法は、なんとなくやっているうちに WordPress が動くようになったので、何がどう功を奏しているのかわかりません。クローンが仮想マシンで動いたので結果オーライということで…  🙂

サブディレクトリに配置した頃のメモ書きは wiki (第2巻)のほうです。

さて、すくなくとも、バックアップの方法が間違っていないこと、バックアップから復元できること、サーバの引越ができることは確認できました。これで、テスト用のサーバとして仮想マシンが使えます。

と喜んでいたら、パーマリンクが「デフォルト」 (?=数字)でないと動きません。とほほ。ということで、続きます……

(2010.11.13)