Ошибка запуска scmutils механикой M-x в emacs

Я установил scmutils (для книги SICM) из tar-шара под /usr/local.

Затем я поместил это в свой .emacs:

(defun mechanics ()
  (interactive)
  (run-scheme
    "/usr/local/scmutils/mit-scheme/bin/scheme --library /usr/local/scmutils/mit-scheme/lib"
  ))

это в основном инструкция с сайта http://redsymbol.net/articles/using-gnu-emacs-with-scmutils/.

Но я получаю сообщение об ошибке:

/usr/local/scmutils/mit-scheme/bin/scheme: 1: /usr/local/scmutils/mit-scheme/bin/scheme: 
Syntax error: "(" unexpected

Process scheme exited abnormally with code 2

Я также попытался запустить /usr/local/bin/mechanics, который представляет собой сценарий оболочки, который в конечном итоге запускается:

$ /usr/local/scmutils/mit-scheme/bin$ /usr/local/scmutils/mit-scheme/bin/scheme --library /usr/local/scmutils/mit-scheme/lib --heap 12000 --band edwin-mechanics.com --edit

$ bash: /usr/local/scmutils/mit-scheme/bin/scheme: cannot execute binary file

Я думаю, что есть некоторая несовместимость. Вот "файл mit-scheme-x86-64":

mit-scheme-x86-64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=0x88f52caf274bb8298a0f6b84fc34beb9d2094bc6, not stripped

а также

$ uname -r 

3.11.0-26-generic

Кто-нибудь может подсказать мне, как отлаживать это сейчас? Я запускаю Ubuntu в VMWare Fusion (Mac OS X).


person kawingkelvin    schedule 21.09.2014    source источник
comment
это для книги SICM?   -  person Will Ness    schedule 21.09.2014
comment
да, я перечитываю эту книгу спустя много лет.   -  person kawingkelvin    schedule 21.09.2014
comment
Я получил этот код, чтобы он отлично работал в Arch Linux, включая получение show-expression в версии scmutils оболочки emacs для всплывающего окна xdvi для отображения латексных выражений. Он также должен работать на Ubuntu; мне не нужно было делать ничего особенного, помимо того, что у вас есть. Я бы дважды проверил там defun (также разместил код здесь в форме блока, используя C-k. Сценарий механики открывает окно xterm с Edwin, который является значительно урезанной версией emacs, в которой отсутствуют многие функции. Я настоятельно рекомендую вместо этого использовать emacs Эдвин здесь.   -  person xdavidliu    schedule 18.03.2018
comment
обновление: графическое выражение xdvi show-expression из emacs также работает на macos. Вам просто нужно вручную установить переменную PATH внутри emacs, чтобы включить каталог, в котором находится xdvi. См. мой другой комментарий ниже.   -  person xdavidliu    schedule 11.07.2018


Ответы (2)


Прямой ответ на основной вопрос, вероятно, заключается в том, что VMWare не может распознать двоичный файл.

Для более общей проблемы запуска scmutils из Emacs, вот шаги для Debian и macOS:

Дебиан:

Сначала убедитесь, что у вас есть MIT-схема. Если нет, сделайте sudo apt install mit-scheme. Затем загрузите архив с официальной страницы scmutils. . Извлеките его и sudo ./install.sh. Кроме того, sudo cp mechanics.sh /usr/local/bin/mechanics, и теперь вы можете запустить scmutils из bash, выполнив либо mechanics (для запуска в терминале), либо mechanics -edit (для открытия Edwin). Вам также необходимо sudo apt install texlive, если вы еще этого не сделали. Затем подтвердите, что show-expression работает, выполнив mechanics -edit, чтобы открыть Edwin (если шрифт слишком мал, см. мой ответ на другой вопрос ), затем (show-expression '(sqrt (+ x y))), а затем M-z, и появится всплывающее окно с Latex.

Отлично, show-expression изначально работает на Edwin! Заставить его работать на emacs легко. Сначала откройте emacs, оцените (require 'xscheme) (похоже, это меняет значение команды run-scheme), затем выполните (run-scheme "/usr/local/bin/mechanics"), и вы увидите REPL scmutils в своем emac. На этом этапе оценка (up 1 2 3) должна работать, хотя обратите внимание, что в отличие от Эдвина, вам нужно C-x C-e для оценки, M-z здесь не сработает. Наконец, eval (show-expression '(sqrt (+ x y))), и все заработает.

Проверочный скриншот, который я сделал сразу после написания этого

macOS:

Эти инструкции взяты из комментариев в этой теме; Я написал их год назад и больше не использую macOS, поэтому не могу подтвердить их сейчас, но они должны работать.

Установите Xquartz и «emacs для macOS», а также BasicTex. Затем с помощью brew установите mit-scheme и gv. Наконец, установите scmutils из архива, как в части Debian выше. Убедитесь, что show-expression работает в Edwin, затем в emacs повторите шаги выше из раздела Debian, а также обязательно используйте setenv для добавления /Library/TeX/texbin в PATH. Тогда show-expression должен работать из emacs.

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

person xdavidliu    schedule 23.12.2019

Я думаю, что проблема может быть в VMWare Fusion. Я успешно запустил это на Mac OS X и родной Ubuntu.

person kawingkelvin    schedule 25.09.2014
comment
Я успешно запустил это на Mac OS X, а также на Arch Linux. Однако в Mac OS X я не мог выполнить (show-expression '(+ x y)), который должен вызывать всплывающее окно xdvi. Это, вероятно, из-за ошибки в версии emacs с графическим интерфейсом, для которой переменные среды, необходимые для отображения окон xterm, не установлены. Однако для Arch Linux все работает отлично, даже в версии emacs с графическим интерфейсом. - person xdavidliu; 18.03.2018
comment
обновление: мне удалось заставить графическое выражение xdvi show-expression работать и на Mac OS. Что я сделал, так это установил xquartz, затем basictex, а также brew install gv. Затем в emacs необходимо использовать setenv, чтобы добавить /Library/TeX/texbin в PATH. Затем механика emacs знает, что нужно использовать xdvi при выполнении show-expression. - person xdavidliu; 11.07.2018