Куда делись пакеты haskell в nixpkgs?

Однажды я использовал nix-env -qaP <haskell-package-name> для поиска пакета haskell. Но поскольку некоторое время назад я обновил свой канал nix, все пакеты haskell исчезли.

Чтобы быть конкретным: qs @ BF: ~ $ nix-channel --list nixpkgs https://nixos.org/channels/nixpkgs-unstable

qs @ BF: ~ $ nix-env --version nix-env (Nix) 1.9

qs @ BF: ~ $ uname -a Linux BF 3.13.0-35-generic # 62-Ubuntu SMP Пт 15 августа 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux

Интересно, нужно ли мне добавить какие-то другие каналы, которые могут содержать пакеты haskell. Есть ли какое-то отношение к Haskell NG?

Спасибо.


person TorosFanny    schedule 12.07.2015    source источник


Ответы (2)


Я помню, что видел в списке рассылки (хотя сейчас я не могу найти точную ссылку) от Питера Саймонса, что поиск был отключен через nix-env для пакетов Haskell из пространства имен верхнего уровня, поскольку они очень большие, а nix-env уже был довольно медленно. Вместо этого все пакеты haskell находятся в отдельном пространстве имен с именем haskellPackages. Для получения дополнительной информации см. здесь. Чтобы установить пакет Haskell, например text, вы можете использовать эту команду:

nix-env -i -A nixpkgs.haskellPackages.text

Чтобы найти имя пакета, используйте эту команду:

nix-env -f "<nixpkgs>" -qaP -A haskellPackages | grep text
person Sibi    schedule 12.07.2015

Цитирование из http://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure:

Nixpkgs распространяет инструкции по сборке для всех пакетов Haskell, зарегистрированных на Hackage, но, как ни странно, обычные поиски пакетов Nix, похоже, не обнаружите любой из них, кроме стандартной версии ghc, cabal-install и stack:

$ nix-env -i alex
error: selector ‘alex’ matches no derivations
$ nix-env -qa ghc
ghc-7.10.2

Набор пакетов Haskell не зарегистрирован в пространстве имен верхнего уровня, потому что он огромен. Если бы все пакеты Haskell были видны этим командам, то операции поиска / установки по имени были бы намного медленнее, чем сейчас. Мы избежали этого, сохранив все связанные с Haskell пакеты в отдельном наборе атрибутов с именем haskellPackages, который будет перечислен следующей командой:

$ nix-env -f "<nixpkgs>" -qaP -A haskellPackages
haskellPackages.a50         a50-0.5
haskellPackages.abacate     haskell-abacate-0.0.0.0
haskellPackages.abcBridge   haskell-abcBridge-0.12
haskellPackages.afv         afv-0.1.1
haskellPackages.alex        alex-3.1.4
haskellPackages.Allure      Allure-0.4.101.1
haskellPackages.alms        alms-0.6.7
[... some 8000 entries omitted  ...]

Чтобы установить любой из этих пакетов в свой профиль, обратитесь к ним по пути их атрибутов (первый столбец):

$ nix-env -f "<nixpkgs>" -iA haskellPackages.Allure ...

Путь к атрибуту любых пакетов Haskell соответствует имени этого конкретного пакета в Hackage: пакет cabal-install имеет атрибут haskellPackages.cabal-install и так далее.

person Peter Simons    schedule 19.11.2015