내 컴퓨터의 모든 사용자가 액세스할 수 있는 프로그램 X가 있습니다. 그래서 홈 폴더에 넣을 수 없습니다. 그래서 내가 들었어/usr/local
올바른 장소입니다그리고 그것을 시도했다.
하지만 해당 폴더의 폴더 권한 /usr/local/bin/
은 입니다 drwxr-xr-x
.알아내다예 755
. 그래서 저는 programs
using이라는 폴더를 만들고 sudo mkdir programs
그 권한을 using을 사용하여 변경합니다. sudo chmod 775 programs
홈 폴더의 폴더에 권한이 있고 775
이것이 부여하는 것이 올바른 권한이라고 생각하기 때문입니다.
cd /usr/local/programs/
이제 프로그램 X를 기본 폴더에서 이 programs
폴더 로 복사하려고 하는데 mv ~/X/ .
오류가 발생합니다 mv: cannot move '/home/nav/X/' to './X': Permission denied
.
/usr/local/programs
나는 이것이 사실인지 다시 확인했고 775
실제로 그랬습니다. 이제는 그때를 사용 X
하여 복사할 수 있다고 생각했지만programs
sudo
명령을 사용하여 변환모든 파일을 넣었는데 programs
전체 775
과정에 뭔가 문제가 있는 것 같은 느낌이 듭니다.
그렇다면 어떻게 설치 X
하고 모든 사용자가 액세스할 수 있게 만들까요? 이렇게 하려는 이유는 일단 에 넣으면 /usr/local/programs/
아래와 같은 스크립트를 만들어서 애플리케이션 메뉴를 통해 접근할 수 있도록 하려고 하기 때문입니다.
스크립트:
스크립트 생성:
sudo -H gedit /usr/share/applications/X.desktop
이 파일에 다음을 붙여넣습니다.
[Desktop Entry]
Version=1.0
Name=X
Comment=Program X
GenericName=IDE
Keywords=SomeProgram, X
Exec=/usr/local/programs/X/xyz %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/usr/local/programs/X/icons/icon.xpm
Categories=GNOME;GTK;
StartupNotify=true
답변1
/usr/local/bin
프로그램을 배치할 올바른 디렉토리입니다.그래서 그냥:
sudo cp ~/X/xyz /usr/local/bin
그리고움직이지 마세요이동하면 권한도 이동하므로 복사하는 동안 프로그램에 기본 권한이 부여됩니다 /usr/local/bin
.
또한 /usr/local/bin
이미 경로에 아이콘을 넣으면 /usr/share/pixmaps
데스크탑 파일은 다음과 같이 됩니다.
[Desktop Entry]
Version=1.0
Name=xyz
Comment=Program xyz
GenericName=IDE
Keywords=SomeProgram, xyz
Exec=xyz %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=icon.xpm
Categories=GNOME;GTK;Development;IDE
StartupNotify=true
홈 디렉토리에 아이콘 파일이 있는 xyz
경로에 있는 프로그램 의 경우.X
icon.xpm
공식 카테고리 목록이봐
답변2
내 컴퓨터의 모든 사용자가 액세스할 수 있는 프로그램 X가 있습니다. 그래서 홈 폴더에 넣을 수 없습니다. 그래서 딱 맞는 곳이라는 말을 듣고
/usr/local
한번 시도해 봤습니다.
예, /usr/local
시스템 관리자는 컴퓨터의 모든 사용자가 사용할 수 있는 적절한 위치에 프로그램을 설치할 수 있습니다.
그러나 /usr/local
일반적으로 하위 디렉토리 bin
, lib
, 로 나누어지며 바이너리 , 라이브러리, 기타 데이터 디렉토리 등과 같은 share
하위 디렉토리에 프로그램을 설치해야 합니다 ./usr/local/bin/X
/usr/local/lib/libX.so.1
share
일반적으로 빌드한 Linux 프로그램은 /usr/local
이 명령을 사용하여 make install
설치할 수 있습니다. 더 정확하게 sudo make install
는 루트만 이러한 하위 디렉터리에 쓸 수 있기 때문입니다. (적어도 이는 소스 코드로 구축된 소프트웨어에 대한 상당히 일반적인 규칙입니다.)
/opt
또한 각 프로그램을 자체 하위 디렉터리에 유지하는 계층 구조도 있으므로 디렉터리에는 자체 , 등 하위 디렉터리가 /opt/X-1.0/
있습니다 . 어쩌면 이것이 당신이 묘사하는 것에 더 가깝습니다.bin
lib
share
그런데 해당 폴더의 폴더 권한이 755
/usr/local/bin/
로drwxr-xr-x
확인되었습니다.
권한이 정확합니다.
실제로 겪고 있는 문제는 권한과 관련이 없지만유일한 루트쓸 수 있다 /usr/local
, 그게 바로 그것이다.
소스 설치 프로그램 사용에 대한 위의 요점을 참조하십시오 sudo make install
(소스에서 빌드하고 소스가 이 기능을 지원하는 Makefile을 사용한다고 가정). 간단히 말해서 sudo
예상대로 루트로 이러한 파일을 생성하고 루트 소유권을 가져야 합니다.
그래서 sudo mkdir 프로그램을 사용하여 프로그램이라는 폴더를 만들고 sudo chmod 775 프로그램을 사용하여 해당 권한을 변경했습니다. 왜냐하면 홈 폴더의 폴더에 권한 775가 있어서 올바른 권한이라고 생각했기 때문입니다.
그러지 마세요. /usr/local
실제로 이런 식으로 사용되어서는 안 됩니다. (그렇다고 사람들이 비슷한 방식으로 남용하지 않는다는 의미는 아니지만 올바르게 사용하는 방법을 배우거나 더 적절한 장소를 찾는 것이 좋습니다.)
이제 CD로 이동하여
/usr/local/programs/
다음 명령을 사용하여 프로그램 X를 홈 폴더에서 프로그램 폴더로 복사하려고 시도했지만mv ~/X/ .
오류가 발생했습니다.mv: cannot move '/home/nav/X/' to './X': Permission denied.
문제는 루트가 필요하다는 것입니다. 를 사용하면 sudo
도움이 되지만 아래 파일은 X/
여전히 사용자 소유입니다. (이렇게 하면 시스템의 다른 사용자가 해당 파일을 사용하는 것을 반드시 막을 수는 없지만 일반적으로 이러한 파일을 /usr/local
루트가 소유하게 되기를 원합니다.)
권한에는 문제가 없습니다. 일반적으로 루트의 경우 0755가 맞습니다. 필요한 것은 사용자가 이러한 바이너리를 실행할 수 있도록 "다른" 비트를 읽고 실행하는 것뿐입니다.
앞서 언급했듯이 프로그램을 자체 하위 디렉터리에 보관하려면 /opt
해당 위치가 더 적합할 수 있습니다. 하지만 이 경우에도 일반적으로 이러한 파일의 루트 소유권을 갖고 싶어합니다. 또한 /opt
인기가 줄어들면서 이는 다소 특이한 선택이 될 수 있습니다...
이를 올바르게 수행하는 방법
불행하게도 Linux에서 소프트웨어를 올바르게 설치하는 것은 설치하려는 소프트웨어에 따라 크게 달라집니다. 설치 방법은 일반적으로 빌드 방법과 사용하는 프로그래밍 언어에 따라 다릅니다.
나는 다음을 추천합니다:
먼저, Linux 배포판에 해당 소프트웨어 패키지가 함께 제공되는지 확인하세요. 이 경우 해당 패키지 관리자( , 등)를 사용하여
apt-get
패키지yum
를dnf
설치하세요. 기본 저장소에 패키지가 없는 경우 패키지를 가져올 수 있는 확장 저장소가 있는지 확인하세요.웹사이트에서 이 소프트웨어를 다운로드한 경우 바이너리가 포함된 타르볼() 이 아닌 배포용 바이너리 패키지(
.deb
또는 등) 로 제공되는지 확인하세요 ..rpm
.tar
패키지 설치는 시스템에 제대로 통합되므로 항상 선호됩니다. Linux 배포판의 패키지(사용 가능하고 배포판에서 제공하는 버전을 수락할 수 있다고 가정)는 시스템에서 올바르게 작동할 가능성이 더 높습니다.
소스에서 빌드한 경우 에 설치해 보십시오
/usr/local
. 이는 일반적으로 autoconf/automake를 사용하는 패키지의 경우 기본값입니다../configure.sh
빌드가 시작될 때 실행하려는 스크립트가 있는 경우 일반적--prefix
으로 매개변수(예:./configure.sh --prefix=/usr/local
)를 전달하여 이를 사용자 정의할 수 있습니다. 소프트웨어를 빌드한 후sudo
다음을 사용하여 설치하십시오sudo make install
.소프트웨어가 다른 빌드 시스템 및/또는 프로그래밍 언어를 사용하는 경우 동일한 작업을 수행하기 위해 동등한 지침을 찾을 수 있는지 확인하십시오. 소스 패키지는 일반적으로
INSTALL
소스 트리 상단에 이름이 대문자로 표시된 파일을 제공하며 해당 파일을 빌드/설치하고 사용을 시작하는 방법에 대한 지침을 포함합니다.README
읽어보세요.
불행히도 거기에는 많은 변화가 있습니다. 몇 가지 표준이 있지만 실제로는 너무 많습니다. Linux/Unix에서 소프트웨어를 구축/설치하는 데는 혼란스러운 오류 메시지를 해독하고, 지침을 찾아 읽고, 기대한 대로 작동하는지 확인하는 등 시행착오가 수반되는 경우가 많습니다. 하세요... 정기적으로 시작하면 일이 더 쉬워지지만, 해결해야 할 특이한 점은 항상 있을 것입니다.
그렇기 때문에 배포판의 패키지를 사용하는 것이 훨씬 더 좋습니다. 적어도 표준이 있고 패키지를 설치하고 관리하기 위한 표준 도구 세트가 있으며 빌드 세부 사항이 모두 처리됩니다.
- 웹사이트에서 바이너리 타르볼을 얻은 경우 타르볼의 압축을 풀고 사용하는 방법에 대한 지침을 검토하세요. 추측할 수도 있지만 실수를 할 수도 있고, 최소한 깔끔하지 않을 수도 있습니다. 루트로 직접 tarball의 압축을 푸는 것을 고려하십시오( 사용
sudo
). tarball이 프로그램 이름을 딴 하위 디렉토리와 함께 제공되는 경우 해당 하위 디렉토리를/opt
기본 디렉토리로 사용하는 것을 고려하십시오. 사용자가 명령줄에서 호출하는 바이너리에 대해 위치 중 하나에 심볼릭 링크를 생성하는 것을 고려해보세요$PATH
( 괜찮지/usr/local/bin
만/opt/bin
이미 파일에 있는 경우에만 가능 ).$PATH
사전 빌드된 바이너리 세트를 압축 해제하는 것이 가장 어려운 경우가 많습니다. 이와 같은 것이 있으면 패키지를 올바르게 여는 방법에 대한 지침을 찾으십시오.
이 정보가 귀하가 보유한 특정 패키지를 관리하는 방법을 결정하는 데 도움이 되기를 바랍니다!