【问题标题】:How to change the emacs package repository?如何更改 emacs 包存储库?
【发布时间】:2023-04-05 08:49:01
【问题描述】:

我在 Ubuntu 14.4 上使用 Emacs 24.3.1。我希望list-packages 命令列出来自 MELPA 存储库的包。我遵循了herehere 的指示,但无济于事。具体来说,按照第一个链接中给出的建议,我在 ~./emacs 文件中添加了以下几行:

(when (>= emacs-major-version 24)
  (require 'package)
  (package-initialize)
  (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
  )

并重新启动了我的 emacs。这没有任何效果,所以我删除了上面的行,并按照第二个链接中给出的建议,将以下行添加到我的 ~/.emacs 文件中:

(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                         ("marmalade" . "https://marmalade-repo.org/packages/")
                         ("melpa" . "http://melpa.milkbox.net/packages/")))

我重新启动了我的 emacs,但这也没有任何效果。

我认为这些尝试没有效果的原因是,在每次尝试之后,我都使用list-package 命令列出了可用的包,但没有找到我感兴趣的包 highlight-chars.el,它出现在列表the MELPA website

如何指示list-packages 命令搜索 MELPA 存储库?

【问题讨论】:

  • 不要遗漏(package-initialize)
  • @abo-abo:谢谢,但我不明白。
  • 如果是第一个版本的代码,有package-initialize。第二版中没有。
  • @abo-abo:但第一个版本也行不通。

标签: emacs packages emacs24


【解决方案1】:

重启后首先要检查的是相关变量的值

C-hv package-archives RET

它是否具有您尝试设置的值是最重要的。

如果没有,那么可能是您的配置中的其他内容设置了冲突值。

我会冒险猜测您有 package-archives 变量自定义,并且存储的自定义值正在破坏您使用 setq 设置的值。

例如,以下 init 文件将具有描述的效果:

(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                         ("marmalade" . "https://marmalade-repo.org/packages/")
                         ("melpa" . "http://melpa.milkbox.net/packages/")))

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-archives (quote (("gnu" . "http://elpa.gnu.org/packages/")))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

那些custom-set-* 表单也可以在一个单独的文件中,因此不太明显。

试试 M-x customize-option RET package-archives RET

选择“恢复”和“删除自定义”以删除通过此界面保存的任何值。

我推测 Emacs 对包系统的默认初始化是在评估您的初始化文件之后发生的这一事实可能也是这里的一个因素。人们经常建议在您的初始化文件中调用(package-initialize),但忽略您想要同时拥有(setq package-enable-at-startup nil) 的信息,以防止初始化发生两次。如果在 package-archives 变量通过自定义再次更改之后发生第二次初始化,则可能会对系统按您希望的方式工作造成额外的障碍。

【讨论】:

  • 这就是我最终解决问题的方法。我将 setq 语句移到 .emacs 文件的开头,现在它可以工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 2018-10-13
  • 2022-08-18
  • 1970-01-01
相关资源
最近更新 更多