GnuTLS付きのEmacsコンパイルについて

ソース: Emacs logo

目次

Emacsのコンパイルが失敗された時の原因

GnuTLSというパッケージが見つからない

このパッケージが見つからない場合は, デフォルトではEmacsのコンパイルがエラーになる。 make の前に以下のように構成しておいたほうが良い。

  ./configure --with-gnutls=no

他の依存関係が未解決

make の時に,他にも依存しなければならないパッケージが見つからない場合は,コンパイルがエラーになる。 エラーメッセージを読みながら,前と同じようにこれらのパッケージを除外するように構成しておく。

書き込み権限が制限されている

また,ホームディレクトリ以外の書き込み権限が管理者に制限されている場合は,コンパイルがエラーになる。 解決法としては,例えば以下のようなオプションを付けておく。

  bash configure --prefix=$HOME/.local --with-gif=no --with-gnutls=no

これで make するとEmacsが $HOME/.local にインストールされる。

不完全なインストールによる問題

EmacsにおいてSSL・TLS・DTLSプロトコルを利用したい場合はGnuTLSが必要なので, 以上のような不完全なコンパイル・インストールなら利用できない。

これに従って,Emacsにおいてインターネットにアクスルする際に http じゃないといけない。 となると,Emacsを使う際に安全性も落ちて,機能性も失われる。

安全性が落ちる

例えば,Emacsの初期化において,Melpa.orgなどからパッケージを取得する時に https のリンクにアクセスできない。

構成ファイルを編集し, https のリンクをすべて 代替用の http リンクに変更すれば取得できるようになるが,安全性が落ちてしまう。

機能性が失われる

例えば, google-translate という翻訳のためのEmacs拡張パッケージを使う場合, 拡張パッケージを保存する elpa ディレクトリにある google-translate 関連のすべての構成ファイル *.el において, https リンクを http リンクに入れ替えたとする。

これで直接にアクセスできたとしても, 翻訳のネットサービスに使われる一部の機能として, https が強制的に要求される場合があるので, 翻訳機能が正常に使われない場合がある。

ちなみに,構成ファイル *.el に変更があった時に, 変更を反映するのにその古い *.elc を削除しておかないとEmacsに反映されない可能性がある。

GnuTLSの導入

以上の問題を解決するための最も便宜的な方法はGnuTLSを導入すること。 OpenSUSEの場合は,以下のコマンドでGnuTLSを導入できる。

  sudo zypper install gnutls

準備ができたらオプション --with-gnutls=no なしで 改めてEmacsを構成し,コンパリル・インストールする。

その他

エラーメッセージ

  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.
  make: *** No targets specified and no makefile found.  Stop.
  make: *** No rule to make target 'install'.  Stop.

解決法

(OpenSUSEの場合)

  sudo zypper install ncurses-devel

このページを編集

Xin Li
Xin Li
講師

機械学習及び深層学習の応用に関する研究に従事し,不均一・偏りのあるデータに対するサンプリング手法および学習アルゴリズムに注目している。詳細はこちら

comments powered by Disqus
次へ
前へ