2012-05-10 23 views
2

我使用quicklisp作爲SBCL的包管理工具。如何使用QuickLisp將安裝包用於SBCL的系統目錄?

不過,有時我發現它不是很方便的通過ql:quickload一個包安裝到當前用戶的主目錄。 (例如,如果我使用(ql:quickload "xmls")來安裝xmls,其他用戶將無法使用它。)

更糟的是,我想將lisp代碼作爲腳本運行。所以,當我用quicklisp安裝的軟件包,我需要補充的是包的絕對路徑不舒服,如:

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

如果我使用(require 'xmls),編譯器將無法工作,因爲如果我不能找到包使用--script選項。

有誰知道如何解決這個問題,這樣我可以使用--scriptrequire在同一時間?

+3

我建議看看'保存lisp和死亡';只需構建一個包含腳本所需的所有軟件包的新內核,然後在啓動sbcl時使用該內核;那麼就不需要在頂部的B/C上它已經加載到核心中了。我把這個作爲一個評論,B/C它並沒有真正回答標題中的問題。但這是我在編寫lisp腳本時使用的另一種方法;哦,並嘗試#!/ usr/bin/env sbcl --script;這是更便攜的 –

回答

4

我不知道一個很好的解決這個問題的(無需加絕對路徑)。我使用的解決方案是不使用Common Lisp編寫腳本;我通常編寫從CL會話交互使用的應用程序。當我需要在命令行運行的東西,我用buildapp它,並使用ql:write-asdf-manifest-file創建一個文件傳遞給--manifest-file的BUILDAPP。

有時我希望能有一個更好的解決方案,但它可能會採取由某人一些工作(希望不是我)。

0

我只是做sudo sbcl這樣它就會被安裝在我的電腦上的每一個用戶 - 沒關係,因爲這是我的家用電腦,所以沒有危險。

我能想到的一件事可能就是將ql安裝的目錄安裝到更容易訪問的目錄中,例如$ HOME/packages - > .../quicklisp/software或其他東西?

相關問題