ローカルの仮想マシンに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)

ホスト Windows 7 の VirtualBox でゲスト Ubuntu とファイル共有(Guest Additions 導入)

VirtualBox にファイルの共有があります。ホスト OS と ゲスト OS でファイルを共有できます。

仮想マシンをシャットダウンした状態で、仮想マシンの設定にファイル共有が現れます。ホスト OS 側の適当なフォルダを選択します(パスに日本語や空白を 含まないほうが無難かもしれません)。共有フォルダ名をメモしておきます。今回は “share_VirtualBox” ですが、クリップボードにコピーしておくと便利です。

共有設定すると、ゲストの Linux でのマウントの方法と、それには Guest Additions がインストールされていなければならないことが表示されます。

仮想マシンを起動すると、仮想マシンのウィンドウに「デバイス」があり、「Guest Additions のインストール…」という項目があります。これを選択すると、インストーラのファイル類が仮想の CD-ROM としてマウントされます。/media にマウントされます。ターミナル(端末)を起動して VBOXADDITIONS~ ディレクトリの中に入ります。今回は、

$ CD /media/VBOXADDITIONS_3.2.10_66523

でした。その中に各種 OS 用のインストーラがあります。今回は Ubuntu 10.04 desktop (32bit) なので、VBoxLinuxAdditions-x86.run を選びます。

$ sudo ./VBoxLinuxAdditions-x86.run

これでいいのかどうかよくわからないのですが、動いたようです。インストールにはしばらく時間がかかります。root 権限がいるので、ファイル・ブラウザでファイルを直接ダブルクリックしても実行できません。Windows ユーザは、Linux で実行ファイルを実行するときにはカレントディレクトリの ./ を付加しなければいけないことを忘れがちですね。

再起動を要求するメッセージが表示されるはずなので、仮想マシンを再起動します。

仮想マシンのウィンドウが広くなりました。Guest Additions を導入すると、ホスト側のディスプレイ情報をゲストに渡すようです。また、ホスト側 Windows とゲスト側 Ubuntu とでコピー&ペーストできるようになります。

Guest Additions が動いているので、上で設定した共有フォルダ “share_VirtualBox” を /mnt 直下にマウントしてみます。

$ sudo mount -t vboxsf share_VirtualBox /mnt

エラーがなければ成功しています。ためしに、

$ ls /mnt

すると、Windows 側のファイルが見えています。

ファイルをコピーするには cp コマンドに再帰オプション -r でもかまいませんが、ファイル・ブラウザを使ったほうがエクスプローラ風に扱えて楽です。ただし、ファイル・ブラウザで「隠しファイルを表示する」設定にしておかないとドットファイル( .htaccess など)が漏れてしまうので注意が必要です。

(2010.11.13)

(追記 2011/7/25)

久々に、(ホスト)Windows 7 + VirtualBox 4.1 + (ゲスト)Ubuntu 11.04 Desktop 日本語 でやってみました。

Guest Additions のインストール

VirtualBoxのウィンドウ上部の「デバイス」メニューから 「Guset Additions のインストール」 を選択、促されるままに「はい」「はい」進めると、GUI だけで Guset Additions のインストールが完了しました。ホスト・ゲスト間でコピー&ペーストできます。

ホスト・ゲスト間の共有フォルダ

いったんゲストのUbuntuをシャットダウン。「Oracle VM VirtualBox マネージャー」ウィンドウからゲストマシンを選び、「共有フォルダ」をクリック、「新規共有フォルダを追加」アイコンから、ホストのフォルダを指定。このとき「自動マウント」にチェックを入れておきます。ゲストマシン Ubuntu の電源を入れると、ログイン直後に共有フォルダがマウントされた状態になっています。場所は /media の下。

(2011/7/25) (2011/9/29)