소스에서 프로그램을 컴파일하고 설치하는 방법


39

이것은 내가 리눅스를 즐기는 것을 정말로 제한하는 문제입니다. 응용 프로그램이 저장소에 없거나 설치 프로그램 스크립트가없는 경우 소스에서 응용 프로그램을 설치하는 위치와 방법이 정말 어려워집니다.

Windows와 비교하면 쉽습니다. 마법사에서 모든 작업을 수행하는 설치 관리자 응용 프로그램을 사용해야합니다. 리눅스에서는 ... 별로는 아닙니다.

그렇다면 이것에 대한 팁이나 지침이 있거나 소스에서 Linux 프로그램을 설치하는 방법, 이유 및 위치를 명시 적으로 설명하는 웹 사이트가 있습니까?


7
"Windows와 비교하면 쉽습니다. 마법사에서 모든 작업을 수행하는 설치 관리자 응용 프로그램을 사용해야합니다. Linux에서는 그다지 많지 않습니다." 질문에 약점이 있습니다. Windows를 사용하면 소스 코드 를 거의 얻지 하므로 패키지를 만든 사람이 자비를 느낄 수 있습니다. 당신이 이것에 대해 생각한다면, "리눅스 패키지가 없었기 때문에 소스에서 빌드해야합니다"라고 말하는 것과 크게 다르지 않습니다. 그것을 시작하는 방법이 없었습니다. 소스에서 빌드하는 것은 일반적으로 * nix-land에서 최후의 수단이지만 Windows-ville에서는 거의 옵션이 아닙니다.
Avery Payne

2
그것은 말하고 있습니다 ... 모든 nix 시스템에 대한 모든 새로운 사람들에게 대답해야 할 일반적인 질문을하는 +1 충돌. :) 소스에서 빌드하는 것은 때때로 불쾌한 버그를 수정하는 것과 다음 소프트웨어 릴리스까지 고통을받는 것의 차이를 의미합니다. 실제로 그렇게 나쁘지는 않으며, 많은 사람들이 지적한 것처럼, 무엇을 찾아야하고 어떻게해야하는지 알게되면 상당히 고통스럽지 않습니다.
에이버리 페이 네

답변:


22

일반적으로 프로젝트에는 빌드 및 설치 방법에 대한 지침이있는 웹 사이트가 있습니다. 먼저 구글.

대부분의 경우 다음 중 하나를 수행합니다.

  1. 특정 소스 코드 버전의 릴리스 인 tarball (tar.gz 또는 tar.bz2 파일)을 다운로드하십시오.
  2. 같은 명령으로 타르볼의 압축을 풉니 다 tar zxvf myapp.tar.gzgzip으로 압축 된 타르볼 또는 tar jxvf myapp.tar.bz2bzip으로 압축 된 타르볼을 위해
  3. 위에서 만든 디렉토리로 cd
  4. 운영 ./configure && make && sudo make install

또는:

  1. git 또는 svn을 사용하거나 공식 소스 저장소에서 최신 소스 코드를 가져옵니다.
  2. 위에서 만든 디렉토리로 cd
  3. 운영 ./autogen.sh && make && sudo make install

configure와 autogen.sh는 소프트웨어 설치 위치를 지정하기 위해 --prefix 인수를 허용합니다. 나는 밖으로 확인하는 것이 좋습니다 나는 나 자신을 컴파일 소프트웨어를 넣어야 어디? 맞춤형 소프트웨어를 설치하기 가장 좋은 장소에 대한 조언.


최신 버전을받을 때 autogen.sh가 사용되지만 공식 릴리스에는 configure / make가 사용되는 이유는 무엇입니까?
Louis Salin

1
일반적으로 "최첨단"소프트웨어를 원하는 사용자는 버전 제어 소프트웨어 (git, subversion 또는 CVS 등)에서 릴리스를 가져옵니다. 이것은 아마도 (적어도) 작동하는 것으로 입증 된 타르볼과 달리 아마도 테스트되지 않았기 때문에 "최첨단"입니다. 말이 되나요?
Matt Simmons

