2013-07-05 5 views
2

Я пытаюсь скомпилировать и статически связать Emacs, потому что на работе я вынужден выполнять JavaScript-разработку через ssh на рабочем сервере под управлением CentOS 5.1 со сломанной конфигурацией диспетчера пакетов и Emacs21, которая не работает У меня есть js-режим и выдает ошибки всякий раз, когда я пытаюсь установить и использовать js [23] -mode.el или javascript.el, которые у меня нет времени на работу для отладки.автономные портативные emacs

с режимом отступы всё

$().ready(function() { 
      like(); 
      $(this).andIOnlyHave1024Pixels(function() { 
               etc(); 
               etc(); 

Как бы идти о создании портативной копии более современной версии Emacs? Или альтернативно изменить c-режим? (Или что-нибудь, чтобы избежать необходимости использовать вяз ...)

Благодарности


+4

Вы используете ssh с персональной машины в машину CentOS? Запустите emacs с персональной машины и используйте TRAMP! 'C-x C-f/ssh: ...' Хотя, даже если это сработает для вас, мне все равно хотелось бы, чтобы кто-то опубликовал инструкции для «портативных» emacs. – assem

+0

@assem Спасибо! К сожалению, я не могу, но это будет действительно полезно в будущем. – user234461

ответ

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/ 

Архив все. В последнее время мне нравятся сквошфы, используйте tar, если хотите.

mksquashfs install/usr/local emacs.sfs -noappend 

На машине времени выполнения извлеките файлы и скопируйте их в префикс. С squashfs мы можем просто установить его.

mount emacs.sfs /usr/local 

Начало Emacs с LD_LIBRARY_PATH набор использовать библиотеки скопированные ранее.

Надеюсь, что это сработает. Я тестировал в виртуальной машине с довольно похожей ОС к той, на которой я построил, поэтому, возможно, что-то пойдет наперекосяк, когда они будут отличаться большим количеством.

+0

Красивый подход. Требуется ли для этого решения sudo доступ для установки squash fs? (если бы OP имел доступ к sudo, он, вероятно, смог бы обновить emacs). Основанный на FUSE подход устранит эту проблему? – juanleon

+0

Да, ему нужно sudo для монтажа (и, вероятно, запись в/usr/local). Но если у вас нет sudo, вы можете просто установить префикс для чего-то в $ HOME, извлечь изображение squashsfs, как и любой другой формат архива, и скопировать файлы в префикс. – jpkotta

2

Если вы можете скомпилировать Emacs в машине, вы можете запустить оттуда, не устанавливая его. Просто выполните двоичный файл, созданный для вас компиляцией (возможно, вам придется изменить свой путь, поскольку emacsclient из разных версий может плохо работать вместе).

Я знаю, что это не то, что вы искали (поскольку emacs не переносится, и в этой машине может отсутствовать среда компиляции), но трюк может сработать для вас.

Конечно бродяга через SSH подход, ASSEM предложил лучшее решение (и то, что я лично использую)

+0

Спасибо, я не знал, что это сработает без его установки. (к сожалению, autotools не установлен и не может быть установлен из-за разбитого менеджера пакетов.) – user234461

+0

@ user234461: IIRC, вам не нужны autotools для компиляции 'emacs', просто компилятор и make ... и, возможно, некоторые обязательные библиотеки. – salva

1

Я использую sshfs для установки удаленных файловых систем и редактирования файлов на них с помощью Emacs. Он работает довольно надежно.

Другой хорошей альтернативой является клон Emacs mg, так как он меньше и проще, скомпилировать его в статический исполняемый файл должно быть проще. Даже если ему не хватает большинства функций в реальном Emacs, вы все равно будете чувствовать себя как дома.

 Смежные вопросы

  • Нет связанных вопросов^_^