LINUX.ORG.RU

[Emacs][LISP][Gentoo]Нет пакета ASDF. Как поставить?


0

1

Запускаю Emacs, набираю M-x slime, в результате чего вижу выхлоп:

;; Loading file /usr/share/emacs/site-lisp/slime/swank-loader.lisp ...
*** - READ from
       #<INPUT BUFFERED FILE-STREAM CHARACTER
         #P"/usr/share/emacs/site-lisp/slime/swank-loader.lisp" @4>
      : there is no package with name "ASDF"
The following restarts are available:
ABORT          :R1      Abort main loop
REPL нормально не работает. Пакет asdf (lisp overlay) или cl-asdf стоит, но как-то не так как Emacs его ищёт. Как это исправить?

★★★★★

Ответ на: комментарий от Zubok

Не уверен.

А ты уверен, что запускаемое ядро уже содержит пакет ASDF? Проверял?

Не уверен, не проверял. Как это сделать?

Camel ★★★★★ ()
Ответ на: комментарий от Zubok

NIL

Набрать (find-package :asdf). Если будет nil, то пакета в ядре нет.

Перешёл в *scratch*, набрал (find-package :asdf), потом C-x C-e, открылся буфер *Backtrace* с таким вот текстом:

Debugger entered--Lisp error: (void-function find-package)
  (find-package :asdf)
  eval((find-package :asdf))
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp nil nil)
M-x slime, ввожу там (find-package :asdf), получаю NIL.

Я так понимаю это плохо, в данном случае.

Camel ★★★★★ ()
Ответ на: NIL от Camel

>Перешёл в *scratch*, набрал (find-package :asdf), потом C-x C-e, открылся буфер *Backtrace* с таким вот текстом:

Хех, это в REPL Lisp'а надо набирать, а не в Emacs. :)

Запускаешь свой Lisp из терминала и в нем пишешь (find-package :asdf)

Zubok ★★★★★ ()
Ответ на: NIL от Camel

>M-x slime, ввожу там (find-package :asdf), получаю NIL.

А вот это ты уже в REPL Lisp'а вводишь, если через slime. Вот это как раз говорит о том, что пакета asdf в образе ядра нет.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

Ядра, много их.

А вот это ты уже в REPL Lisp'а вводишь, если через slime. Вот это как раз говорит о том, что пакета asdf в образе ядра нет.

Ага, я как раз поинтересоваться хотел, asdf относится к Emacs'у или CLISP'у, теперь понятно. А вот как собрать CLISP с ASDF непонятно.

# emerge -pv asdf clisp

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] dev-lisp/clisp-2.49-r2  USE="X berkdb dbus gdbm gtk pcre readline unicode zlib -fastcgi -hyperspec -pari -postgres (-svm) -threads" 0 kB [1]
[ebuild   R   ] dev-lisp/asdf-1.123  0 kB [1]

Total: 2 packages (2 reinstalls), Size of downloads: 0 kB
Portage tree and overlays:
 [0] /usr/portage
 [1] /var/lib/layman/lisp
Camel ★★★★★ ()
Ответ на: Ядра, много их. от Camel

В домашнем каталоге делаешь файлик .clisprc и пишешь в него:

(load #p"/usr/share/common-lisp/source/asdf/asdf.lisp") ;; ну или где оно лежит
(push #p"/usr/share/common-lisp/systems/" asdf:*central-registry*) ;; репозиторий пакетов asdf

Еще я использую:

(push (truename #p"~/src/lisp/systems/") asdf:*central-registry*) ;; чтобы asdf видела мои проекты

(defmacro load-asdf (s) `(asdf:oos 'asdf:load-op ,s)) ;; используем (load-asdf :пакет)

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

CL-USER>

load #p"/usr/share/common-lisp/source/asdf/asdf.lisp") ;; ну или где оно лежит
(push #p"/usr/share/common-lisp/systems/" asdf:*central-registry*) ;; репозиторий пакетов asdf

Первую строчку я находил в интернетах, а вот вторую вижу впервые. После запуска Emacs'а пожаловалось на нехватку прав для записи чего-то со SWANK'ом, разок запустил Emacs от root'а, теперь всё круто. M-x slime при запуске показывает какую-то анимашку (символы стекаются к левому верхнему углу где появляется приглашение CL-USER>), всё работает.

Большое спасибо no-such-file, большое спасибо Zubok.

Camel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.