'which qmake'는 값을 반환하지만 'sudo which qmake'는 값을 반환하지 않습니다.

'which qmake'는 값을 반환하지만 'sudo which qmake'는 값을 반환하지 않습니다.

그래서 /opt 폴더에 gnuradio 프로그램을 설치하려고 합니다. 설치하려면 sudo로 명령을 실행해야 합니다. 설치할 때 다음 오류가 발생합니다./bin/sh: qmake: command not found

내가 입력하면 which qmake다음과 같은 결과가 나타납니다./usr/lib64/qt4/bin/qmake

그러나 실행하면 다음과 같은 sudo which qmake결과를 얻습니다.which: no qmake in (/sbin:/bin:/usr/sbin:/usr/bin)

다양한 수정 사항을 살펴봤지만 제가 겪고 있는 동일한 문제를 해결하지 못하는 것 같습니다. 내 문제에 대해 찾을 수 있는 가장 가까운 가이드는 다음과 같습니다.여기.

참고로 저는 RHEL7을 사용하고 있습니다.

답변1

이는 sudo가 sudo에 의해 secure_path정의 /etc/sudoers되거나 $PATH설정된 범위 내에서만 실행되기 때문입니다. 예를 들어, 내 시스템에서는

$ sudo env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

$ sudo cat /etc/sudoers | grep secure_path
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

따라서 몇 가지 해결 방법이 있습니다.

  1. /usr/lib64/qt4/bin/qmake다음과 같이 IE 중 하나에 대한 링크를 생성하십시오 secure_path.

    sudo ln -s /usr/lib64/qt4/bin/qmake /usr/bin/qmake
    
  2. 또는 /usr/lib64/qt4/bin다음을 추가하세요 /etc/sudoers.

    Defaults    secure_path="sbin:/bin:/usr/sbin:/usr/bin:/usr/lib64/qt4/bin"
    

    위 줄에서 다른 텍스트는 변경하지 않고 그대로 두고 /usr/lib64/qt4/bin예제와 같이 끝에 경로만 추가합니다.

답변2

분명한 이유로, 해당 명령을 실행하는 권한 있는 쉘은 귀하의 PATH권한을 상속하지 않습니다 . 예를 들어 에 대한 전체 경로를 sudo제공 하거나 자체 설정 및 를 사용하여 호출하는 스크립트 에 호출을 넣어 이를 완화 할 수 있습니다 .qmakesudo $(which qmake)qmakePATHsudo /path/to/my/qmake-script.sh

관련 정보