我正在尝试编译和静态链接Emacs,因为在工作中我被迫在运行CentOS 5.1的生产服务器上使用破坏的软件包管理器配置和Emacs21(没有js)进行JavaScript开发-mode并在我尝试安装并使用js [23] -mode.el或javascript.el时产生错误,我没有时间去调试。
c-mode缩进所有内容
$().ready(function() {
like();
$(this).andIOnlyHave1024Pixels(function () {
etc ();
etc ();
我如何制作更现代版本的Emacs的便携式副本?或者改变c模式? (或者任何避免使用vi的东西......)
由于
答案 0 :(得分:2)
如果您可以在计算机中编译emacs,则可以从那里运行而无需安装它。只需执行编译为您创建的二进制文件(您可能需要更改路径,因为来自不同版本的emacsclient可能无法很好地协同工作)。
我知道这不是你想要的(因为emacs不可移植,你可能在那台机器上没有编译环境),但这个技巧可能适合你。
当然,组件提出的TRAMP over ssh方法是一种更好的解决方案(以及我个人使用的方法)
答案 1 :(得分:1)
我想我在这里有一个答案的开头。首先,您需要能够在与运行时机器具有相同体系结构的某台机器上构建Emacs。你可以通过交叉编译解决这个问题,但这会让事情变得更加复杂。
tar xf emacs.tar.bz2
cd emacs
./autogen.sh
./configure --with-x=no --prefix=/usr/local
make
mkdir install
make DESTDIR=$PWD/install install
您可以随意创建前缀,只需要在运行时计算机上安装Emacs。 X被禁用,因为它大大减少了所需的库数量,并且无论如何都在ssh上运行。
现在弄清楚运行Emacs需要哪些共享库。快速浏览一下Emacs附带的所有可执行文件,可以看出这是整个Emacs安装所需的库的超集。
$ ldd install/usr/local/bin/emacs
linux-vdso.so.1 (0x00007fff427fe000)
libasound.so.2 => /usr/lib/libasound.so.2 (0x00007f66b25a0000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f66b2398000)
libdbus-1.so.3 => /usr/lib/libdbus-1.so.3 (0x00007f66b2151000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00007f66b1de9000)
libgpm.so.2 => /usr/lib/libgpm.so.2 (0x00007f66b1be2000)
libncursesw.so.5 => /usr/lib/libncursesw.so.5 (0x00007f66b1983000)
libgnutls.so.28 => /usr/lib/libgnutls.so.28 (0x00007f66b1673000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f66b1457000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f66b1159000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f66b0dac000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f66b0ba8000)
/lib64/ld-linux-x86-64.so.2 (0x00007f66b2897000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f66b0992000)
liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f66b076f000)
libp11-kit.so.0 => /usr/lib/libp11-kit.so.0 (0x00007f66b054e000)
libtasn1.so.6 => /usr/lib/libtasn1.so.6 (0x00007f66b033a000)
libnettle.so.4 => /usr/lib/libnettle.so.4 (0x00007f66b010c000)
libhogweed.so.2 => /usr/lib/libhogweed.so.2 (0x00007f66afedd000)
libgmp.so.10 => /usr/lib/libgmp.so.10 (0x00007f66afc66000)
因此,将所有这些库复制到安装树中的某个目录。 linux-vdso.so
是虚拟的,不能/不需要复制。
mkdir install/usr/local/solib
cp /usr/lib/libasound.so.2 /usr/lib/librt.so.1 /usr/lib/libdbus-1.so.3 /usr/lib/libxml2.so.2 /usr/lib/libgpm.so.2 /usr/lib/libncursesw.so.5 /usr/lib/libgnutls.so.28 /usr/lib/libpthread.so.0 /usr/lib/libm.so.6 /usr/lib/libc.so.6 /usr/lib/libdl.so.2 /lib64/ld-linux-x86-64.so.2 /usr/lib/libz.so.1 /usr/lib/liblzma.so.5 /usr/lib/libp11-kit.so.0 /usr/lib/libtasn1.so.6 /usr/lib/libnettle.so.4 /usr/lib/libhogweed.so.2 /usr/lib/libgmp.so.10 install/usr/local/solib/
归档所有。我最近一直喜欢squashfs,如果你愿意,可以使用tar。
mksquashfs install/usr/local emacs.sfs -noappend
在运行时计算机上,提取文件并将其复制到前缀。使用squashfs,我们可以安装它。
mount emacs.sfs /usr/local
使用LD_LIBRARY_PATH
设置启动emacs以使用您之前复制的库。
LD_LIBRARY_PATH=/usr/local/solib /usr/local/bin/emacs
希望这会奏效。我在一个虚拟机中测试了一个与我建立的操作系统相当类似的操作系统,所以当它们差别很大时,可能会出现问题。
答案 2 :(得分:1)
我通常使用sshfs
来安装远程文件系统并使用Emacs编辑它们上的文件。它非常可靠。
另一个不错的选择是Emacs克隆mg,因为它更小更简单,将它编译成静态可执行文件应该更容易。即使它缺少真正的Emacs上的大多数功能,你仍然会有宾至如归的感觉。