package-initialize: argumen tipe yang salah: arrayp, nil

29

saat melalui emacs sebagai editor ac / c ++ , saya menemukan baris kode berikut untuk disertakan dalam ~/.emacsfile saya , untuk terhubung ke melpa archivesuntuk instalasi paket

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

setelah menyimpan garis-garis ini ke emacs, ketika saya mulai emacs itu menunjukkan saya wrong type argument: arrayp, nildi area minibuffer

ketika saya mencoba $ emacs --debug -init, saya mendapat:

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

Saya baru mengenal emacs, dapatkah seseorang memberi tahu saya bagaimana saya bisa menyelesaikan ini?

lazarus
sumber

Jawaban:

41

Saya bertemu dengan ini beberapa hari yang lalu. Saya pikir itu disebabkan oleh file arsip paket yang tidak valid. Perbaikan segera adalah menghapus <user-emacs-directory>/elpa/archives/melpa/archive-contents; itu akan dibangun kembali pada berikutnya package-initialize. Sayangnya, package.el tidak terlalu kuat untuk kegagalan semacam ini.

shosti
sumber
Anda benar itu bekerja untuk saya sekitar 12 jam, lalu tiba-tiba masalah ini muncul entah dari mana .. selain itu banyak paket yang disebutkan dalam seri tutorial tidak dalam standar elpa.gnu.org ..
lazarus
tidak adakah alternatif lain untuk menyelesaikan masalah ini?
lazarus 3-15
Saya pikir itu mungkin bug di MELPA (dikombinasikan dengan kurangnya ketahanan dalam package.el), Anda mungkin ingin mengajukan masalah di sana.
shosti
Tidak yakin apakah itu relevan, tetapi alamat untuk repositori telah berubah: sekarang ini merekomendasikan:(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
rvf0068
Saya mengalami masalah yang sama setelah upgrade paket. Cara mengatasinya bekerja seperti pesona. Terima kasih.
rkachach
4

Saya memiliki masalah yang sama dan menerapkan perbaikan berikut. Ini bekerja untuk saya:

  • Ubah alamat untuk arsip melpa ke: " http://melpa.org/packages "
  • Hapus file ~ / .emacs.d / elpa / arsip / melpa / arsip-konten
  • Jalankan package-initialize dan package-refresh-content.

Saya memiliki perintah paket-refresh-konten dalam file .emacs saya. Ini memastikan bahwa paket-paket selalu terbaru tetapi menambahkan sekitar dua detik untuk waktu boot emacs.

Perintah terkait paket saya di .emacs terlihat seperti ini:

;; 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
sumber
Saya cukup sering mengalami masalah ini. Saya bertanya-tanya apakah ada cara untuk mengotomatiskan penghapusan file ~ / .emacs.d / elpa / arsip / melpa / arsip-konten setiap kali masalah ini terjadi.
Thorkil Værge
1
Apakah maksud Anda alias rm_archive='rm -r <user-emacs-directory>/elpa/archives/melpa/archive-contents'dalam ~/.bashrcfile Anda ?
snd