Umi Uyuraのブログ

プログラミング関連の作業ログ

ネット非接続状態でEmacs起動時にEmacsWikiへの通信がエラーになってしまう問題が解決した

以前から気になっていたのですが、インターネットへ接続していない状態でEmacsを起動するとエラーが発生してしまい、.emacsの読み込みが中途半端な状態になってしまう現象がありました。

f:id:umi-uyura:20151110234332p:plain

これは、パッケージインストールツールのauto-installにて、起動時に EmacsWiki に掲載されているパッケージ名を読み込むために呼び出している auto-install-update-emacswiki-package-name が、EmacsWikiへのとの接続を確立できないためにエラーになっているようでした。

ネットワークが繋がっていないときということで、頻繁に起きるものでもないこともあって放置していたのですが、ふと気になってきて調べて始めたところ、以下のツイートを見つけました。

auto-installのメンテナをされている@rubikitch氏とやりとりで、このツイートへのリプライの中で、

wgetがインストールされていれば、wgetで判定してくれるのでフリーズしないと思うのですが

というものがありました。

私の環境にはHomebrewでwgetを導入してはいるのですが、もしかしたらそれがうまく検出されていないのかもしれない、と思い、明示的にwgetを使うように auto-install-use-wgett に設定してみたところ、ネットワークが切断された状態でもエラーにならず、Emacsが起動してくれました。

(when (require 'auto-install nil t)
  (setq auto-install-use-wget t)                        ; <-- 入れた
  (auto-install-update-emacswiki-package-name t)
  (auto-install-compatibility-setup)
)

ただ、環境によっては、逆にwgetを使っていることで?フリーズしてしまうケースなどもあったようなので、一概にこの設定で良いかはわかりません。

たまに外で作業している場合などでネットの接続状態が悪いと、この問題でEmacsが不完全に起動してしまい、 (auto-install-update-emacswiki-package-name t) 部分をコメントアウトして起動しなおしていたりしたのですが、これで気にしなくてもよくなりそう。

環境

項目 バージョン 備考
OS Mac OS X 10.10.5 -
Emacs 24.5.1 Homebrew版
auto-install 1.58 -
wget 1.16.3 Homebrew版

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例