2011-11-17 11 views
7

Ho installato Marmalade e scaricato alcuni pacchetti interessanti. Ma ora, quando inizio Emacs ottengo questo errore:Rapporti ELPA/Marmalade "impossibile aprire il file di caricamento" per ~/.emacs.d/elpa/archives/-pkg

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

Se uso --debug-init, ottengo:

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 

Questo file non esiste. Ho provato a cercare questo problema con Google ma non ho trovato nulla.

risposta

13

facile. Per qualsiasi motivo, lo package.el che stai utilizzando è la versione "classica" da http://tromey.com/elpa/package.el. È selvaggiamente incompatibile con le versioni recenti di package.el. Come sei riuscito ad installare i pacchetti Marmalade usando quella versione, non lo so; devi aver avuto una versione diversa di package.el quando hai installato quei pacchetti, forse perché stavi usando un Emacs più recente al momento.

La correzione è quello di utilizzare la versione in bundle con il vostro Emacs (se è abbastanza nuovo per avere uno), o per sostituire il vostro ~/.emacs.d/elpa/package.el con this version invece, come descritto nella Marmalade instructions.

+0

sto correndo gli stessi problemi e questa soluzione non funziona per me. quando aggiungo il file package.el a '~/.emacs.d/elpa/package.el' e eval il buffer' .emacs' ottengo '(file-errore" Impossibile aprire il file di caricamento "" pacchetto ")' – PPPaul

+0

Ci sono 2 possibili posizioni per il tuo file init di emacs. Uno è '~/.emacs', e l'altro è' ~/.emacs.d/init.el'. Dato che stai usando il primo, credo che '~/.emacs.d' non sia inserito nel tuo' percorso di caricamento'. Prova invece a utilizzare quest'ultimo layout. In definitiva, la soluzione migliore è usare una versione recente di Emacs in modo che 'package.el' sia in bundle. Ci sono stati diversi rilasci stabili adatti. – sanityinc

+0

ho cancellato il mio file .emacs.le cose funzionano molto meglio ora – PPPaul

0

Penso che possa solo andare via se si crea manualmente una directory a:

c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/archives/-pkg 
+0

questo non ha funzionato per me. (su Mac 10.8.2) – PPPaul

1

L'aggiunta di un file, non di una directory, utilizzando touch ~/.emacs.d/elpa/archives/-pkg ha risolto per me.

5

Mi sono imbattuto in questa domanda mentre cercavo di risolvere un problema simile. Nel mio caso, costringendo package-initialize hanno risolto il problema:

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

Anche se non ho letto il codice sorgente per package.el, credo che una sorta di pigrizia in package.el è cousing il problema. Sebbene questa sia una vecchia domanda, volevo rispondere, nel caso qualcuno avesse bisogno di aiuto.

Per ulteriori informazioni sull'avviamento di Emacs, vedere http://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html.

+0

Recentemente ho incontrato esattamente questo problema con l'esportazione in modalità org, dopo che ho dovuto fare una installazione pulita di Ubuntu 12.10 su un aggiornamento corrotto + mal riuscito. Questo ha risolto il problema per ora con il minimo sforzo –

+0

Leggete anche 'Ch ig (emacs) Pacchetto RET di installazione 'a partire da" Il motivo per cui il caricamento automatico del pacchetto avviene dopo aver caricato il file init è che le opzioni utente ricevono solo i loro valori personalizzati dopo aver caricato l'init file, comprese le opzioni utente che influiscono sul sistema di packaging. " – phils

+0

È possibile utilizzare 'after-init-hook' per valutare il codice personalizzato dopo il completamento dell'inizializzazione del pacchetto normale. ad es .: '(aggiungi-hook 'dopo-init-hook' my-after-init-hook) (defun my-after-init-hook() ...)' – phils

0

Nel mio caso ho dovuto aggiungere questa direttiva per dire emacs dove può trovare i file necessari:

Prima di questa linea

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

E il pacchetto richiesto ...

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

(when (not package-archive-contents) 
    (package-refresh-contents))