2
@Matt, 그것은 말이되는 것이 확실하지만 Sandy는 이제 모든 git'd / svn'd 트렁크에 autogen.sh가있는 것처럼 보이게했다는 사실에 더 많은 의견이 있다고 생각합니다.
reiche

1
그리고 모든 냄비에 닭이나 ... 도대체, 나는 때때로 구성 스크립트없이 소프트웨어를 만난다. 쉽고 통일 된 방법이 있다면 패키지가 필요하지 않습니다 ;-)
Matt Simmons

Matt는 절대적으로 옳습니다. 이것이 제가 "대부분"이라고 말한 첫 번째 이유는 프로젝트 웹 사이트를 찾도록 옹호 한 것입니다. autogen.sh/configure 어드바이스는 거의 모든 그놈 모듈과 수많은 다른 프로젝트에도 적용됩니다. 일부 프로젝트는 automake를 사용하지 않으며 Makefile 만 있으며 실행하면됩니다 make && sudo make install. 일부 Python 프로젝트에는 setup.py 만 있으며 설치를 호출 할 것입니다 (실제 컴파일 설정이 없기 때문에). 다른 빌드 / 설치 시스템도 많이 있습니다. README 또는 INSTALL 파일이 무엇을해야하는지 정확하게 설명 할 수 있기를 바랍니다.
Sandy

3

소스에서 패키지를 컴파일하고 모든 패키지 종속성, 플래그 등을 처리하는 패키지 관리자가 있다고 덧붙이고 싶습니다.

BSD 시스템에서 ports: Ports Collection 사용하기

데비안에서 apt-get패키지 관리자가 너무 소스에서 설치할 수 있습니다 APT HOWTO를 : 소스 패키지 작업 (동일 우분투, 리눅스 민트 데비안을 기반으로 다른 모든 것들에 간다)

젠투 배포본은 portage패키지 관리자를 사용하는데,이 패키지 관리자는 소스에서만 전체 시스템을 컴파일합니다 : 포티지 소개 .

슬랙웨어는 패키지를 컴파일 할 수 있지만 거기에 패키지 관리자가 있는지 모르겠습니다 .. =)

어쨌든 위에서 언급 한 Sandy와 같이 항상 수동으로 패키지를 컴파일 할 수 있습니다 =) 또한 다른 배포판에서 패키지 관리자 를 사용 apt-get하거나 사용할 수 있어야합니다 portage...


1
"apt-get 패키지 관리자가 소스에서 설치할 수 있습니다"라고 말하는 것은 올바르지 않습니다. 인용 부분은 데비안 소스 에서 데비안 패키지를 만드는 방법을 설명 합니다. 되지 않음 업스트림 소스를 임의의.
Faheem Mitha

2

설치하려는 특정 프로그램이나 응용 프로그램과 함께 제공되는 설명서를 읽는 것이 가장 좋습니다. 일반적으로 tarballs (보통 다운로드 할 수있는 응용 프로그램 소스 아카이브) 안에 readmes / README가 있거나, 해당 응용 프로그램을 설치하는 기본 방법이 무엇인지 읽고 배울 수있는 INSTALL 파일이있을 수도 있습니다. 한마디로 : RTFM;)


README가 Linux에서 빌드하는 데 필요한 모든 요구 사항을 제공했지만 Windows 설치 지침 만 있기 때문에 여기에 왔습니다. 수락 된 답변은 저에게 효과적이며 아마도 대부분의 시간에 효과가 있습니다. ./configure 경로를 시도하고 README가 작동하지 않으면 (예 : 종속성이 없어 컴파일러 출력을 읽을 수없는 경우) README로 이동하는 것이 거의 더 좋은 조언이라고 생각합니다.
Stephen C

1

FreeBSD에서 포트 콜렉션 사용에 대한 요약 :

포트 찾기

포트는 범주별로 구성되므로 포트가 어떤 범주인지 모르면 먼저 포트를 찾아야합니다.

cd /usr/ports
make search name=myport

