web-dev-qa-db-ja.com

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 AND /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
dsp_099

明らかに、nvccで実行すると、PATHSudoにありません。これは次の方法で確認できます。

Sudo bash -c 'echo $PATH'

最も簡単な解決策は、Sudoの絶対パスでnvccを呼び出すことです。

Sudo $(which nvcc)

nvccのような絶対パスなしでコマンドを実行する場合、Sudosecure_path/etc/sudoers構成の値をPATHとして使用します。たとえば、私のシステムでは:

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

そのため、シェルが通常ソースするスタートアップファイルの1つにPATHを設定しても、機能しません。ビルドを機能させるために、Sudo nvccを一時的に機能させたい場合は、2つのオプションがあると思います。

  • インストーラースクリプトを編集し、Sudo nvccの行をSudo /path/to/nvccに変更します
  • 次のように、secure_pathにリストされているディレクトリの1つにnvccへのシンボリックリンクを作成します:Sudo ln -s /path/to/nvcc /sbin/nvcc

UPDATE

nvccのパスを見つけるのに苦労している場合は、一致するまでこれらのコマンドをこの順序で(ゆっくりと遅くなるように)試すことができます。

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

Sudo-Eオプションを使用して、ユーザー環境を維持できます。 manページから:

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