« ^ »

GNU Emacsをインストールする

所要時間: 約 5分

GNU Emacsをインストールする方法はいくつもある。絶対的に正しいやり方など存在しないから、思い思いの方法でインストールすればいいはずだ。行いたいことによっては変わったインストール方法をしないといけない事もあるかもしれない。今回はEmacsのインストール方法について考えてみる事にした。ただし、あくまで自分にとってどのような方法が適切かを考えるのであって、インストール方法を網羅したりするつもりはない。特別な断りなくEmacsと表現した場合、それはGNU Emacsの事とする。

配布されているバイナリをインストールする

GNU Emacsはコンパイル済みのEmacsのバイナリのインストール方法を公式ウェブサイトで説明している。おそらく現時点ではこれを用いる方法が最も簡単と思う。環境毎のインストール方法が記載されているのでそれを参照するとよい。

https://www.gnu.org/software/emacs/

GNU/Linuxではディストリビューションによって採用しているパッケージマネージャーが異なる。上記のウェブサイトでは主要なパッケージマネージャーを用いたインストール手順を記述している。

Windows用のコンパイル済みバイナリを配布している。ファイルを配置しているFTPサーバーへのリンクがあるため、そこからバイナリをダウンロードしインストールできる。またMSYSユーザーのためにpacmanを用いたインストール方法も掲載されている。

macOS用にはHomebrewとMacPortsを用いたインストール方法を説明している。またコンパイル済みバイナリとして Emacs For Mac OS X を提供しており、そのウェブサイトへのリンクもある。macOS上で単純に最新のEmacsを試したいなら、このコンパイル済みバイナリを用いることもできる。

配布されているコンパイル済みバイナリを用いる問題点

通常の機能を使用するだけであれば、コンパイル済みバイナリを使えばいい。しかしEmacsにはコンパイル時にオプションを指定することで、拡張可能な機能が幾つか存在する。コンパイル済みバイナリでは、これらの機能が無効化された状態でコンパイルされている事がある。その場合、無効化された機能は使えない。

例えばEmacsにはWebkitのサポートがあり、GTKやCocoaを用いてそれを表示できる。何ができるかというと、Emacs上でウェブブラウザの機能を使用できる。macOS用にWebkitサポートのCocoa実装が取り込まれているが、コンパイル済みバイナリではその機能は無効化されている。もしこれを使用したいのであれば、Emacsをコンパイルしなおすしかない。

EmacsをmacOS上でソースコードからコンパイルしインストールする

僕は手動でコンパイルしたEmacsを用いている。xwidget-webkitは絶対に使用したいからだ。Homebrewを用いれば自分のコンピューター上でコンパイルしたものをインストールもできるが、その場合はHomebrewの流儀を学ぶ必要が出てくる。

自分がやりたい事はあくまで「Emacsを拡張機能を有効にしてコンパイルしたい」だけであって「Homebrewについて学びたい」わけではない。そのため、手動でソースコードを取得しコンパイルし、インストールして使用している。ここではその手順を記載する。

おそらくコンパイルするためには、Xcodeのインストールと、一般的に開発に必要なツールを整備する必要がある。ここでは、それは既に済んでいることを前提としている。また依存しているライブラリのインストールについても記述しない。それぞれのやり方のインストール方法があるからだ。必要なものが足りなければ、コンパイルの手順中にエラーメッセージとして表示される。それらをインストールし、環境変数などの設定を適切にする必要があるだろう。依存ライブラリは自分でコンパイルしてインストールしても良いが、こだわりがなければHomebrewやMacPortsでインストールしても問題ない。

ソースコードの取得

まずはソースコードを取得する。Github上にミラーリポジトリがあるので今回はそこから取得した。とりあえず最新のソースだけでよいので --depth 1 を指定している。

git clone --depth 1 [email protected]:emacs-mirror/emacs.git

ソースコードからビルド

cloneできたらディレクトリを移動する。

cd emacs

configure を作成するために autogen.sh を実行する。

brew install autoconf
brew install texinfo
brew install imagemagick
brew install gnutls
./autogen.sh

Makefile を作成するために configure を実行する。 コンパイルオプションはここで指定する。

./configure \
  --with-imagemagick \
  --with-mailutils \
  --with-modules \
  --with-ns \
  --with-pop \
  --with-xwidgets \
  --x-includes=/opt/X11/include \
  --x-libraries=/opt/X11/lib \
  --with-x
指定したオプション
–with-mailutils
–with-modules
–with-ns
–with-pop
–with-xwidgets
–with-imagemagick

--with-json は無くなったようだ。

ビルドする。

make

インストール

make install を実行する。これが完了するとnextstepディレクトリに Emacs.app が作成される。macOS用のスクリプトでは、これを行っても /Applications にアプリケーションがコピーされることはない。Emacsが起動して適切に動作するために必要なソースコード内にあるEmacs Lispのコードがこの時点で生成される Emacs.app の中にコピーされるため、この手順は必ず必要だ。

make install

生成された Emacs.app/Applications に手動で移動する。

バージョンの確認

https://res.cloudinary.com/symdon/image/upload/v1670588022/blog.symdon.info/1604761350/Untitled_rpxzi7.gif
バージョンの確認

macOS上でビルドする時にリンカーでエラーが出た場合

ビルドすると以下のようなエラーが出ることがある。

emacs macOS Undefined symbols for architecture x86_64:

シンボルを見つけられていないのが問題である。 CPPFLAGSやLD_LIBRARY_PATHなどの値がおかしなことになっていないか確認すると良い。

Homebrewで入れていたものを読み込ませるために色々と設定していたがそれらを削除したら解消した。