2012-05-10 6 views
2

私はSBCLのパッケージ管理ツールとしてquicklispを使用しています。QuickLispでSBCLのシステムディレクトリにインストールパッケージを使用するには?

しかし、現在のユーザーのホームディレクトリにパッケージをインストールすることは、ql:quickloadであまり便利ではないことがあります。たとえば、xmlsのインストールに(ql:quickload "xmls")を使用すると、他のユーザーは使用できません。

さらに悪いことに、スクリプトとしてlispコードを実行したいと思います。私ならば、それはそのパッケージを見つけることができないので、私は(require 'xmls)を使用する場合、コンパイラは動作しません

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

:私はquicklispによってインストールされたパッケージを使用するときに、私のような、不快にそのパッケージの絶対パスを追加する必要があります--scriptオプションを使用してください。

は、誰もが、私は同時に--scriptrequire(絶対パスを追加する必要はありません)を使用することができるように問題を解決する方法を知っている?

+3

私は 'save-lisp-and-die'を見ることをお勧めします。スクリプティングに必要なすべてのパッケージで新しいコアを構築し、sbclを起動するときにそのコアを使用するだけです。コアの中にすでにロードされているトップb/cの所要量は必要ありません。私はこれをコメントとして書いていますが、タイトルの質問には本当に答えません。しかし、それは私がlispスクリプトを書くときに使った別のアプローチです。ああ、試してみて!/ usr/bin/env sbcl --script;それはもう少し移植性があります –

答えて

4

私はこの問題に良い解決策を知らないい。私が使用する解決策はCommon Lispでスクリプトを書かないことです。私は通常、CLセッションから対話的に使用するアプリケーションを作成します。コマンドラインから実行する場合は、buildappを使用し、ql:write-asdf-manifest-fileを使用して、buildappに--manifest-fileに渡すファイルを作成します。

時には、より良い解決策がありたいと思っていますが、おそらく誰かが仕事を取ることになります(できれば私ではない)。

0

私はちょうどsudo sbclを実行します。これは私のPC上のすべてのユーザーにインストールされます - それは私の家庭用PCであるので問題ありません。危険はありません。

私は、$ HOME/packages - > .../quicklisp/softwareまたは何かのように、qlが何かに簡単にアクセスできるディレクトリをシンボリックリンクしていると思いますか?

関連する問題