web-dev-qa-db-fra.com

nvcc introuvable, mais uniquement lors de l'utilisation de sudo

Je ne peux rien faire fonctionner sur Linux. Je suis essaye de compiler CudaMiner . Sortie de Sudo make:

ypt-jane.o `test -f 'scrypt-jane.cpp' || echo './'`scrypt-jane.cpp
mv -f .deps/cudaminer-scrypt-jane.Tpo .deps/cudaminer-scrypt-jane.Po
nvcc -g -O2 -Xptxas "-abi=no -v" -Arch=compute_10 --maxrregcount=64 --ptxas-options=-v -I./compat/jansson -o salsa_kernel.o -c salsa_kernel.cu
/bin/bash: nvcc: command not found
make[2]: *** [salsa_kernel.o] Error 127
make[2]: Leaving directory `/var/progs/CudaMiner'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/progs/CudaMiner'
make: *** [all] Error 2

Donc, assez intéressant. Sortie de nvcc:

nvcc fatal   : No input files specified; use option --help for more information

Alors que le résultat de Sudo nvcc:

Sudo: nvcc: command not found

J'ai des exportations identiques répertoriées dans ~/.bashrc AND /etc/bash.bashrc. (Nvcc se trouve dans: /usr/local/cuda-5.0/bin/nvcc)

J'ai aussi essayé de changer le chemin actuel, en vain:

$ Sudo bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ PATH=$PATH:/usr/local/cuda-5.0/bin/nvcc
$ Sudo bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Merci d'avance!

2
dsp_099

Donc, apparemment, nvcc n'est pas sur le PATH lorsque vous l'exécutez avec Sudo. Vous pouvez le confirmer avec:

Sudo bash -c 'echo $PATH'

La solution la plus simple consiste à appeler Sudo avec le chemin absolu de nvcc:

Sudo $(which nvcc)

Lorsque vous exécutez des commandes sans chemin absolu comme nvcc, Sudo utilise la valeur de la configuration secure_path dans /etc/sudoers comme PATH, par exemple dans mon système:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Ainsi, même si vous définissez PATH dans l'un des fichiers de démarrage normalement fournis par le shell, cela ne fonctionnera pas. Si vous voulez que Sudo nvcc fonctionne temporairement, juste pour que votre construction fonctionne, je pense que vous avez deux options:

  • Editez le script d'installation et changez les lignes avec Sudo nvcc en Sudo /path/to/nvcc
  • Créez un lien symbolique vers nvcc dans l'un des répertoires répertoriés dans secure_path, comme ceci: Sudo ln -s /path/to/nvcc /sbin/nvcc

UPDATE

Si vous avez du mal à trouver le chemin de nvcc, vous pouvez essayer ces commandes, dans cet ordre (elles ralentissent), jusqu'à ce que vous trouviez une correspondance:

which nvcc
find /usr/local/cuda-5.0 -name nvcc
find /usr/local/ -name nvcc
find /opt -name nvcc
find / -name nvcc
4
janos

Vous pouvez utiliser l’option -E de Sudo pour préserver votre environnement utilisateur. De la page de manuel:

 -E, --preserve-env
             Indicates to the security policy that the user wishesto preserve their existing environment
             variables.  The security policy may return an error if the user does not have permission to
             preserve the environment.

Vous pouvez tester cela avec:

$ Sudo bash -c 'echo $PATH'

puis

Sudo nvcc
0
Jonathan