Raspberry Pi 3 に Free Pascal 3.0.0 と Lazarus 1.6.2 をインストールする


はじめに

Raspberry Pi 3 に Free Pascal 3.0.0 と Lazarus 1.6.2 をインストールしてみたので、 その記録を書いておきます。

インストールの結果は次のようになります。

以上を踏まえると、Free Pascal 3.0.0 と Lazarus 1.6.2 をインストールしたユーザーは これらのみを使用する環境になります。


手順概要

手順の概要は次の様になります。

  1. 標準の Free Pascal, Lazarus をインストールします。
    必須パッケージを簡単にインストールするためです。 既に済んでいる場合は最新版に更新します。
  2. Free Pascal, Lazarus のソースコードをダウンロードします。
  3. 標準の Free Pascal, Lazarus 設定ファイルをバックアップします。
  4. ${HOME} ディレクトリ以下にインストール先ディレクトリと作業ディレクトリを作成します。
  5. 環境変数 PATH, MANPATH を設定するスクリプトを ~/.bashrc に追加します。
  6. ~/.bashrc をテストします。
    面倒ですが、テストせずに logout-login をしてスクリプトのエラーにより login 出来なくなると対処は難しくなります。
  7. PATH 環境変数に ~/bin を加えます。
    既に ~/bin ディレクトリが有る場合は、~/.profile スクリプトにより完了しています。
  8. ソースファイルを展開します。
  9. 第 1 ステージ: Free Pascal を構築・インストールします。
    最適化をせずに Free Pascal 3.0.0 を構築します。 最適化をすると構築途中でエラーになります。
  10. 第 1 ステージ: インストール結果を確認します。
  11. 第 2 ステージ: Free Pascal を構築インストールします。
    第 1 ステージで構築した Free Pascal を使い、 最適化された Free Pascal 3.0.0 を構築します。
  12. 第 2 ステージ: インストール結果を確認します。
  13. Lazarus を構築・インストールします。
  14. Lazarus の起動準備をします。
  15. Lazarus を起動します。

手順詳細

手順詳細は次の約束で書きます。

次の表に手順を始める前に予め決めておく必要がある項目を挙げます。 italicで書いた文字列を置き換えながら手順を進めてください。 fpc-privatefpc-private-build は特に決めない場合、 そのままコマンド入力してください。

項目 そのまま入力 意味
login-name - ログイン名です。どのユーザーで作業するか決めて下さい。 初期ユーザーのままでしたら pi です。
down_loaded_directory 不可 - 何処か決めて下さい ファイルをダウンロードする(した)ディレクトリを表します。
fpc-private Free Pascal と Lazarus をインストールするディレクトリは ~/fpc-private になります。
fpc-private-build Free Pascal と Lazarus を構築する作業を行うディレクトリは ~/fpc-private-build になります。

1. 標準の Free Pascal, Lazarus をインストールする

次のコマンドでパッケージをインストールしてください。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install fpc lazarus

起動するか確認してください。 GUI Desktop でシェルウインドウを開き次のコマンドを実行します。 設定を格納した ~/.lazarus ディレクトリを作成する意図があります。

$ startlazarus

初回起動の場合、次のような初期設定ダイアログが出ます。

Configure Lazarus dialog box

初期設定ダイアログが出た場合は各設定か次のようになって OK が出ているか確認し、 [Start IDE] ボタンをクリックして進みます。

項目 設定
Lazarus /usr/lib/lazarus/1.2.4/
Compiler /usr/bin/fpc
FPC sources /usr/share/fpcsrc/$(FPCVER)
Make make
Debugger gdb

初期設定から始めた場合、次のようなメッセージでエラーダイアログが出ます。 ARM アーキテクチャ上で発生する既知の問題 です。

Error In EditorMacroScript

以下はダイアログ内メッセージのテキストです。

The package EditorMacroScript (pascalscript macros)
has detected a problem and was deactivated.
The package failed its selftest with the message:
"Failed getstr2 [Exp: "456" / Got: "abc"]"

[OK] ボタンをクリックして続けてください。 新しい Lazarus 1.6.2 でも同様にエラーになります。

起動しましたら、File -> Quit で終了します。

注意
必ず Lazarus は終了してください。異なるバージョン、別のユーザーで Lazarus を多重起動するとエラー "Lazarus instance is running but not responding. " になります。複数の Lazarus を起動するを参考にしてください。
Lazarus IDE multiple instances

