LoginSignup
30
20

More than 5 years have passed since last update.

MELPAの package-install で発生する Not found エラーを回避する

Last updated at Posted at 2015-04-07

Not found エラー

MELPAで公開されたパッケージを package install でインストールしている最中に、次のようなエラーが発生してインストールが止まってしまうことがある。

file-error "http://melpa.milkbox.net/packages/XXXXX-2015MMDD.HHMM.el" Not found

対処1

M-x package-refresh-contents

を実行したあとにもう一度 package-install を実行する。これで解決すればめでたしめでたし。

対処2

上記の対処で解決しない場合、原因は (各パッケージにではなく) melpaサーバ にある可能性がある。

list-packages ではまず各パッケージのメタ情報 (http://melpa.org/packages/archive-contents) を取得して一覧を作成する仕組みになっているが、この archive-contents と、実際に公開されているパッケージの間でバージョン情報の不整合がかなり頻繁に発生している。具体的には melpa サーバが提供している archive-contents の更新が遅い。これが Not found エラーの原因である。

list-packages で表示されるバージョン情報と、実際に http://melpa.org に掲載されているバージョン情報を比べてみて、異なっていればこのケースである 1

なので対処法としては 2〜3日後に、メタ情報が更新されたのを見計らってまた改めて package-install を実行する というのが正しい。

ただ、どうしても今インストールしたいというケースはありますね。以下のようにやりましょう。

どうにかインストールする方法

  1. インストールしたいパッケージのバージョンを、http://:/melpa.org で調べる。

  2. (PACKAGE_USER_DIR)/archives/melpa/archive-contents を開く。

    • PACKAGE_USER_DIR はelpaパッケージを格納しているディレクトリパスで、変数 package-user-dir に設定されている。
  3. archive-contents の内容を改竄する。

    例として helm のパッケージ情報は次のような記述になっており、(20150402 2318) というのがバージョンである。

        (helm . [(20150402 2318) ((emacs (24)) (cl-lib (0 5)) (async (1 2))) "Helm is an Emacs incremental and narrowing framework" tar ((:url . "https://emacs-helm.github.io/helm/"))])
    

    これを、melpa.org で調べたものに書き変える。melpa.org で示されたバージョンが 20150404.2303 であれば、

    (helm . [(20150404 2303) ((emacs (24)) (cl-lib (0 5)) (async (1 2))) "Helm is an Emacs incremental and narrowing framework" tar ((:url . "https://emacs-helm.github.io/helm/"))])
    

    とするのが正解。

    編集に失敗しても M-x package-refresh-contents を実行すれば元の (不整合のある) archive-contents に戻せるので気にすんな。

  4. 改竄が終了すればセーブして emacs を再起動。

  5. 再起動後すぐに、M-x package-list-packages-no-fetch を実行。ここから通常通りの操作で最新版がインストールできるようになっているはず。


  1. 頻繁にアップデートされる helm なんかではこの不整合がよく発生することを確認している。 

30
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
20