nvcc não encontrado, mas somente ao usar o sudo

2

Não consigo fazer nada no linux. Eu estou tentando compilar o CudaMiner . Saída 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

Então, é interessante. Saída de nvcc :

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

Considerando a saída de sudo nvcc :

sudo: nvcc: command not found

Eu tenho exportações idênticas listadas em ~/.bashrc AND /etc/bash.bashrc . (Nvcc está localizado em: /usr/local/cuda-5.0/bin/nvcc )

Eu também tentei alterar o caminho atual, sem sucesso:

$ 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

Obrigado antecipadamente!

    
por dsp_099 02.03.2014 / 06:58

3 respostas

3

Portanto, aparentemente, nvcc não está no PATH quando você o executa com sudo . Você pode confirmar isso com:

sudo bash -c 'echo $PATH'

A solução mais fácil é chamar sudo com o caminho absoluto de nvcc :

sudo $(which nvcc)

Ao executar comandos sem caminho absoluto como nvcc , sudo usa o valor da configuração secure_path em /etc/sudoers como PATH , por exemplo, em meu sistema:

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

Portanto, mesmo que você defina PATH em um dos arquivos de inicialização que o shell normalmente origina, não funcionará. Se você quiser que sudo nvcc funcione temporariamente, apenas para que sua construção funcione, acho que você tem duas opções:

  • Edite o script do instalador e altere as linhas com sudo nvcc para sudo /path/to/nvcc
  • Crie um link simbólico para nvcc em um dos diretórios listados em secure_path , desta forma: sudo ln -s /path/to/nvcc /sbin/nvcc

UPDATE

Se você tiver dificuldade em encontrar o caminho de nvcc , você pode tentar esses comandos, nesta ordem (eles ficam mais lentos e mais lentos), até encontrar uma correspondência:

which nvcc
find /usr/local/cuda-5.0 -name nvcc
find /usr/local/ -name nvcc
find /opt -name nvcc
find / -name nvcc
    
por janos 02.03.2014 / 07:05
0

Você pode usar a opção -E de sudo para preservar seu ambiente de usuário. Na página do manual:

 -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.

Você pode testar isso com:

$ sudo bash -c 'echo $PATH'

e depois

sudo nvcc
    
por Jonathan 05.08.2015 / 14:48
-1

A causa pode ser uma pasta somente leitura. No meu caso, o arquivo 'Make' que chama o nvcc estava em uma pasta somente leitura. Alterar as configurações de permissão de pasta resolveu meu problema.

    
por umitarabul 11.04.2016 / 16:08