Отчеты ELPA/Marmalade не могут открыть файл загрузки для ~/.emacs.d/elpa/archives/-pkg

Я установил Marmalade и скачал несколько интересных пакетов. Но теперь, когда я запускаю Emacs, я получаю эту ошибку:

Cannot open load file: c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/archives/-pkg

Если я использую --debug-init, я получаю:

Debugger entered--Lisp error: (file-error "Cannot open load file" "c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/archives/-pkg")
load("c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/archives/-pkg" nil t)
(if (file-directory-p pkg-dir) (load (concat pkg-dir ... "-pkg") nil t))
(let ((pkg-dir ...)) (if (file-directory-p pkg-dir) (load ... nil t)))

package-load-descriptor("c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/" "archives")
(lambda (name) (package-load-descriptor dir name))("archives")
mapc((lambda (name) (package-load-descriptor dir name)) ("anything-1.287" "anything-  complete-1.86" "anything-config-0.4.1" "archive-contents" "archive-contents~" "archives" "auto-indent-mode-0.35" "builtin-packages" "builtin-packages~" "clojure-mode-1.7.1" "clojurescript-mode-0.5" "coffee-mode-0.3.0" "color-file-completion-1.0.1" "color-theme-6.6.1" "color-theme-eclipse-0.0.2" "color-theme-github-0.0.3" "color-theme-railscasts-0.0.2" "color-theme-twilight-0.1" "css-mode-1.0" "drag-stuff-0.0.3" "evernote-mode-0.41" "find-file-in-project-2.0" "flymake-coffee-0.4" "flymake-haml-0.5" "flymake-ruby-0.4" "flymake-shell-0.5" "haml-mode-3.0.14" "highlight-parentheses-1.0.1" "html-script-src-0.0.2" "inf-ruby-2.1" "js-comint-0.0.1" "js2-mode-20090814" "lua-mode-20100617" "package.el" "package.el~" "project-local-variables-0.2" "ruby-compilation-0.7" "ruby-electric-1.1" "ruby-mode-1.1" "slime-20100404" "tabbar-2.0.1" "tabbar-ruler-0.2" "yasnippet-0.6.1" "yasnippet-bundle-0.6.1" "zenburn-1.8"))
(if (file-directory-p dir) (mapc (lambda ... ...) (directory-files dir nil "^[^.]")))
(lambda (dir) (if (file-directory-p dir) (mapc ... ...)))("c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/")
mapc((lambda (dir) (if (file-directory-p dir) (mapc ... ...))) ("c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/" "/usr/share/emacs/site-lisp/elpa/"))
package-load-all-descriptors()
package-initialize()
  (progn (package-initialize))
(if (load (expand-file-name "~/.emacs.d/elpa/package.el")) (progn (package-initialize)))
(when (load (expand-file-name "~/.emacs.d/elpa/package.el")) (package-initialize))
eval-buffer(#<buffer  *load*> nil "c:/Documents and Settings/Carlos/Datos de programa/.emacs" nil t)  ; Reading at buffer position 9019
load-with-code-conversion("c:/Documents and Settings/Carlos/Datos de programa/.emacs" "c:/Documents and Settings/Carlos/Datos de programa/.emacs" t t)
load("~/.emacs" t t)
#[nil "\205\264

Этот файл не существует. Я пытался найти эту проблему в Google, но ничего не нашел.


person user1050817    schedule 17.11.2011    source источник


Ответы (5)


Легко. По какой-то причине package.el, которую вы сейчас используете, является "классической" версией от http://tromey.com/elpa/package.el. Это совершенно несовместимо с последними версиями package.el. Как вам удалось установить пакеты Marmalade, используя эту версию, я не знаю; у вас, должно быть, была другая версия package.el, когда вы устанавливали эти пакеты, возможно, потому, что в то время вы использовали более новый Emacs.

Исправление состоит в том, чтобы использовать версию, связанную с вашим Emacs (если она достаточно новая, чтобы иметь ее), или заменить ваш ~/.emacs.d/elpa/package.el на эта версия, как описано в Инструкции по мармеладу.

person sanityinc    schedule 17.11.2011
comment
я сталкиваюсь с теми же проблемами, и это решение не работает для меня. когда я добавляю файл package.el в ~/.emacs.d/elpa/package.el и оцениваю буфер .emacs, я получаю (file-error "Cannot open load file" "package") - person PPPaul; 08.01.2013
comment
Есть 2 возможных места для вашего файла инициализации emacs. Один ~/.emacs, другой ~/.emacs.d/init.el. Поскольку вы используете первый, я считаю, что ~/.emacs.d не ставится на ваш load-path. Вместо этого попробуйте использовать последний макет. В конечном счете, лучшее решение — использовать последнюю версию Emacs, чтобы package.el был в комплекте. Было несколько подходящих стабильных выпусков. - person sanityinc; 09.01.2013
comment
Я думаю, вы имели в виду, что я удалил свой emacs, теперь все работает намного лучше: D - person expelledboy; 28.10.2014

Я наткнулся на этот вопрос, пытаясь решить аналогичную проблему. В моем случае форсирование package-initialize решило проблему:

;; init.el
(require 'package)
(package-initialize)

Несмотря на то, что я не читал исходный код package.el, я считаю, что какая-то лень в package.el является причиной проблемы. Хотя это и старый вопрос, я хотел ответить, если кому-то еще понадобится помощь.

Для получения дополнительной информации о запуске Emacs см. http://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html.

person Community    schedule 19.03.2013
comment
Недавно я столкнулся именно с этой проблемой с экспортом в организационном режиме после того, как мне пришлось выполнить чистую установку Ubuntu 12.10 поверх поврежденного + неудачного обновления. Это решило проблему на данный момент с минимальной суетой - person Yemon Choi; 24.04.2013
comment
Также прочитайте C-h i g (emacs) Package Installation RET начиная с Причина, по которой автоматическая загрузка пакета происходит после загрузки файла инициализации, заключается в том, что параметры пользователя получают свои настроенные значения только после загрузки файла инициализации, включая параметры пользователя, влияющие на систему пакетов. - person phils; 13.09.2013
comment
Вы можете использовать after-init-hook для оценки пользовательского кода после завершения обычной инициализации пакета. например: (add-hook 'after-init-hook 'my-after-init-hook) (defun my-after-init-hook () ...) - person phils; 13.09.2013

Добавление файла, а не каталога, с помощью touch ~/.emacs.d/elpa/archives/-pkg решило это для меня.

person susy    schedule 08.03.2013

Я думаю, что это может просто исчезнуть, если вы вручную создадите каталог по адресу:

c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/archives/-pkg
person cristobalito    schedule 17.11.2011

В моем случае мне пришлось добавить эту директиву, чтобы сообщить emacs, где он может найти необходимые файлы:

Сначала эта строка

(add-to-list 'load-path "~/.emacs.d/")

И необходимый пакет...

(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)

(when (not package-archive-contents)
  (package-refresh-contents))
person tangrammer    schedule 18.09.2013