아카이브에서 추출된 프로그램을 실행할 수 없는 이유는 무엇입니까?

아카이브에서 추출된 프로그램을 실행할 수 없는 이유는 무엇입니까?

세이지 파일을 다운로드 받은 후,파이어폭스와 썬더버드해당 쉘 스크립트를 클릭하거나 Trisquel 6.0의 해당 웹 사이트에서 프로그램을 실행하는 명령을 실행해도 해당 쉘 스크립트가 열리지 않습니다. 파일의 권한을 확인하면 실제로 실행 가능합니다.

편집하다: Firefox와 Thunderbird가 이제 이상하게 작동하기 시작했지만 Sage는 여전히 작동할 수 없습니다. 첫 번째 링크에서 다운로드 후이 페이지, 내 데스크톱에 압축을 풀고(Firefox 및 Thunderbird는 잘 작동함) 터미널에서 폴더를 열고 "sage" 명령을 실행했습니다(폴더에 동일한 이름을 가진 실행 파일이 있기 때문에). 오류가 발생했습니다 bash: sage: command not found. 그러나 ls -l 이러한 파일이 존재하고 실행 가능한 것으로 알려져 있음을 나타냅니다.

편집 #2: 저는 Firefox와 Thunderbird만 작동할 것이라고 생각합니다. 실제로 제가 설치한 버전을 실행하고 있습니다. Firefox 및/또는 Thunderbird를 실행할 때 ./[executable]오류가 발생합니다.libxul.so: cannot open shared object file: No such file or directory Couldn't load XPCOM.

답변1

아카이브에서 프로그램을 추출한 후 가장 먼저 확인하는 것이 권한( chmod a+x ./sage)인데, 그게 문제라면 "명령어를 찾을 수 없습니다."가 아닌 "권한이 거부되었습니다."라는 오류 메시지가 나타납니다.

"터미널에서 폴더를 열고 명령을 실행하십시오"라는 설명을 고려할 때, 실행 중인 명령은 sage이 이름을 가진 프로그램이 현재 디렉터리에서 실행될 것으로 예상할 가능성이 높습니다. 이는 Unix가 작동하는 방식이 아닙니다. 쉘은 나열된 디렉토리에서만 프로그램을 찾습니다.PATH환경 변수. 현재 디렉터리를 먼저 암시적으로 검색하지 않습니다. 현재 디렉터리에서 프로그램을 실행하려면 해당 경로를 입력해야 합니다.

./sage

경로를 지정하지 않고 프로그램을 실행하려면 해당 프로그램을 디렉터리 $PATH(일반적 /usr/local/bin으로 또는 ~/bin)에 설치해야 합니다. 실행 파일을 응용 프로그램의 다른 파일과 함께 유지하고심볼릭 링크다음 디렉토리로 $PATH:

ln -s /path/to/sage-5.9/sage ~/bin/

또는 바이너리가 포함된 디렉터리에 이미 있는 경우 sage:

ln -s $PWD/sage ~/bin/

방금 PATH의 디렉토리에 프로그램을 추가했는데 쉘에서 여전히 명령을 찾을 수 없다고 불평하는 경우, 이전에 프로그램을 시도했고 쉘이 캐시에 "찾을 수 없음" 정보를 보관했기 때문일 수 있습니다. 실행 hash -r하여 캐시를 다시 빌드하고 다시 시도하세요. 셸 실행 사이에 캐시가 저장되지 않으므로 다음에 셸을 시작할 때 더 이상 문제가 되지 않습니다.

지정된 경로를 사용하여 기존 파일을 실행했는데 "명령을 찾을 수 없음" 오류 메시지가 표시되면 다음과 같은 이유일 수 있습니다.올바른 로더가 없습니다.. CPU 및 커널 지원을 위해 바이너리를 다운로드했지만 필수 사용자 모드 지원(라이브러리 없음)이 없는 경우 이런 일이 발생할 수 있습니다. 프로그램이 스크립트이고 그 프로그램이셰르본 라인시스템에 존재하지 않는 인터프리터를 나타냅니다(이 경우 일반적인 쉘은 "명령을 찾을 수 없습니다" 대신 "잘못된 인터프리터" 메시지를 표시하지만).

답변2

실행 파일의 권한 비트를 확인하세요. 또한 실행 파일이 PATH.

관련 정보