2009-04-26 15 views
1

dept의 서버에있을 때 "apt-get install nethack"과 같은 명령을 사용할 수 없습니다. 적어도 바이너리 파일에서 nethack을 만들어야 작동한다는 것을 알았습니다. 나는 이유를 이해할 수 없다. 왜 바이너리로부터 물건을 만들어야합니까? "apt-get"과 같은 명령을 사용하는 것이 왜 금지됩니까? 바이너리를 빌드 할 때 루트 액세스가 필요하지 않은 이유는 무엇입니까?왜 바이너리 파일의 건물에 루트 액세스가 필요하지 않습니까?

+0

"원본 파일에서 빌드"를 의미합니까? –

+0

당신이 옳을 수도 있습니다. 사람들이 읽을 수있는 코드 (소스 파일?)를 바이너리 (0과 1)로 변환하려고 할 때 실제로 바이너리에 관해서 이야기하기 때문에이 용어를 혼동했을 것입니다. 그래도 내 관찰은 틀릴 수도 있습니다. –

답변

2

프로그램을 컴파일 할 때 소스에서 '--prefix = ~ /'를 지정할 수 있습니다. 이로 인해 자신의 홈 디렉토리에 상대적으로 설치하게됩니다 (따라서 바이너리 프로그램은 일반적으로 '~/bin', man 페이지는 '~/man'등으로 끝납니다). 이미 여기에 글을 쓸 권한이 있기 때문에 문제가되지 않습니다.

Apt-get은 다른 사용자에게 영향을 줄 수있는 전역 파일 시스템 ('/ bin /', '/ usr/bin /'등)에 패키지를 설치하므로 관리 액세스가 필요합니다. .

당신이 어떤 프로그램을 설치하려면 다음 명령

apt-get source app-name 

그것은 단지 앱 이름으로 소스 코드를 가져오고에 넣어 때문에 루트없는 경우에도이 것이다 작업을 사용할 수 있습니다 소스를 추적해야하는 것보다 쉽고 시스템에서 작동해야하는 버전을 다운로드 할 수 있기 때문에 소스를 더 잘 얻을 수있는 현재 디렉토리입니다.

또는 sysadmin이 자신의 직업이기 때문에 필요한 프로그램을 설치하도록 버그를 수정해야합니다 (필요한 경우 나머지 팀도 그렇게 할 가능성이 있습니다).

+0

명령에 +1 해 주셔서 감사합니다. :) –

0

apt-get는 프로그램 시스템 전체를 설치하므로.

0

apt-get이 설치된 파일 (/ bin,/usr/bin ...)을 기록하는 위치는 루트 액세스로 제한됩니다. 나는 소스에서 빌드 할 때 bulid의 설치 단계를 실행하지 않는다고 상상합니다. 패키지를 작성할 수있는 위치에 접두사를 설정해야합니다. This thread는 apt-get을위한 접두사 설정에 대한 조금 이야기하고 당신은 아마

~/software/ 

처럼 뭔가에 접두사를 설정 한 다음 PATH에 결과 빈 디렉토리를 추가 할 수 있습니다.

4

apt-get은 모든 사용자에 대해 패키지를 설치하는 시스템 수준 명령입니다.

다운로드하여 컴파일하면 시스템 전체가 아니라 바이너리의 로컬 "복사본"만 만듭니다. make install으로 설치 프로세스를 완료하려고 시도하면 모든 사용자의 액세스에 대해 프로그램을 설치할 수있는 충분한 권한이 없기 때문에 실패 할 가능성이 높습니다 (apt-get install)

+0

시스템 전체 명령에 대해 더 알고 싶습니다. 프로그램이 시스템 전체 명령을 사용할 수 없다는 것을 의미합니까? 또 다른 관점을 생각해 봅시다. 소스 파일에서 프로그램을 빌드하여 시스템 전체 명령에 액세스 할 수 있습니까? –

+0

+1은 지역 사물과 시스템 사물을 비교하기 시작했습니다. –

+1

그것은 저장 권한의 문제입니다. 프로그램을 "설치"할 때 모든 사용자가 액세스 할 수있는 위치에 프로그램을 복사합니다.이 경로는 대부분 기본 $ PATH 환경 변수에 포함되어 있습니다. 변하기 쉬운. 권한이 부여 된 사용자 만이 위치에 쓸 수 있습니다. – Andy

관련 문제