maOS上でGNU Emacsをビルドする

しむどん 2025-02-28

GNU Emacsをインストールする方法はいくつもある。絶対的に正しいやり方など存在しないから、おもいおもいの方法でインストールすればいいはずだ。行いたいことによっては変わったインストール方法をしないといけない事もあるかもしれない。今回はEmacsのインストール方法について考えてみる。

ただし、あくまでこの記事は僕にとってどのような方法が良いかを考えた時のメモであって、絶対的に正しいインストール方法を解説するものではないし、インストール方法を網羅したりするつもりもない。

正しいインストール方法を知りたい場合、使用しているOSでのインストール方法、パッケージマネージャ、GNU EmacsのWebサイトなどの公式ドキュメントを参照するといいだろう。

この記事では特別な断りなくEmacsと表現した場合、それはGNU Emacsの事とする。

配布されているビルド済みバイナリを使う

Emacsの公式Webサイトでは、ビルド済みの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を使っている。macOSでEmacsのWebkitサポートの機能を使う場合、 xwidget-webkit の機能を有効にする必要がある。これがmacOS用にWebkitサポートのCocoa実装なのだが、ビルド済みバイナリではその機能は無効化されている。もしこれを使用したいのであれば、Emacsを自分でビルドするしかない。

EmacsをmacOS上でビルドする

xwidget-webkit は絶対に使用したいから、僕は手動でビルドしたEmacsを使っている。Emacsのビルド手順は、はHomebrewを使ってオプションを指定する事でも自分のコンピューター上でビルドしたものをインストールできるが、その場合はHomebrewの流儀を学ぶ必要が出てくる。

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

ここではその手順を記載する。

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

必要そうなパッケージをHomebrewでインストールした。

brew install autoconf \
             texinfo \
             imagemagick
             gnutls

ソースコードを取得する

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

git clone --depth 1 https://git.savannah.gnu.org/git/emacs.git

ビルドする

ソースコードを取得したら、ディレクトリを移動する。

cd emacs

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

./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 は無くなったようだ。

configure が完了したら、ビルドする。

make

インストール

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

make install

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

https://pub.symdon.info/39/c9/39c9c60390f2dcbd38135cf1f5b14b660808b510e158bb9dd71e38d7cc67bd2f.png
起動画面

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

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

emacs macOS Undefined symbols for architecture x86_64:

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

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

まとめ

今回はEmacsのインストール方法について考え、maOS上でソースコードからビルドして使う方法について書いた。いわゆる野良ビルドなので、あまりよくない方法かもしれないけれど、自分自身の作業メモとして残しておく。