2. Free Pascal, Lazarus のソースコードをダウンロードする

Free Pascal と Lazarus のソースファイルをダウンロードします。 ダウンロードしたファイルを格納したディレクトリを down_loaded_directory とします。

ファイル ダウンロードページ
fpcbuild-3.0.0.tar.gz SourceForge サイト Free Pascal Compiler ページ
lazarus-1.6.2-0.tar.gz SourceForge サイト Lazarus ページ

3. 標準の Free Pascal, Lazarus 設定ファイルをバックアップする

次のコマンドで設定ファイルをバックアップします。 fpc -iV, lazbuild -v は Free Pascal, Lazarus のバージョンを得るコマンドです。

$ cd ~
$ cp -p .fpc.cfg .fpc-`fpc -iV`.cfg
$ rsync -ax .fppkg/ .fppkg-`fpc -iV`
$ rsync -ax .lazarus/ .lazarus-`lazbuild -v`
ノート

4. ${HOME} ディレクトリ以下にインストール先ディレクトリと作業ディレクトリを作成する

次のコマンドでインストール先と作業ディレクトリを作成します。

$ mkdir -p bin tmp fpc-private fpc-private-build
$ cd fpc-private
$ mkdir -p bin man share/man
$ cd ..

5. 環境変数 PATH, MANPATH を設定するスクリプトを ~/.bashrc に追加する

~/.bashrc を編集して Free Pascal 3.0.0 と Lazarus 1.6.2 を 既定で起動、参照するようにします。 nano は素朴なエディタです。 手に馴染んだエディタを使ってください。

$ nano ~/.bashrc

~/.bashrc の最後に次のスクリプトを追加します。

# Add ~/fpc-private/bin to PATH.
fpc_private_bin=$HOME/fpc-private/bin
if [ -d "$fpc_private_bin" ]; then
	if ( ! ( echo $PATH | grep -q -F "$fpc_private_bin" ) ); then
		PATH=$fpc_private_bin:$PATH
	fi
fi

# Add fpc, and lazarus man pages to MANPATH.
fpc_private_mans="$HOME/fpc-private/man $HOME/fpc-private/share/man"
for fpc_private_man_dir in $fpc_private_mans
do
	if [ -d "$fpc_private_man_dir" ]; then
		if ( ! ( echo $MANPATH | grep -q -F "$fpc_private_man_dir" ) ); then
			if ( echo $MANPATH | grep -q -e '^:' -e '^$' ); then
				export MANPATH=:${fpc_private_man_dir}$MANPATH
			else
				export MANPATH=${fpc_private_man_dir}:$MANPATH
			fi
		fi
	fi
done

6. ~/.bashrc をテストする

~/.bashrc をテストします。エラーになる場合は編集が正しいか確認してください。

$ source ~/.bashrc

PATH 環境変数に /home/login-name/fpc-private/bin が含まれているか確認してください。

$ echo $PATH
/home/login-name/fpc-private/bin:...省略...

MANPATH 環境変数に /home/login-name/fpc-private/man, /home/login-name/fpc-private/share/man が含まれているか確認してください。

$ echo $MANPATH
:/home/login-name/fpc-private/man:/home/login-name/fpc-private/share/man...省略...

結果が違う場合は、インストール先ディレクトリが作成できていないか、 スクリプトに誤りがある可能性があります。


7. PATH 環境変数に ~/bin を加える

次のコマンドを入力して下さい。

$ ( echo $PATH | grep -F ~/bin: ) || PATH=~/bin:$PATH
ノート
既に ~/bin ディレクトリが有る場合は、 この操作は ~/.profile スクリプトによってログイン時に行われています。

8. ソースファイルを展開する

次のコマンドを入力します。

$ cd ~/fpc-private-build
$ tar zxvf down_loaded_directory/fpcbuild-3.0.0.tar.gz
$ tar zxvf down_loaded_directory/lazarus-1.6.2-0.tar.gz

9. 第 1 ステージ: Free Pascal を構築・インストールする

Free Pascal を構築します。 第 1 ステージでは最適化されていない Free Pascal を構築します。

注意
既定の最適化 -O2 を指定したまま構築すると "Error: Syntax error while parsing a conditional compiling expression" というエラーで構築が進みません。
ノート

