แพคเกจเริ่มต้น: อาร์กิวเมนต์ประเภทที่ไม่ถูกต้อง: arrayp, ศูนย์


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) คุณอาจต้องการยื่นปัญหาที่นั่น
shosti

ไม่แน่ใจว่าเกี่ยวข้องหรือไม่ แต่ที่อยู่ของที่เก็บมีการเปลี่ยนแปลง: ตอนนี้แนะนำให้ใช้:(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
rvf0068

ฉันพบปัญหาเดียวกันหลังจากอัปเกรดแพ็คเกจ การแก้ไขทำงานเหมือนมีเสน่ห์ ขอบคุณ
rkachach

3

ฉันมีปัญหาเดียวกันและใช้การแก้ไขต่อไปนี้ สิ่งนี้ใช้ได้กับฉัน:

  • เปลี่ยนที่อยู่สำหรับไฟล์เก็บถาวร melpa เป็น: " http://melpa.org/packages "
  • ลบไฟล์ ~ / .emacs.d / elpa / archives / melpa / ไฟล์เก็บถาวร - เนื้อหา
  • เรียกใช้ package-initialize และ package-refresh-content

ฉันมีคำสั่ง package-refresh-content ในไฟล์. 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 / ไฟล์เก็บถาวร - เนื้อหาเมื่อใดก็ตามที่ปัญหานี้เกิดขึ้น
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.