如何获得在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
答案 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-variable
(describe-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 '{}' +