pacchetto-inizializza: argomento di tipo errato: arrayp, zero


29

mentre attraversavo emacs come editor ac / c ++ , mi sono imbattuto nelle seguenti righe di codice da includere nel mio ~/.emacsfile, a cui connettermi melpa archivesper l'installazione del pacchetto

(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(package-initialize)

dopo aver salvato queste righe in emacs, quando ho iniziato a emacs mi sta mostrando un wrong type argument: arrayp, nilnell'area del minibuffer

quando ho provato per $ emacs --debug -init, ho ottenuto:

Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
  package--add-to-archive-contents(nil "melpa")
  package-read-archive-contents("melpa")
  package-read-all-archive-contents()
  package-initialize()
  eval-buffer(#<buffer  *load*> nil "/home/anupam/.emacs" nil t)  ; Reading at buffer position 905
  load-with-code-conversion("/home/anupam/.emacs" "/home/anupam/.emacs" t t)
  load("~/.emacs" t t)
  #[0 "\205\262�    \306=\203�\307\310Q\202;�   \311=\204�\307\312Q\202;�\313\307\314\315#\203*�\316\202;�\313\307\314\317#\203:�\320\nB\321\202;�\316\322\323\322\211#\210\322=\203a�\324\325\326\307\327Q!\"\323\322\211#\210\322=\203`�\210\203\243�\330!\331\232\203\243�\332!\211\333P\334!\203}�\211\202\210�\334!\203\207�\202\210�\314\262\203\241�\335\"\203\237�\336\337#\210\340\341!\210\266\f?\205\260�\314\323\342\322\211#)\262\207" [init-file-user system-type delayed-warnings-list user-init-file inhibit-default-init inhibit-startup-screen ms-dos "~" "/_emacs" windows-nt "/.emacs" directory-files nil "^\\.emacs\\(\\.elc?\\)?$" "~/.emacs" "^_emacs\\(\\.elc?\\)?$" (initialization "`_emacs' init file is deprecated, please use `.emacs'") "~/_emacs" t load expand-file-name "init" file-name-as-directory "/.emacs.d" file-name-extension "elc" file-name-sans-extension ".el" file-exists-p file-newer-than-file-p message "Warning: %s is newer than %s" sit-for 1 "default"] 7 "\n\n(fn)"]()
  command-line()
  normal-top-level()

Sono nuovo di emacs, qualcuno può dirmi come posso risolvere questo problema?

Risposte:


41

L'ho incontrato l'altro giorno. Penso che sia stato causato da un file di archivio del pacchetto non valido. La soluzione immediata è eliminare <user-emacs-directory>/elpa/archives/melpa/archive-contents; sarà ricostruito il prossimo package-initialize. Sfortunatamente, package.el non è molto robusto per questo tipo di errore.


hai ragione ha funzionato per me circa 12 ore, poi all'improvviso questo problema è venuto fuori dal nulla .. oltre a molti pacchetti menzionati nella serie tutorial non sono nello standard elpa.gnu.org ..
lazarus

non c'è altra alternativa per risolvere questo problema?
lazzaro,

Penso che sia probabilmente un bug in MELPA (combinato con una mancanza di resilienza in package.el), potresti voler presentare un problema lì.
shosti,

Non sono sicuro che sia pertinente, ma l'indirizzo per il repository è cambiato: ora consiglia:(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
rvf0068

Ho riscontrato lo stesso problema dopo un aggiornamento del pacchetto. La correzione ha funzionato come un fascino. Grazie.
rkachach,

4

Ho avuto lo stesso problema e ho applicato la seguente correzione. Questo ha funzionato per me:

  • Modificare l'indirizzo per l'archivio melpa in: " http://melpa.org/packages "
  • Elimina il file ~ / .emacs.d / elpa / archives / melpa / archive-contents
  • Esegui pacchetto-inizializza e pacchetto-aggiorna-contenuto.

Ho un comando package-refresh-contents nel mio file .emacs. Questo assicura che i pacchetti siano sempre aggiornati ma aggiunge circa due secondi al tempo di avvio di emacs.

I miei comandi relativi al pacchetto in .emacs assomigliano a questo:

;; Package system
(require 'package)
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                         ("marmalade" . "https://marmalade-repo.org/packages/")
                         ("melpa" . "http://melpa.org/packages/")
                         ("user42" . "http://download.tuxfamily.org/user42/elpa/packages/")))
(package-initialize)

(package-refresh-contents)
(setq auto-install-packages
      '(color-theme bar-cursor htmlize flycheck flycheck-haskell
                    haskell-mode sml-mode rust-mode fsharp-mode nasm-mode go-mode
                    perl-mode web-mode )) ;;ffap-perl-module markdown-mode))
(dolist (pkg auto-install-packages)
  (unless (package-installed-p pkg)
    (package-install pkg)))

Sto riscontrando questo problema abbastanza spesso. Mi chiedo se c'è un modo per automatizzare la cancellazione del file ~ / .emacs.d / elpa / archives / melpa / archive-contents ogni volta che si verifica questo problema.
Thorkil Værge,

1
Intendi alias rm_archive='rm -r <user-emacs-directory>/elpa/archives/melpa/archive-contents'nel tuo ~/.bashrcfile?
Snd
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.