пакет-ініціалізація: аргумент неправильного типу: arrayp, nil


29

під час перегляду emacs як редактора ac / c ++ , я натрапив на наступні рядки коду, які потрібно включити до свого ~/.emacsфайлу, щоб підключитися до melpa archivesвстановлення пакета

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

після збереження цих рядків у emacs, коли я почав emacs, він показує мені wrong type argument: arrayp, nilв області minibuffer

коли я намагався $ emacs --debug -init, я отримав:

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

Я новачок у emacs, чи хтось, будь ласка, скаже мені, як я можу це вирішити?

Відповіді:


41

Я натрапив на це днями. Я думаю, що це було викликано невірним файлом архіву пакунків. Безпосереднє виправлення - видалити <user-emacs-directory>/elpa/archives/melpa/archive-contents; він буде перебудований на наступному package-initialize. На жаль, package.el не дуже надійний до подібних збоїв.


Ви маєте рацію, це працювало на мене близько 12 годин, потім раптом ця проблема з'явилася нізвідки .. крім того багато пакунків, згаданих у підручнику, не в стандарті elpa.gnu.org ..
lazarus

хіба немає іншої альтернативи для вирішення цієї проблеми?
Лазар

Я думаю, що це, мабуть, помилка в MELPA (у поєднанні з відсутністю стійкості в package.el), можливо, ви захочете подати там проблему.
шості

Не впевнений, чи він доречний, але адреса сховища змінилася: тепер він рекомендує:(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
rvf0068

Я побіг у тій же проблемі після оновлення пакета. Виправлення спрацювало як шарм. Спасибі.
ркачач

4

У мене була така ж проблема і застосовано наступне виправлення. Це працювало для мене:

  • Змініть адресу архіву melpa на: " http://melpa.org/packages "
  • Видаліть файл ~ / .emacs.d / elpa / archives / melpa / archive-content file
  • Запустіть пакет-ініціалізація та оновлення вмісту пакета.

У мене є. Команда оновлення вмісту пакета у моєму файлі .emacs. Це гарантує, що пакунки завжди актуальні, але це додає приблизно дві секунди до часу завантаження emacs.

Мої команди, пов'язані з пакетом, у .emacs виглядають так:

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

Я стикаюся з цією проблемою досить часто. Цікаво, чи існує спосіб автоматичного видалення файлу ~ / .emacs.d / elpa / archives / melpa / archive-content, коли виникає ця проблема.
Thorkil Værge

1
Ви маєте на увазі alias rm_archive='rm -r <user-emacs-directory>/elpa/archives/melpa/archive-contents'у своєму ~/.bashrcфайлі?
snd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.