2012-05-10 7 views
2

저는 SBCL 용 패키지 관리 도구로 quicklisp을 사용하고 있습니다.QuickLisp에 의한 SBCL 시스템 디렉토리에 설치 패키지를 사용하는 방법은 무엇입니까?

그러나 때로는 현재 사용자의 홈 디렉토리에 패키지를 설치하는 것이 편리하지 않은 것으로 나타났습니다 (ql:quickload). 예를 들어 xml을 설치하기 위해 (ql:quickload "xmls")을 사용하면 다른 사용자는 사용할 수 없습니다.

더 나쁜 것은 lisp 코드를 스크립트로 실행하고 싶습니다. 내가 (require 'xmls) 사용하는 경우 나는 경우가 해당 패키지를 찾을 수 없기 때문에

#!/usr/bin/sbcl --script 
(require 'xmls "..../quicklisp/dists/quicklisp/software/xmls-1.4/xmls") 

는, 컴파일러가 작동하지 않습니다 : 나는 quicklisp 설치 패키지를 사용할 때, 나는 같은 불편이 패키지의 절대 경로를 추가해야 --script 옵션을 사용하십시오.

누군가가 내가 같은 시간? 나는이 문제에 대한 좋은 해결책을 알고하지 않습니다

+3

'save-lisp-and-die'를 살펴 보는 것이 좋습니다. 스크립팅에 필요한 모든 패키지가 포함 된 새 코어를 빌드 한 다음 sbcl을 시작할 때 해당 코어를 사용하십시오. 그러면 맨 위의 b/c에서 필수 항목이 필요하지 않습니다.이 항목은 모두 이미 코어에로드되어 있습니다. 저는 이것을 주석으로 넣고 있습니다, b/c 그것은 제목의 질문에 실제로 대답하지 않습니다. 그러나 lisp 스크립트를 작성할 때 사용한 또 다른 접근법입니다. 오! 그리고 #!/usr/bin/env sbcl을 시도해보십시오 - 스크립트; 그건 좀 더 휴대용이야. –

답변

4

에서 (절대 경로를 추가 할 필요가 없습니다) --scriptrequire을 사용할 수 있도록 문제를 해결하는 방법을 알고 있습니까. 내가 사용하는 해결책은 Common Lisp으로 스크립트를 작성하지 않는 것입니다. 보통 CL 세션에서 대화식으로 사용하는 응용 프로그램을 작성합니다. 명령 행에서 물건을 실행하고 싶다면 buildapp을 사용하고 ql:write-asdf-manifest-file을 사용하여 buildapp에 --manifest-file으로 전달할 파일을 작성하십시오.

때로는 더 나은 해결책이 있었으면 좋겠지 만, 누군가 (잘하면 나를 제외하고) 약간의 작업이 필요할 것입니다.

0

난 그냥 sudo sbcl하고 이렇게하면 내 PC에 모든 사용자를 위해 설치됩니다. 괜찮습니다. 내 가정용 PC이므로 아무런 위험이 없습니다.

내가 생각할 수있는 한가지는 ql이 $ HOME/packages -> .../quicklisp/software 또는 다른 것과 같이 액세스하기 쉬운 것을 설치하는 디렉토리를 symlink하는 것입니다.