'설치'는 무엇을합니까?


52

Windows에서 Linux로 전환 할 때 Linux에 소프트웨어를 설치하는 프로세스를 이해할 수 없습니다. Windows에서 설치 파일을 실행하면 프로그램 파일 폴더에만 프로그램을 설치할 위치를 묻습니다. 나중에 레지스트리를 편집합니다. 이것을 Windows에서 설치라고합니다. Linux에서 '소프트웨어 설치'는 정확히 무엇을 의미합니까?

소스 코드를 다운로드하여 구성한 다음을 사용하여 바이너리를 빌드한다고 가정 해 봅시다 make. 이제는 쓸만한 프로그램이 아닌 바이너리 일뿐입니다. 어떻게 '설치'됩니까? 에 의해 make install? 그리고이 명령은 정확히 무엇을합니까?


1
stackoverflow.com/questions/528399/…에 대한 나의 대답 make install은 프로그래머의 관점에서 단계별로 수행되는 일반적인 종류의 일에 대한 간략한 개요를 제공합니다 .
dmckee

답변:


44

Make는 일반적으로 컴파일에 사용되는 범용 워크 플로 프로그램입니다. 그러나 그것은 무엇이든 사용할 수 있습니다.

"make all"과 같은 작업을 수행하면 make 프로그램은 "Makefile"이라는 현재 디렉토리의 파일에서 "all"이라는 규칙을 실행합니다. 이 규칙은 보통 컴파일러를 호출하여 일부 소스 코드를 바이너리로 컴파일합니다.

"make install"을 수행하면 make 프로그램은 이전 단계에서 바이너리를 가져 와서 액세스 할 수 있도록 적절한 위치에 복사합니다. Windows와 달리 설치에는 일부 라이브러리 및 실행 파일을 복사하기 만하면되므로 레지스트리 요구 사항이 없습니다. 간단히 말해 "make install"은 컴파일 된 파일을 적절한 위치에 복사합니다.


4
기술적으로 레지스트리는 요구 사항 이 아닙니다. 모든 설치 프로그램이 추가하는 것은 Linux의 패키지 관리자 데이터베이스와 마찬가지로 소프트웨어를 제거 할 수있는 사람들을위한 편리한 기능 일뿐입니다.
grawity

2
@grawity 실제로 Windows에서는 통합과 같은 여러 가지 이유로 레지스트리를 편집해야합니다. Linux에서 소프트웨어를 서로 통합하려면 일반적으로 설치 후 스크립트와 같은 방법으로 파일을 복사하거나 구성 파일에 행을 추가하면됩니다.
Camilo Martin

내가 명명 규칙을 찾을 수있는 방법을 알려 도움이 될 것 @sharjeel allMakefile내가 어디에서 규칙 처리를 볼 수 있도록, 해당 섹션의 모양의 끝 마커가 좋아하고 무엇을 all정지.
프로 백업

36

make installMakefile저자가 원하는 대로합니다 . 일반적으로이 시점에서는 빌드 중에 이전에 자주 알려진대로 설치 디렉토리를 변경하기에는 너무 늦 으므로 도움말 파일 및 구성 파일을 올바른 경로 이름으로 참조 할 수 있습니다.

많은 프로젝트가 GNU Autotools 를 사용하여 하드웨어와 운영 체제의 차이점을 개선합니다. (다른 Unix 변형은 일반적인 경로에서 약간 벗어난 함수 선언에 약간 다른 헤더를 사용합니다. 대부분의 프로그램은 다른 위치에 선언 된 것 중 하나 이상이 필요합니다.)

프로젝트에서 Autotools를 사용하는 경우 일반적인 설치 방법은 다음과 같습니다.

./configure
make
make install

./configure일반적으로 명령 행과 같은 옵션을 사용할 수 있습니다 --prefix /opt/apache또는 다른 경로 이름을 지정 비슷한. /usr/local/일반적인 기본값 prefix입니다. 로컬로 구축 된 소프트웨어는 한 곳에서, 배포판으로 제공되는 소프트웨어는 "주 디렉토리"등에서 사는 것이 훨씬 쉽습니다 /usr/ /bin/. (배포자는 매우 조심 결코 파일을 만지지 /usr/local/-. 그들이 그것을 시스템 관리자를위한 독점적으로 알고)

어쨌든,는 프로그램을 컴파일 할 때 사용할 수 ./configure --prefix /path/to/new/prefix있는 변수를 설정 Makefile하고 매뉴얼 페이지를 수정하여 파일의 올바른 위치를 가리키고 구성 파일을 수정하는 등의 작업 make을 수행합니다. make install해당 위치에 설치합니다.

대부분의 프로그램은 마지막 make install단계 없이도 실행될 수 있으며 ./program_name종종 시작됩니다. 이것은 확실히 당 프로젝트 일 - 일부처럼 postfix, qmail등, 여러 가지 움직이는 조각으로 구성하고 함께 작업 모두에 의존하고 있습니다. 기타, 같은 ls또는 su독립적가 내장 된 디렉토리에서 벌금을 실행하기에 충분이 될 수 있습니다 (이것은 종종 유용하지 않습니다 - 때때로하지만. 아주 . 유용)

그러나 모든 프로젝트가 Autotools를 사용하는 것은 아닙니다. 그것들은 거대 하고 복잡 하며 유지하기가 비참합니다. 직접 작성하는 Makefile것이 훨씬 간단하며 개인적으로 Makefile사용 가능한 구성 변수를 사용 하여 단순 을 배포하는 것이 개발자와 사용자 모두에게 훨씬 쉽다고 생각 합니다. ( ./configure ; make ; make install만트라는 작동 할 때 사용자에게 정말 쉽습니다.)


19

make install그다음에 install함수 / 섹션 을 실행하는 것 이상을 수행하지 마십시오.Makefile


맞습니다. make clean기본적으로 섹션 아래의 코드를 실행합니다.
Wulfric Lee

8

Linux에 소프트웨어를 설치할 때 언급해야 할 가장 중요한 점은 배포판에서 소프트웨어를 훨씬 더 안정적으로 설치하기 쉽다는 것입니다 (이것은 목적입니다!). make install다른 방법이없는 경우 에만 사용 하십시오 (대체 프로그램도 고려하십시오).

Windows 사용자의 일반적인 실수는 다른 위치에서 프로그램을 다운로드하여 설치하려고 시도하는 것입니다. 배포 패키지는 한 번의 클릭 또는 명령 (패키지 관리자에서)으로 설치할 수 있습니다.

또한 Linux에 바이러스 감염이없는 주된 이유 중 하나는 소프트웨어가 많은 임의의 사이트가 아닌 중앙 (신뢰할 수있는) 위치에서 설치되었거나 설치되어 있어야하기 때문입니다.

참고로 우분투와 같은 배포판에는 항상 오래된 패키지가 포함되어 있지만 아치 리눅스와 같은 배포판은 항상 최신 버전입니다 (데비안 / 우분투와 같이 Linux 용으로 출시 된 모든 프로그램을 문자 그대로 제공하지는 않지만).

패키지 관리자를 사용할 때 정확히 어떤 일이 발생하는지에 관해서는 FHS 및 배포판 자체 지침에 따라 종속성을 확인하고 패키지를 다운로드하고 압축을 풀고 모든 파일을 적절한 디렉토리에 저장합니다. 패키지 관리자의 맨 페이지에서

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.