Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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 なんかではこの不整合がよく発生することを確認している。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした