2017-03-13 2 views
2

Actuellement en utilisant la version d'Elixir fourni par le canal nix sous Mac OS X. Le paquet a été construit avec Erlang 18:Mise à jour des dépendances dans un paquet nix

$ iex --version 
Erlang/OTP 18 [erts-7.3.1.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] 

IEx 1.4.2 

Je souhaite mettre à jour le package utilisez Erlang 19. Quel est le moyen le plus simple de reconstruire un paquet dans nix avec des dépendances mises à jour?

+0

désinstaller et réinstaller Erlang une fois de plus. J'ai peur qu'il n'y ait pas de raccourci pour ça maintenant. Erlang n'est pas une dépendance de mélange, mais c'est une couche sur laquelle vous avez construit. – PatNowak

+0

En effet, vous devez mettre à jour le Erlang, si vous utilisez le brassage, 'brassage mise à jour && brassage mise à niveau erlang & & brew nettoyage erlang' – jbernardo

+4

Je crois que cette question a été posée sur le [gestionnaire de paquets nix] (https://nixos.org /rien/). Rien à voir avec le mélange. –

Répondre

3

j'ai pu arriver à une solution en ajoutant le paquet suivante remplace à ~/.nixpkgs/config.nix:

{ 
    packageOverrides = pkgs: rec { 
    elixir = pkgs.elixir.override { 
     erlang = pkgs.erlangR19_odbc_javac; 
    }; 
    rebar = pkgs.rebar.override { 
     erlang = pkgs.erlangR19_odbc_javac; 
    }; 
    }; 
} 

Outrepasser le paquet élixir ne suffisait pas pour obtenir l'accumulation de travail, de la barre d'armature outil de construction a également été construit en utilisant Erlang 18. Une fois que cela a été spécifié, je courais nix-env -i elixir et la source pour les deux paquets a été téléchargé et construit en utilisant Erlang 19.

Une mise en garde: même avec ces changements au config.nix nix ont insisté sur le téléchargement du paquet Erlang 18. Toutefois, cela n'a pas été réellement utilisé dans la construction et a été supprimé lors de l'exécution nix-collect-garbage -d. Ni les barres d'armature ni les dérivés d'élixir n'ont référencé le paquet donc la cause reste un mystère.

Merci à @ zimm-i48 pour la référence à la documentation nix appropriée. Aussi utile est la série de Luca Bruno de messages blog sur nix:

http://lethalman.blogspot.it/2014/07/nix-pill-7-working-derivation.html

0

Vous pouvez envisager d'utiliser un gestionnaire de version d'outil pour cela. Par exemple, asdf prend en charge Erlang et Elixir via des plugins. Il vous permet de spécifier facilement une version par projet pour les deux ainsi que de gérer leur installation.