/usr/local에 애플리케이션 설치

/usr/local에 애플리케이션 설치

일부 자동 설치 애플리케이션(예: Netbean, JDK)은 종종 /usr/local일반 사용자(루트 대신)에게 설치되어 실행됩니다.

하지만 다른 응용 프로그램에서는 tar.gz파일을 추출하고 실행하면 됩니다. 일반 사용자에서는 명령을 사용하여 한 디렉터리에서 다른 디렉터리로 복사할 수 없으며 cp루트 사용자(명령)를 사용해야 합니다.Download/usr/localsu

하지만 루트 사용자로 복사했기 때문에 이 디렉터리는 루트에 속해 있으므로 일반 사용자로는 실행할 수 없습니다. 이것은 나에게 두통을 준다. 위에 나열된 다른 앱처럼 일반 사용자로 어떻게 실행합니까? 아니면 다른 설치 방법이 있나요?

답변1

/usr/local그리고 그 하위 디렉터리( bin, libshare)는 루트가 소유해야 하며(아마도) 누구든지 그곳에서 작업을 실행할 수 있도록 755로 설정해야 합니다.

압축을 풀고 복사한 경우 개별 바이너리의 권한일 수 있으며 일반적인 사용을 허용하려면 이 권한도 755여야 합니다.

그것이 어떻게 $PATH작동하는지 기억하십시오. JDK 예제는 이와 관련하여 혼란스러울 수 있지만 실행 파일은 ./configure일반 tarball 에 , 라이브러리는 에 , 문서와 같은 기타 항목은 . 이는 적절한 경로이며 동일한 패턴을 따라야 합니다. 즉, bin/(예: 패키지의 단일 디렉터리)이나 하위 디렉터리의 아무 곳에나 콘텐츠를 배치하는 것만으로는 작동하지 않습니다.make install/usr/local/bin/usr/local/lib/usr/local/share/usr/local

답변2

발생할 수 있는 두 가지 잠재적인 문제가 있습니다.

첫 번째 질문 - 디렉토리의 실행 권한

/usr/local에 복사한 디렉터리 중 하나에 대한 권한이 올바르게 설정되지 않았을 수 있습니다. 루트가 아닌 사용자가 이 디렉터리에서 프로그램/스크립트를 실행할 수 있도록 디렉터리에 대한 권한이 있어야 합니다.

"다른" 사용자가 디렉터리 외부에서 응용 프로그램을 실행할 수 있도록 디렉터리에 대한 권한을 설정해야 할 수도 있습니다.

예를 들어

# don't have permissions on directory
root$ cd /usr/local
$ ls -ld somedir
drwxr-x--- 2 root root 4096 Apr 25 13:27 somedir

# have permissions on the script
root$ ls -l somedir/testscript.bash 
-rwxr-xr-x 1 root root 23 Apr 25 13:27 somedir/testscript.bash

이 경우 다른 사용자가 해당 스크립트에 대한 실행 권한을 가지고 스크립트를 읽고 실행할 수 있더라도 해당 스크립트가 위치한 디렉터리에 대한 읽기 및 실행 권한이 없기 때문에 허용되지 않습니다.

액세스를 허용하도록 디렉터리의 권한을 변경합니다.

 user$ ls -ld somedir/
 drwxr-xr-x 2 root root 4096 Apr 25 13:27 somedir/

 user$ somedir/testscript.bash 
 hi

전체 문제는 tar.gz 파일에서 추출된 디렉터리의 권한을 변경하고 스크립트가 포함된 모든 디렉터리를 찾아 chmod +rx <dir>해당 디렉터리에서 명령을 실행하여 해결할 수 있습니다.

두 번째 질문 - 파일 실행 권한

.tar.gz 파일의 파일에 대한 권한이 설정되지 않았을 수 있으므로 압축을 풀 때 아카이브에 있는 응용 프로그램이나 스크립트가 이러한 권한을 잃을 수 있습니다. 이 특정 문제가 있는 파일을 해결 하면 chmod +x <script>문제가 해결됩니다.

### For example
user$ ls -ld somedir
drwxr-xr-x 2 root root 4096 Apr 25 13:27 somedir/

user$ ls -l somedir/testscript.bash 
-rw-r--r-- 1 root root 23 Apr 25 13:27 somedir/testscript.bash

user$ somedir/testscript.bash
bash: somedir/testscript.bash: Permission denied

관련 정보