UbuntuでEmacsをインストールする場合、apt (apt-get) を使うとバージョン27がインストールされます(2024年10月現在)。しかし現時点では最新バージョンは29であり、aptではかなり古いものが入ってしまうということになります。
ここでは最新バージョンのソースをダウンロードし、configure, make によってビルドする方法をご紹介します。またビルドの際に遭遇したエラーとその対処のメモを残しておきます。
環境
- Ubuntu: 22.04 および 24.04
- Emacs: 29.4
手順
依存パッケージのインストール
最低限makeやgccなどは必要です。Ubuntuでは以下で基本的なものが入れられます。
sudo apt update
sudo apt install build-essential
しかしこれだけでは後述するエラーが出て失敗しますので、対応する依存パッケージを入れておきます。
sudo apt install pkg-config libgnutls28-dev libtinfo-dev texinfo
これで依存パッケージは揃いました。
ソースのダウンロード
公式サイトからファイルをダウンロードします。
近くのミラーサーバーから、またはメインのFTPサーバーがおすすめされています。
ダウンロードするファイルは emacs-[バージョン番号].tar.gz
というものを選べばOKです。 emacs-[バージョン番号].tar.xz
は圧縮方式が違うだけなのでこちらでも大丈夫ですが、 xz
コマンドが入っていないと解凍できません。また .sig
で終わるファイルはダウンロードしたファイルの改ざんや破損を検証するために必要なものです。ご興味あれば GPG Signature で調べてみてください。
Gitリポジトリからcloneする方法もなくはないですが、未リリースのバージョンも混ざっていたり configure
が含まれてなかったりするので個人的には上記URLなどから落としてくるのが無難かと思います。以下ではその前提で話を進めます。
ビルド&インストール
落としたファイルは圧縮されているのでファイルを解凍します。
# ファイル名は適宜変更してください
tar zxf emacs-29.4.tar.gz
解凍されたフォルダ内で ./configure
, make
を実行します。特に変わった手順はありませんが詳細を知りたい場合はフォルダ内のINSTALLファイルをご覧ください。ちなみにGUI環境を使わない場合であれば ./configure
時に --without-x
オプションをつけます。他にもオプションはいろいろあるので必要に応じてカスタマイズしてみてください。
# フォルダに移動
cd emacs-29.4
# ビルド
./configure && make
# インストール
sudo make install
これでおそらく /usr/local/
配下にインストールされるはずです(場所は環境によるかもしれません)。 emacs --version
で想定したバージョンのEmacsが起動できているか確認してみてください。もしダメであれば echo $PATH
や which emacs
などで、パスが通っているかやインストールされているかなどを確認しましょう。
エラーと対処
以上でインストールは完了ですが、以下ではもしも依存パッケージが足りないときにどういうエラーが発生するかをご紹介します。特に興味がなければ読む必要はありません。
pkg-config, libgnutls28-dev
まず ./configure
を実行して以下のエラーが出ました。
configure: WARNING: Unable to locate a usable pkg-config
configure: error: The following required libraries were not found:
gnutls
Maybe some development libraries/packages are missing?
To build anyway, give:
--with-gnutls=ifavailable
as options to configure.
エラー自体は gnutls
が無いということですが、実はそれだけではなく直前のWARNINGである pkg-config
も重要です。これが無いと gnutls
があっても同じエラーが出ます。 pkg-config
と gnutls
をaptでインストールします。
sudo apt install pkg-config libgnutls28-dev
libgnutls28-dev
こちらも ./configure
で出るエラーです。
checking for library containing tputs... no
configure: error: The required function 'tputs' was not found in any library.
The following libraries were tried (in order):
libtinfo, libncurses, libterminfo, libcurses, libtermcap
Please try installing whichever of these libraries is most appropriate
for your system, together with its header files.
For example, a libncurses-dev(el) or similar package.
今度は tputs
が無いとのこと。親切に対処方法が書かれていますね。私の環境では apt install libtinfo
は無かったので、以下のようにしました。
sudo apt install libtinfo-dev
texinfo
次は make
で以下のエラーが出ました。
make[2]: Entering directory '/path/to/dir/emacs-29.4/doc/emacs'
GEN ../../info/emacs.info
/bin/bash: line 1: makeinfo: command not found
make[2]: *** [Makefile:170: ../../info/emacs.info] Error 127
make[2]: Leaving directory '/path/to/dir/emacs-29.4/doc/emacs'
make[1]: *** [Makefile:1122: emacs-info] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: Entering directory '/path/to/dir/emacs-29.4/lib'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/path/to/dir/emacs-29.4/lib'
make[1]: Leaving directory '/path/to/dir/emacs-29.4'
make[1]: Entering directory '/path/to/dir/emacs-29.4'
***
*** "make all" failed with exit status 2.
***
*** You could try to:
*** - run "make bootstrap", which might fix the problem
*** - run "make V=1", which displays the full commands invoked by make,
*** to further investigate the problem
***
make[1]: *** [Makefile:414: advice-on-failure] Error 2
make[1]: Leaving directory '/path/to/dir/emacs-29.4'
make: *** [Makefile:370: all] Error 2
ドキュメント周りにおけるエラーですね。コマンドの makeinfo
が無いとのことです。これは以下のコマンドでインストールできました。
sudo apt install texinfo
まとめ
Ubuntu22(および24)において最新のEmacs29.4をソースからインストールしました。aptでは依然として古いバージョンなので最新バージョンを使うにはソースからのビルドをおすすめします。実際あまり大きく困ることも無かったのでUbuntuでEmacsを使いたい人はぜひ挑戦していただければと思います。