【问题标题】:Installing CEDET 1.0pre6 as user while keeping CEDET 1.0pre4 deb package installed以用户身份安装 CEDET 1.0pre6,同时保持安装 CEDET 1.0pre4 deb 包
【发布时间】:2009-08-27 16:55:55
【问题描述】:

我的工作计算机 (Ubuntu 8.10) 安装了 CEDET 版本 1.0pre4,我正在尝试在我的本地目录中安装最新版本的 CEDET (1.0pre6)(最终目标是将 ECB 升级到最新版本)。

不幸的是,默认的 debian/ubuntu 安装会在我的 .emacs 文件被调用之前为 CEDET 和 ECB 初始化系统范围的包,然后我尝试加载 1.0pre6 文件尝试使用未在 1.0pre4 中定义的符号时抛出错误. (请参阅 this mailing list thread 了解其他人报告相同问题。)

我首先尝试手动重新加载 CEDET 在我的 .emacs 中提供的包,但其中一个无法重新加载两次。

我现在正在尝试unload-feature 命令。当我尝试卸载 CEDET 时,出现错误:

 Lisp error: (error "Loaded libraries (\"/etc/emacs/site-start.d/55ecb.el\") depend on /usr/share/emacs22/site-lisp/cedet-common/cedet.elc")

但是没有要卸载的ecb 功能。有一个ecb-autoloads 功能,似乎由 /etc/emacs/site-start.d/55ecb.el 提供,但该库似乎也依赖它。

我想我可以以某种方式让 Emacs 卸载系统范围的 ECB,或者我可以以某种方式将系统范围配置中的大部分内容添加到我的 .emacs 文件的顶部,从而删除 ECB 和 CEDET 加载。

后者听起来很混乱、丑陋且不稳定。如果我知道怎么做,我宁愿做前者。或者也许有人对这个问题有更好的解决方案?

【问题讨论】:

  • 这可能很明显,您已经尝试过了,但您不能让您的管理员卸载您系统上的 CEDET 软件包吗?
  • 是的,这很明显,但我认为应该有办法解决它。但是我们已经升级了计算机,系统管理员忘记重新安装 cedet,所以我没有提醒他。 (反正我是唯一一个使用它的人。)

标签: ubuntu emacs debian cedet emacs-ecb


【解决方案1】:

不知道您的 Emacs 是如何安装的,因此很难确定解决方案。我要尝试的第一件事是禁用site file的加载

emacs --no-site-file

查看它是否从那里加载。它也可能被加载到库 default 中,但由于它是在您的 .emacs之前加载的,而 default 是在之后加载的,这可能不是罪魁祸首。

如果您的管理员 dumped Emacs 已经加载了 CEDET,那么您就不走运了,当然必须自己动手。

话虽如此,下载、构建和安装 Emacs 与任何其他软件一样简单。如果我记得,这些是步骤:gtar xfz emacs-23.1.tar.gz; cd emacs-23.1; ./configure; gmake; gmake install


作为对评论的回应(您仍想加载 site-start 的其余部分),我会尝试以下操作:

  1. 与管理您的系统的任何人交谈,让他们修复站点启动(库名称存储在变量 site-run-file 中)以不加载该内容,而是将此类内容放入 default(即加载用户的.emacs)
  2. 在等待 #1 解决时(如果有的话),像这样调用 Emacs

    emacs -q --no-site-file -l hack.el

其中 hack.el 包含类似的内容

;;; some changes to load-path to put your stuff in front of the load-path`
(if site-run-file
    (load site-run-file t t))
;;; now load your .emacs

要查找site-run-file,请使用M-x find-library 和存储在site-run-file 中的名称。

如果您的管理员是 vi 用户并且对 Emacs 一无所知(就像我在以前的工作中一样),您可以教育他们并希望获得最好的结果,或者开始自己动手。

【讨论】:

  • 我在发帖前已经尝试过了。这会停止加载系统范围的 ECB 和 CEDET 包,但它也会禁用所有其他系统范围的 emacs 包的加载,这意味着我需要手动添加它们,以及将来添加的任何其他包,以我的 .emacs 文件。我更愿意在加载任何包之前找到一种方法来覆盖 emacs 加载路径。查看选项,理论上我应该能够使用 --no-site-file,定义我的加载路径,然后调用 site-start.el。但在 Ubuntu/Debian 中,该文件是空的,所以我不知道它在哪里或如何被调用。
【解决方案2】:

我知道这是一个相当老的问题,但我最近在尝试安装 CEDET 1.1 时遇到了 Ubuntu 13.10 的这个问题。

我之前安装了 /etc/emacs/site-start.d/50ecb.el 附带的 ecb 包,导致在处理我的 .emacs 文件之前加载了与 Emacs23 一起打包的 CEDET 版本。

所以,我需要做的就是从我的系统中清除 ecb 包,如下所示:

sudo apt-get purge ecb

现在可以按照 CEDET 安装文件中的说明加载我的本地版本的 CEDET。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多