2017-11-30 2 views
1

나는 나의 휴대용 퍼스널 컴퓨터에 간단한 ASDF 시스템이있다. 나는 "M-X slime-load-system"을 할 수 있으며,로드됩니다. 패키지 중 하나에서 내 보낸 함수를 호출 할 수 있습니다. 로컬 소스 코드에 정의 된 ASDF 시스템을 원격 lisp에로드하는 방법은 무엇입니까? 나는 SBCL, Slime and Swank를 사용한다.

내가 로컬 이맥스의 다른 인스턴스를 실행하고 점액이-연결과 원격 허풍에 연결하고 시스템을로드

, 내가 얻을 :

Component "<system-name>" not found 
    [Condition of type ASDF/FIND-SYSTEM:MISSING-COMPONENT] 

Restarts: 
0: [RETRY] Retry ASDF operation. 
1: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration. 
2: [ABORT] Abort compilation. 
3: [*ABORT] Return to SLIME's top level. 
4: [ABORT] abort thread (#<THREAD "repl-thread" RUNNING {100346E7C3}>) 

Backtrace: 
    0: ((:METHOD ASDF/OPERATE:OPERATE (SYMBOL T)) ASDF/LISP-ACTION:LOAD-OP "<system-name>") [fast-method] 
... 
and more 

이 무엇을 달성하려고하는로드 할 수있는 기능입니다 리모트 리스프로의 시스템, 코드의 로컬 편집, 리모트 리스프에서의 컴파일/로딩.

소스 코드를 ~/common-lisp /와 원격 시스템간에 rsync하면 slime-load-system이 작동합니다. 괜찮아요.하지만이 추가 단계는 옳은 생각이 아닙니다.

rsyncing없이 어떻게 작동합니까?

+0

하나의 옵션은 네트워크 파일 시스템 (sshfs, nfs)을 갖는 것입니다. – coredump

+0

그래서 문제를 이해하려고합니다. 'sbcl @ remote'라고 말하면서'localhost : ~/common-lisp/foo /'라는 시스템을 가지고 있습니다. foo.asd'. 당신은'sbcl @ remote'에서 실행중인 swank를 설정하고 localhost에서 연결합니다. 그리고 당신이 원하는 것은 당신의 로컬 이맥스로 가서 당신의 로컬 컴퓨터의 시스템으로 가서 이맥스에게 스왑을 사용하여 원격 시스템에 로컬 시스템을로드하도록 지시하는 것입니다. –

+0

@DanRobertson 예. – peroksid

답변

3

Asdf는 경로 이름에서 작동하므로 로컬 시스템의 파일을 참조하는 원격 시스템에서 경로 이름을 만들 수 없으면 해당 시스템을로드 할 수 없습니다. 나는 당신이 그런 경로 이름을 만들 수있게 해주는 어떤 Lisp도 모른다. 그래서 다른 것을 설정해야 할 필요가 있다고 생각한다. 내 추천은 sshfs 나 유사한 것을 사용하여 원격 시스템이 로컬 시스템의 파일에 투명하게 액세스 할 수있게하는 것입니다.

관련 문제