次のコマンドを入力してください。 ファイルを格納しているストレージデバイスにも依存し、30 分 ~ 3 時間ほどかかる作業です。

$ cd ~/fpc-private-build/fpcbuild-3.0.0
$ make all OPT='-gl -O-' PP=/usr/bin/ppcarm NOGDB=1
$ make install OPT='-gl -O-' PP=/usr/bin/ppcarm NOGDB=1 PREFIX=~/fpc-private
$ ln -s -f ~/fpc-private/lib/fpc/3.0.0/ppcarm ~/bin/ppcarm
$ make install sourceinstall OPT='-gl -O-' PP=~/bin/ppcarm NOGDB=1 PREFIX=~/fpc-private
$ ~/fpc-private/lib/fpc/3.0.0/samplecfg ~/fpc-private/lib/fpc/3.0.0

10. 第 1 ステージ: インストール結果を確認する

Free Pascal インストール結果を確認します。 バージョン番号が構築した 3.0.0 に変わっていれば第 1 ステージは成功です。

$ fpc -iV
3.0.0
$ ppcarm -iV
3.0.0

11. 第 2 ステージ: Free Pascal を構築・インストールする

Free Pascal を構築します。 第 2 ステージでは最適化された Free Pascal を構築します。

次のコマンドを入力してください。 ファイルを格納しているストレージデバイスにも依存し、30 分 ~ 3 時間ほどかかる作業です。

$ make all OPT='-gl' PP=~/bin/ppcarm NOGDB=1
$ make install PP=~/bin/ppcarm NOGDB=1 PREFIX=~/fpc-private
$ make install sourceinstall NOGDB=1 PP=~/bin/ppcarm PREFIX=~/fpc-private

12. 第 2 ステージ: インストール結果を確認する

Free Pascal インストール結果を確認します。 バージョン番号が構築した 3.0.0 のままであれば第 2 ステージは成功です。

$ fpc -iV
3.0.0
$ ppcarm -iV
3.0.0
注意
この時点で Lazarus を起動しないでください。 多くの問題が発生します。万が一起動して設定が大幅に変わるなどの問題が起きた場合場は、 ~/.lazarus ディレクトリを削除して、 バックアップより回復 ( rsync -ax ~/.lazarus-old.version.number ~/.lazarus ) してください。

13. Lazarus を構築・インストールする

次のコマンドを入力してください。 ファイルを格納しているストレージデバイスにも依存し、30 分 ~ 3 時間ほどかかる作業です。

$ cd ~/fpc-private-build/lazarus
$ make clean bigide
$ make install PREFIX=~/fpc-private

Lazarus から Free Pascal のユニットソースコードを 参照できるようにシンボリックリンクを構成します。

$ cd ~/fpc-private/share/lazarus
$ mkdir -p fpc/`fpc -iV`
$ cd fpc/`fpc -iV`
$ ln -sf ../../../src/fpc-`fpc -iV`/fpc/fpcsrc source
ノート
Lazarus はホームディレクトリ以下の広い範囲でソースコードが存在するか検索します。 上記のパスは標準的に検索されるパスの一つです。

14. Lazarus の起動準備をする

標準の Lazarus 設定ファイルを退避します。 次のコマンドを入力してください。 標準の Lazarus 設定が残っていると機能を発揮できない場合があります。

$ mv ~/.lazarus ~/.lazarus.old
ノート
先のバックアップも含めて標準 Lazarus の設定は 2 組残ります。

15. Lazarus を起動する

Lazarus を起動します。GUI Desktop でシェルウインドウ内で次のコマンドを実行します。

$ cd ~
$ ( echo $PATH | grep -F ~/bin: ) || PATH=~/bin:$PATH
$ source ~/.bashrc
$ startlazarus
ノート
ログインし直した後は、 ( echo $PATH | grep -F ~/bin: ) || PATH=~/bin:$PATHsource ~/.bashrc コマンドは入力不要です。ログイン時に ~/.profile, ~/.bashrc で処理されます。
問題
次のようなダイアログボックスが出る場合、複数の Lazarus 起動する を 参考にしてください。
Lazarus Error: Not responding Lazarus instance is running, but not responding.

Lazarus が起動したら設定ダイアログが現れます。

Configure Lazarus dialog box

