2017-06-08 3 views
1

J'essaie d'apprendre à écrire des expressions Nix, et j'ai pensé à faire mon propre "Hello World!" (comme c'est la tradition).nix-build: autorisation bash refusée

J'ai donc mon répertoire avec seulement ce fichier default.nix:

{pkgs ? import <nixpkgs> {}}: 
derivation { 
    system = "x86_64-linux"; 
    name = "simple-bash-derivation-helloworld"; 
    builder = pkgs.bash; 
    args = [ "-c" "echo 'Hello World' > $out" ]; 
} 

Voici ce que je reçois lorsque je tente de le construire:

nix-build 
these derivations will be built: 
    /nix/store/3grmahx3ih4c50asj84p7xnpqpj32n5s-simple-bash-derivation-helloworld.drv 
building path(s) ‘/nix/store/6psl3rc92311w37c1n6nj0a6jac16hv1-simple-bash-derivation-helloworld’ 
while setting up the build environment: executing ‘/nix/store/wb34dgkpmnssjkq7yj4qbjqxpnapq0lw-bash-4.4-p12’: Permission denied 
builder for ‘/nix/store/3grmahx3ih4c50asj84p7xnpqpj32n5s-simple-bash-derivation-helloworld.drv’ failed with exit code 1 
error: build of ‘/nix/store/3grmahx3ih4c50asj84p7xnpqpj32n5s-simple-bash-derivation-helloworld.drv’ failed 

Suppression des rendements ligne args la même question.

Pourquoi ai-je un problème d'autorisation? Quelle serait la bonne façon de faire une dérivation simple en faisant simplement un écho de bash?

Veuillez noter qu'il s'agit d'un exercice d'apprentissage: je ne veux pas utiliser ici stdenv.mkDerivation par exemple. Je cours nix-env (Nix) 1.11.9 sur un système Ubuntu 16.04.

Merci d'avance.

Répondre

2

Essayez d'exécuter la commande ls sur /nix/store/wb34dgkpmnssjkq7yj4qbjqxpnapq0lw-bash-4.4-p12 et vous verrez qu'il est un répertoire plutôt que d'un fichier exécutable (pointant vers $out de la dérivation pkgs.bash). Si vous voulez faire référence à bash binaire vous utiliserez:

builder = "${pkgs.bash}/bin/bash";                                           
+0

En effet, merci beaucoup! Y a-t-il quelque part où ce genre de choses est documenté? Je souhaite qu'il y avait un IDE nix avec une sorte d'auto-complétion. – HectorJ

+0

http://nixos.org/nix/manual/ –

+0

@DavidGrayson Le manuel ne détaille pas le contenu des paquets – HectorJ