패키지 초기화 : 잘못된 유형 인수 : arrayp, nil


29

emacs를 ac / c ++ editor로 진행하면서 패키지 설치 ~/.emacsmelpa archives위해 연결하기 위해 파일 에 포함 할 다음 코드 행을 발견했습니다.

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

이 라인을 이맥스에 저장 한 후, 이맥스를 시작할 때 wrong type argument: arrayp, nil미니 버퍼 영역에 나에게 표시됩니다

내가 시도했을 때 $ 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()

저는 이맥스를 처음 사용합니다. 누군가 어떻게 해결할 수 있습니까?

답변:


41

요 전날 나는 이것에 부딪쳤다. 잘못된 패키지 아카이브 파일로 인해 발생한 것 같습니다. 즉각적인 해결책은 삭제하는 것입니다 <user-emacs-directory>/elpa/archives/melpa/archive-contents. 다음에 다시 작성됩니다 package-initialize. 불행히도 package.el은 이러한 종류의 실패에 대해 강력하지 않습니다.


당신이 12 시간에 대해 나를 위해 일한 맞다, 갑자기이 문제는 튜토리얼 시리즈에서 언급 된 많은 패키지가 표준 elpa.gnu.org에없는 외에 .. 갑자기 나왔다 ..
나사로

이 문제를 해결할 다른 대안이 없습니까?
나사로

MELPA의 버그 (package.el의 복원력 부족과 결합 된 버그) 인 것 같습니다. 문제를 제기 할 수 있습니다.
shosti

관련성이 있는지 확실하지 않지만 저장소의 주소가 변경되었습니다. 이제 다음을 권장합니다.(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
rvf0068

패키지 업그레이드 후 동일한 문제가 발생했습니다. 수정은 매력처럼 작동했습니다. 감사.
rkachach

3

나는 같은 문제가 있었고 다음 수정 사항을 적용했습니다. 이것은 나를 위해 일했다 :

  • melpa 아카이브의 주소를 " http://melpa.org/packages "로 변경 하십시오 .
  • ~ / .emacs.d / elpa / archives / melpa / archive-contents 파일을 삭제하십시오.
  • package-initialize 및 package-refresh-contents를 실행하십시오.

내 .emacs 파일에 package-refresh-contents 명령이 있습니다. 이렇게하면 패키지가 항상 최신 상태로 유지되지만 emacs의 부팅 시간에 약 2 초가 추가됩니다.

.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-contents 파일 삭제를 자동화하는 방법이 있는지 궁금합니다.
Thorkil Værge

1
당신은 alias rm_archive='rm -r <user-emacs-directory>/elpa/archives/melpa/archive-contents'당신의 ~/.bashrc파일 을 의미 합니까?
snd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.