各項目を次のように設定してください。上から順に設定することをお勧めします。 下に続く設定が自動的に決定される場合があります。全て OK が出ます。 出ない場合は標準の Lazarus が起動している可能性があります。 which startlazarus コマンドで実行ファイルの場所が /home/user-name/fpc-private/bin/startlazarus になっているか確かめてください。

項目 設定
Lazarus /home/login-name/fpc-private/share/lazarus/
Compiler /home/login-name/fpc-private/bin/fpc
FPC sources $(LazarusDir)/fpc/$(FPCVer)/source
Make make
Debugger gdb
ノート
もう一度、設定ダイアログを出す場合は、 startlazarus --setup とコマンドを入力して起動してください。

次のようなメッセージでエラーダイアログが出ます。 ARM アーキテクチャ上で発生する既知の問題 です。

Error In EditorMacroScript

以下はダイアログ内メッセージのテキストです。

The package EditorMacroScript (pascalscript macros)
has detected a problem and was deactivated.
The package failed its selftest with the message:
"Failed getstr2 [Exp: "456" / Got: "abc"]"

[OK] ボタンをクリックして続けてください。

ノート
デスクトップのメニューを設定するには 左上の Menu Icon → Preferences → Main Menu Editor にて設定パネルが現れます。 動作が緩慢なので、各操作が反映されるまで待ってみてください。

ここまでの操作でインストールは完了します。


複数の Lazarus を起動する

ここでは複数の Lazarus を起動する方法、 あるいはエラー "Lazarus instance is running but not responding." を解消する 方法を説明します。Lazarus を起動しようとして次のようなエラーダイアログが表示され起動できない場合があります。

Lazarus Error: Not responding Lazarus instance is running, but not responding.

このエラーはシステム内に Lazarus が 2 つ以上存在する場合に発生します。他のユーザーが起動、あるいは 他の Xserver (例えば VNC server の仮想画面) に向けて新しく Lazarus を起動し、2 つ以上になる場合も含まれます。

このエラーを解消するには次のように実行します。

$ startlazarus --force-new-instance 

オプションで提供されている機能なので常用は要注意なのかもしれません。

他に Lazarus のプロセスが無い ( ps uaxww | grep lazarus でプロセスが見つからない ) のに起きる場合は、/tmp/LazarusMain[0-9][0-9] ファイルを削除して下さい。


アンインストールする

インストールを再履行をするのであれば構築に使用したファイルを保存します。次のコマンドを入力してください。

$ cd ~/fpc-private-build/..
$ tar zcvf fpc-private-build.tar.gz fpc-private-build

~/.bashrc に施した修正を元に戻します。効果は再ログイン後に出ます。

$ nano ~/.bashrc

編集操作をします。

~/bin/ppcarm シンボリックリンクを削除します。

$ rm ~/bin/ppcarm

~/.fpc.cfg を元に戻します。元々無かった場合は、無効にします。 x.x.x の部分は標準の Free Pascal のバージョンです。

$ mv ~/.fpc.cfg ~/.fpc.cfg-x
$ if [ -f ~/.fpc-x.x.x.cfg ]; then mv ~/.fpc-x.x.x.cfg ~/.fpc.cfg; fi

~/.fppkg を元に戻します。元々無かった場合は、無効にします。 x.x.x の部分は標準の Free Pascal のバージョンです。

$ mv ~/.fppkg ~/.fppkg-x
$ if [ -d ~/.fppkg-x.x.x ]; then mv ~/.fppkg-x.x.x ~/.fppkg; fi

~/.lazarus を元に戻します。元々無かった場合は、無効にします。 x.x.x の部分は標準の Lazarus のバージョンです。

$ mv ~/.lazarus ~/.lazarus-x
$ if [ -d ~/.lazarus-x.x.x ]; then mv ~/.lazarus-x.x.x ~/.lazarus; fi

インストールしたファイル、構築作業に使用したファイルを削除します。

$ rm -rf ~/fpc-private ~/fpc-private-build
ノート
インストールしたファイル、構築作業に使用したファイルが残っていると 標準の Lazarus が Free Pascal の unit のソースファイルとして誤認識する場合があります。 残す場合は、標準の Lazarus が起動する途中で出る初期設定ダイアログまたは、 Tools → Options... → Environment → Files にて設定を確認、修正してください。

以上でアンインストールは終了です。


関連リンク