如何获得系统权限以便我可以编译emacs' ETag的?

时间:2016-06-03 20:01:17

标签: ubuntu emacs elisp permission-denied

如何获得在emacs中运行编译的权限?

我正在创建特定目录(/usr/share/emacs/24.3/lisp)中的TAGS文件 - 通过intro to programming in Emacs Lisp by Robert Chassell

我已经运行了编译命令, M-x compile RET etags *.el RET

作为回报,我被告知许可被拒绝。这是我的个人电脑,运行带有sudo权限的ubuntu 14.04 LTS(我的个人电脑)。

我找到了一些可能适用且值得尝试的信息permission denied when running sh scripts(也许在示例中尝试chmod + x * .el而不是chmod + x filename.sh)但是有点害怕不是确切的解决方案,我是编程的新手,更不用说linux了(我已经损坏了一些文件,并且几天前不得不重新安装ubuntu 14.04

以下是bufer中显示的实际消息:

-*- mode: compilation; default-directory: "/usr/share/emacs/24.3/lisp/" -*-
Compilation started at Sat Jun  4 05:36:16

etags *.el
TAGS: Permission denied

Compilation exited abnormally with code 1 at Sat Jun  4 05:36:16

1 个答案:

答案 0 :(得分:0)

首先,您可以使用public partial class MyService : ServiceBase { private ServiceHost m_svcHost = null; private myObject = null; ... // Run this method from external WCF client private void SomeMethod() { } protected override void OnStart(string[] args) { if (m_svcHost != null) m_svcHost.Close(); m_svcHost = new ServiceHost(typeof(MyCommunicationService)); m_svcHost.Open(); // initialize and work with myObject } protected override void OnStop() { if (m_svcHost != null) { m_svcHost.Close(); m_svcHost = null; } } } 免费获得一半标签功能(对于Emacs lisp,无论如何)。我将它绑定到find-function。还有C-h C-f,但我发现find-variabledescribe-variable)更有用。

您可能正在以常规用户而不是管理员身份运行Emacs。这绝对是正确的做法,但是不允许你像C-h v下的任何内容一样写入系统目录。您可以以root用户身份运行Emacs(/usr),也可以使用名为tramp的软件包,它允许您以不同的用户身份工作(它还允许您编辑远程计算机上的文件)。

使用sudo emacs以root身份打开目录。打开目录后,运行C-x C-f /sudo:localhost:/usr/share/emacs/24.3/lisp/

另外,我怀疑这个命令能做你想做的事。大多数Emacs安装gzip lisp源代码,虽然compile似乎足够智能来处理这个,但是glob模式etags将不匹配。此外,还有子目录。最好使用*.el命令:find

真正的解决方案是不要将TAGS文件放在该目录中。只需将其放在您拥有写入权限的其他地方。

find -name "*.el" -o -name "*.el.gz" -exec etags '{}' +