Вопрос nvcc не найден, но только при использовании sudo


Я не могу заставить НИЧЕГО работать на Linux. я пытается скомпилировать CudaMiner, Вывод 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

Так что, интересно. Вывод nvcc:

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

В то время как sudo nvcc:

sudo: nvcc: command not found

У меня одинаковый экспорт, указанный в ~/.bashrc А ТАКЖЕ /etc/bash.bashrc, (Nvcc находится в: /usr/local/cuda-5.0/bin/nvcc)

Я также попытался изменить текущий путь, но безрезультатно:

$ 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

Заранее спасибо!


2
2018-03-02 05:58


происхождения




ответы:


По-видимому, nvcc не находится на PATH когда вы запускаете его с помощью sudo, Вы можете подтвердить это с помощью:

sudo bash -c 'echo $PATH'

Самое простое решение - позвонить sudo с абсолютным путем nvcc:

sudo $(which nvcc)

При запуске команд без абсолютного пути, например nvcc, sudo использует значение secure_path конфигурации в /etc/sudoers как PATH, например, в моей системе:

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

Поэтому, даже если вы установите PATH в одном из файлов запуска, которые обычно используются в оболочке, это не сработает. Если вы хотите сделать sudo nvcc работа временно, просто для того, чтобы ваша работа работала, я думаю, у вас есть два варианта:

  • Отредактируйте сценарий установщика и измените строки с помощью sudo nvcc в sudo /path/to/nvcc
  • Создайте символическую ссылку для nvcc в одном из каталогов, перечисленных в secure_path, как это: sudo ln -s /path/to/nvcc /sbin/nvcc

ОБНОВИТЬ

Если вам трудно найти путь nvcc, вы можете попробовать эти команды в этом порядке (они будут медленнее и медленнее), пока не найдете совпадение:

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

3
2018-03-02 06:05



Есть ли способ включить /usr/local/cuda-5.0/bin/ только для текущего сеанса в терминале, так что когда придет время и вызовет скрипт, он найдет его? Я не думаю, что мне когда-нибудь понадобится. - dsp_099
@ dsp_099 yup, см. мой обновленный ответ - janos
Я попытался использовать symlink с указанной командой, но это не сработало, однако редактирование скрипта установки отлично поработало. Возможно также включить ссылку на askubuntu.com/questions/231503/nvcc-compiler-setup-ubuntu-12-04 поэтому люди, которые являются noobs (например, я), могут позволить этому быть магазином с одним стопом - James Tobin
Спасибо @JamesTobin! Я рад добавить ссылки, которые улучшают ответ, но я не вижу добавленную стоимость в указанной вами ссылке. Вы можете объяснить? - janos
Для тех людей, которые не знают, как найти, где находится их nvcc. Его трудно добавить на путь, если вы не знаете, где это - James Tobin


Вы можете использовать -E вариант sudo для сохранения пользовательской среды. На странице руководства:

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

Вы можете проверить это с помощью:

$ sudo bash -c 'echo $PATH'

а потом

sudo nvcc

0
2017-08-05 12:48





Причиной может быть папка только для чтения. В моем случае файл «Make», который вызывает nvcc, находился в папке только для чтения. Изменение настроек разрешения папки решило мою проблему.


-1
2018-04-11 14:08