package-initialize: yanlış tür bağımsız değişken: arrayp, nil


29

emacs üzerinden ac / c ++ editörü olarak geçerken, paket kurulumuna ~/.emacsbağlanmak melpa archivesiçin dosyama eklemek için aşağıdaki kod satırlarına rastladım:

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

Bu satırları emacs içine kaydettikten sonra, emacs başladığımda bana bir wrong type argument: arrayp, nilminibuffer alanında gösteriyor

denedim $ emacs --debug -init, anladım:

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 konusunda yeniyim, birisi lütfen bana bunu nasıl çözebileceğimi söyleyebilir mi?

Yanıtlar:


41

Geçen gün buna rastladım. Bunun geçersiz bir paket arşiv dosyasından kaynaklandığını düşünüyorum. Anında düzeltme silmek <user-emacs-directory>/elpa/archives/melpa/archive-contents; Bir dahaki sefere yeniden inşa edilecek package-initialize. Ne yazık ki, package.el bu tür bir arızaya karşı çok sağlam değildir.


Eğer 12 saat hakkında benim için çalıştı haklısın, sonra birden bu sorun öğretici seride belirtilen birçok paketler standart elpa.gnu.org olmayan yanında .. çıkıverdi ..
Lazarus

Bu sorunu çözmek için başka bir alternatif yok mu?
lazarus

Muhtemelen MELPA'da bir hata olduğunu düşünüyorum (package.el'deki esneklik eksikliği ile birlikte), orada bir sorun bildirmek isteyebilirsiniz.
Shosti

İlgili olup olmadığından emin (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
değilsiniz

Bir paket güncellemesinden sonra aynı sorunu yaşadım. Düzeltme bir cazibe gibi çalıştı. Teşekkürler.
rkachach

3

Aynı sorunu yaşadım ve aşağıdaki düzeltmeyi uyguladık. Bu benim için çalıştı:

  • Melpa arşivinin adresini şu şekilde değiştirin: " http://melpa.org/packages "
  • ~ / .Emacs.d / elpa / archives / melpa / archive content dosyasını silin
  • Paket başlatma ve paket yenileme içeriğini çalıştırın.

.Emacs dosyamda bir paket yenile-içerik komutu var. Bu, paketlerin her zaman güncel olmasını sağlar, ancak emaclerin önyükleme süresine yaklaşık iki saniye ekler.

.Emacs'deki paketle ilgili komutlarım şuna benzer:

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

Bu sorunu oldukça sık yaşıyorum. Bu sorun ortaya çıktığında ~ / .emacs.d / elpa / archives / melpa / archive content dosyasının silinmesini otomatikleştirmenin bir yolu olup olmadığını merak ediyorum.
Thorkil Værge

1
Şunu musunuz alias rm_archive='rm -r <user-emacs-directory>/elpa/archives/melpa/archive-contents'sizin de ~/.bashrcdosyaya?
Snd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.