当我在 Mac OSX 上使用 Nix 将带有英语 Aspell 字典的 Aspell 包安装到我的全局环境中时:
$ nix-env -iA nixpkgs.aspell nixpkgs.aspellDicts.en
Run Code Online (Sandbox Code Playgroud)
然后 Aspell 的行为正如我所期望的:
$ aspell dump dicts
en
en-variant_0
...
Run Code Online (Sandbox Code Playgroud)
但是,如果我将软件包安装到 nix-shell 中,则词典似乎未正确安装:
$ nix-shell -p aspell aspellDicts.en --pure
$ aspell dump dicts
# nothing printed
$ echo 'word lister to check' | aspell --list
Error: No word lists can be found for the language "en_US".
Run Code Online (Sandbox Code Playgroud)
以下每个变体都会产生相同的问题行为:
nix-shell。谁能建议如何让它发挥作用?
该aspell二进制文件由 NixPkgs 包装,通过以下方式提供安装路径ASPELL_CONF(如果尚未指定)。(欲了解详情,cat -v result/bin/aspell)
您可以ASPELL_CONF手动指定,也可以使用NIX_PROFILES环境变量。例如:
$ nix-build -E 'with import <nixpkgs> {};
buildEnv { name = "aspell-env"; paths = [aspell aspellDicts.en]; }'
$ NIX_PROFILES=./result ./result/bin/aspell dump dicts
en
en-variant_0
[...]
en_US-wo_accents
Run Code Online (Sandbox Code Playgroud)
aspell但是,如果您想使用字典构建独立的安装,您可以使用aspellWithDicts:
nix-build -E 'with import <nixpkgs> {}; aspellWithDicts (d: [d.en])'
Run Code Online (Sandbox Code Playgroud)
这将对 进行硬编码ASPELL_CONF,因此您无需再次考虑这些环境变量。
| 归档时间: |
|
| 查看次数: |
1345 次 |
| 最近记录: |