package-initialize: argumento de tipo incorrecto: arrayp, nil

29

Mientras revisaba emacs como editor ac / c ++ , encontré las siguientes líneas de código para incluir en mi ~/.emacsarchivo y conectarme melpa archivespara la instalación del paquete

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

después de guardar estas líneas en emacs, cuando comencé emacs me muestra un wrong type argument: arrayp, nilen el área de minibúfer

cuando lo intenté $ emacs --debug -init, obtuve:

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()

Soy nuevo en emacs, ¿alguien puede decirme cómo puedo resolver esto?

Lázaro
fuente

Respuestas:

41

Me encontré con esto el otro día. Creo que fue causado por un archivo de paquete inválido. La solución inmediata es eliminar <user-emacs-directory>/elpa/archives/melpa/archive-contents; Será reconstruido en el próximo package-initialize. Desafortunadamente, package.el no es muy robusto para este tipo de falla.

shosti
fuente
usted tiene razón que trabajó para mí alrededor de 12 horas, y de pronto este problema salió de la nada .. además de muchos paquetes mencionados en la serie de tutoriales no están en la norma elpa.gnu.org ..
Lázaro
¿No hay otra alternativa para resolver este problema?
Lázaro
Creo que probablemente sea un error en MELPA (combinado con una falta de resistencia en package.el), es posible que desee presentar un problema allí.
shosti
No estoy seguro si es relevante, pero la dirección del repositorio ha cambiado: ahora recomienda:(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
rvf0068
Me encontré con el mismo problema después de una actualización del paquete. La solución funcionó a las mil maravillas. Gracias.
rkachach
4

Tuve el mismo problema y apliqué la siguiente solución. Esto funcionó para mí:

  • Cambie la dirección del archivo melpa a: " http://melpa.org/packages "
  • Elimine el archivo ~ / .emacs.d / elpa / archives / melpa / archive-contents
  • Ejecute package-initialize y package-refresh-content.

Tengo un comando package-refresh-content en mi archivo .emacs. Esto garantiza que los paquetes estén siempre actualizados, pero agrega aproximadamente dos segundos al tiempo de arranque de emacs.

Mis comandos relacionados con paquetes en .emacs se ven así:

;; 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)))
Thorkil Værge
fuente
Estoy experimentando este problema con bastante frecuencia. Me pregunto si hay una manera de automatizar la eliminación del archivo ~ / .emacs.d / elpa / archives / melpa / archive-contents cada vez que se produce este problema.
Thorkil Værge
1
¿Quieres decir alias rm_archive='rm -r <user-emacs-directory>/elpa/archives/melpa/archive-contents'en tu ~/.bashrcarchivo?
snd