最近我开始学习Clojure。我一直在使用Emacs和苹果酒(REPL)。另外,我有NixOS作为操作系统。
我已经能够使用这个环境在Clojure中成功地编程。通常,我先创建文件,然后转到.clj
所在的目录,执行cider-jack-in
,创建一个REPL,然后交互编程奇迹就发生了。这样,我就可以加载文件,加载旧函数的新版本,等等。
如果我只是启动Emacs并执行' cider-jack-in,它也可以工作。迷你缓冲区请求:
您确定要在没有Clojure项目的情况下运行' apple -jack-in'吗?(y or n)
回答y
后,一切正常
在阅读Clojure for the Brave and True这本书时,我也成功地使用了:
$ lein run
为了学习的目的,我决定探索一些开源项目。因此,我对这个开源项目做了一个git clone
。
在文件夹上,我决定复制到目前为止已经工作的步骤。但是,不工作。在执行cider-jack-in
之后,迷你缓冲区回显以下内容:
The clojure executable isn’t on your ‘exec-path
同样,如果我尝试使用lein
,我得到:
[pedro@system:~/projects/http-cron]$ lein run
No :main namespace specified in project.clj.
奥林匹克广播服务公司。如果我在shell中输入clojure
,我得到的是:
[pedro@system:~]$ clojure
The program 'clojure' is not in your PATH. You can make it available in an
ephemeral shell by typing:
nix-shell -p clojure
为什么会发生这种情况?
如何解决这个问题(考虑到我正在使用NixOS)?
根据您使用的是带有通道(默认)还是带有片的NixOS,您可以使用以下命令将clojure
永久安装到您的环境中:
- 通道:
nix-env -f '<nixpkgs>' -iA clojure
- flakes:
nix profile install nixpkgs#clojure
首选的(声明式)方式是将clojure
添加到/etc/nixos/configuration.nix
中的environment.systemPackages
,并运行sudo nixos-rebuild switch
。