때로는 그런 식으로 너무 많은 항목이 있습니다. 나는 개인적으로 선호합니다 :

find /usr/ports -name myport* -print -depth 2

*여러 버전의 포트가 사용 가능한 경우가 많으므로 검색시를 사용하십시오 . 심도 인수는 리턴 결과가 원하지 않는 일치 항목으로 불필요하게 어수선 해지지 않도록합니다.

구성

종종 일부 구성을 원할 것입니다. Apache 및 Postgres와 같은 소프트웨어에는 실제로 필요합니다. 명령 행, 환경 및 구성 파일 작성의 세 가지 주요 선택 사항이 있습니다. 명령 행을 시작하려면 다음을 수행하십시오.

make showconfig

기본 구성 옵션이 표시됩니다. 기본값을 좋아한다면 컴파일하고 설치할 준비가 된 것입니다. 그렇지 않은 경우

make config

원하는 옵션을 선택할 수있는 대화 상자가 나타납니다. (이와 혼동하지 말고 make configure선택한 옵션으로 포트를 구성하십시오!) 이것은 충분하지만 Apache와 같은 일부 소프트웨어의 경우 간단한 대화 상자가 처리하지 못하는 복잡한 구성이 종종 있습니다. 이를 위해, Makefile (들)도 살펴보아야합니다. Makefile (들)은 때때로 당신에게 더 많은 정보를 줄 수있는 추가 대상을 제공 할 것입니다. Apache 예제를 계속하려면

make show-modules
make show-options
make show-categories

선택한 모듈, 스레드 옵션 등을 설정하는 방법에 대한 정보를 제공합니다. 포트의 기본값이 대부분 괜찮고 몇 가지 사항 만 변경하려는 경우 환경 변수와 같은 key = value 쌍을 전달할 수도 있습니다.

make MYVBL1=MYVAL1 ... install clean

또한 옵션을 통해 스위치 옵션을 설정할 수 있습니다 -D.

make -D MYVAR -D MYOTHERVAR ... install clean

그러나 복잡한 구성의 경우 명령 행이 제대로 작동하지 않으며 처음 두 방법 중 어느 것도 효과적이지 않습니다. 이 경우 구성 파일을 만들어 make__MAKE_CONF 변수 를 사용하여 전달할 수 있습니다. FreeBSD는 기본 설정 파일을 가지고 있습니다 : /etc/make.conf일반적으로 이전에 설치된 포트와 다른 시스템 설정에 대한 정보가 들어 있습니다. 시작하려면, 포트 옵션으로 파일을 작성하고이를 호출 ~/myport.mk한 다음 해당 파일을 /etc/make.conf와 결합하십시오.

cat /etc/make.conf ~/myport.mk >> ~/make.myport.conf

그런 다음 구성을 다시 확인할 수 있습니다.

make showconfig __MAKE_CONF=~/make.port.conf

그리고 모든 것이 좋아 보인다면 :

make install clean __MAKE_CONF=~/make.myport.conf

조심해! make configure전체 또는 일부 설치 후 또는 설치 후 구성 설정을 조정해야하는 경우 구성을 먼저 지워야합니다 .

make rmconfig

그렇지 않으면 포트 서브 시스템, 포트 make기본값 및 원하는 구성 간에 예기치 않은 상호 작용이 발생 합니다.

요약하면 많지만 구성의 복잡성은 주로 포트가 아니라 앱에 관한 것입니다. 예를 들어 Bash는 실제로 옵션이 없습니다.

설치

이것은 쉬운 부분입니다.

make install clean

또는 당신은 할 수 있습니다

make build
make install
make clean

더 많은 타이핑입니다.

거의 다됐다. 종속성 및 구성 옵션을 반복적으로 나열하고 패치로 업데이트하는 등의 작업이 더 많이있을 수 있습니다. 여기서는 핸드북포트 섹션 , 포트 서브 시스템 매뉴얼 페이지 (추가 make 대상에 대한 유용한 정보) 및 매뉴얼 페이지를 참조합니다.make


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