J'utilise quicklisp comme outil de gestion de paquets pour SBCL.Comment utiliser package d'installation dans le répertoire système pour SBCL par QuickLisp?
Cependant, parfois, j'ai trouvé qu'il n'est pas très pratique d'installer un paquet dans le répertoire HOME de l'utilisateur actuel par ql:quickload
. (Par exemple, si j'utilise pour installer xmls, les autres utilisateurs ne peuvent pas l'utiliser.)
Pire, je voudrais exécuter le code lisp en tant que script. Alors, quand j'utilise le paquet installé par quicklisp, je dois ajouter le chemin absolu de ce paquet inconfortablement, tels que:
#!/usr/bin/sbcl --script
(require 'xmls "..../quicklisp/dists/quicklisp/software/xmls-1.4/xmls")
Si je (require 'xmls)
, le compilateur ne fonctionnera pas parce qu'il ne peut pas trouver ce paquet si je utilisez les options --script
.
Est-ce que quelqu'un sait comment résoudre le problème afin que je puisse utiliser --script
et require
(pas besoin d'ajouter un chemin absolu) en même temps?
Je suggère de regarder 'save-lisp-and-die'; construisez simplement un nouveau noyau avec tous les paquets dont vous avez besoin pour le script, puis utilisez ce noyau lors du lancement de sbcl; alors il n'y a pas besoin de l'exigence en haut b/c tout est déjà chargé dans le noyau. Je le mets en commentaire, car il ne répond pas vraiment à la question dans le titre. Mais c'est une autre approche que j'ai utilisée pour écrire des scripts Lisp; oh, et essayez #!/usr/bin/env sbcl --script; c'est un peu plus portable –