답변:
모든 소프트웨어는 프로그램 이며 소스 패키지 라고도 합니다 . 따라서 시스템에서 실행 하려면 모든 소스 패키지를 먼저 빌드 해야합니다.
바이너리 패키지는 이미에서 구축하는 하나 의 소스 많은 수의 사용자가 설치하고 사용할 수 있도록 소프트웨어에서 제공하는 일반 기능 및 매개 변수 사람.
이진 패키지는 설치 가 쉽습니다 .
그러나 업스트림 패키지의 모든 옵션이 없을 수도 있습니다 .
소스에서 설치하려면 소스 코드를 직접 빌드해야합니다. 즉, 종속성을 직접 관리해야합니다. 또한 패키지의 모든 기능을 알고 있어야 패키지를 적절하게 빌드 할 수 있습니다.
소스에서 설치의 장점 :
간단히 말해서 소스 에서 설치 하면 많은 노력이 필요한 동시에 많은 사용자 정의 옵션이 제공 되지만 바이너리 에서 설치하는 것이 더 쉽지만 원하는대로 사용자 정의 할 수 없습니다 .
업데이트 : 아래 주석에 보안 관련 인수 추가. 그렇습니다. 바이너리로 설치하는 동안 소스 코드의 무결성이없는 것은 사실입니다. 그러나 바이너리를 어디서 얻었는지에 달려 있습니다. 새로운 프로젝트의 바이너리를 얻을 수있는 신뢰할 수있는 출처가 많이 있습니다. 유일한 부정적인 것은 시간 입니다. 업데이트 바이너리 또는 새 프로젝트가 신뢰할 수있는 리포지토리에 표시되는 데 시간이 걸릴 수 있습니다.
그리고 소프트웨어 보안에 관해 무엇보다도 아래 의견에서 Joe 가 제공 한 벨랩에서이 재미있는 페이지 를 강조하고 싶습니다 .
소스 파일에는 개발자가 선택한 언어 (C, C ++, Python 등)로 작성된 원래 코드가 포함되며 일반적입니다. 배포판이나 운영 체제에 따라 다르지 않습니다.
패키지 (예 : RPM 또는 DEB)는 특정 배포판에 대해 미리 준비된 이진 실행 파일 (또는 해석 된 스크립트 등)입니다. 컴파일 (필요한 패치 추가 등), 실제 컴파일, 배포판 특정 구성 파일 생성, 사전 및 사후 설치 스크립트 생성 등을위한 소스 준비 작업은 모두 패키지 관리자가 수행합니다.
다시 말해, 모든 당나귀 작업은 패키지로 이루어졌지만, 소스에서 설치하기로 선택한 경우 직접 수행해야합니다.
거의 모든 경우에 패키지를 사용하는 것이 훨씬 쉽습니다.
그러나 때때로 패키지 된 버전이 이전 버전이거나 더 나쁜 경우에는 패키지 된 버전이 없습니다. 이 경우 유일한 옵션은 자신을 컴파일하는 것입니다. 그렇다면 다음을 고려해야합니다.
dev
패키지를 포함하여 모든 종속성이 설치되어 있는지 확인해야 합니다. 많은 종속성이 있을 수 있습니다.추가 노력을 기꺼이한다면 소스에서 컴파일하면 다음과 같은 이점이 있습니다.
일부 배포판의 사전 빌드 패키지는 설치 및 실행할 준비가 된 바이너리 실행 파일을 제공하지만 (RPM 및 DEB는 예), 다른 배포판은 컴파일 프로세스를 자동화하는 패키지를 제공합니다.
젠투 ebuilds
는 이에 대한 예입니다. 패키지는 기본적으로 패키지 관리자에게 실행 파일을 컴파일하고 설치하는 방법을 설명하는 지침입니다. 이것은 전통적인 패키지 관리자 (자동 업데이트, 제거 등)의 많은 장점을 가지고 있지만 사용자는 여전히 자신의 취향에 맞게 컴파일 프로세스를 최적화 할 수 있습니다.
아치 리눅스는 메인 스트림 패키지가 바이너리 인 패키징 시스템을 가지고 있으며 많은 추가 패키지가 PKGBUILD
파일을 사용하여 시스템에서 컴파일됩니다 .
소스에서 빌드하면 정확히 머신의 아키텍처를 지정할 수 있습니다. 새로운 CPU에는 컴파일러가 이해하는 추가 명령이있어 약간의 성능이 저하됩니다. 사전 빌드 패키지는 일반적으로 여전히 많이 사용되는 가장 오래된 CPU에 의존합니다.
이는 생물 정보학 파이프 라인 도구 또는 지구 물리학 모델링 도구와 같이 CPU를 매우 많이 사용하는 프로젝트 크리티컬 애플리케이션에 주로 중요합니다. 이러한 소프트웨어는 매우 통제 된 환경에서 실행되며 자체적으로 액세스 제어 기능이 없으므로 보안 버그가 너무 시급하여 며칠 또는 몇 시간 내에 패치해야하는 경우는 거의 없습니다. 초기에 알려지지 않은 아키텍처를 가진 다른 컴퓨터에서 실행할 필요는 거의 없습니다.
예, 저는 컴퓨터가 매우 빠르다는 것을 알고 있습니다. 여러분이 취한 노력이나 행동은 매우 매우 비싸지 만 프로그램을 앉아서 기다릴 세 번째 날 (이것은 내가 말하고있는 상황입니다) 의심스러워 보이기 시작합니다.
이와 달리 브라우저와 같은 응용 프로그램은 유지 관리 저장소 (다운로드 한 사전 빌드 된 패키지가 아닌)에서 더 잘 사용해야합니다. 최신 상태로 유지하는 것이 매우 중요합니다.
두 가지 세계를 최대한 활용하는 한 가지 방법 (최신 소프트웨어, 간단한 설치 / 제거, 대부분의 배포 조정 및 조정, 현지 요구 사항에 맞게 최적화 가능), 비용 (자신을 최신 상태로 유지하고 버그를 감시해야 함) 마지막 순간 패치, 개발에 따라, 당신은 버그 수정 및 버전 간의 비 호환성과 관련하여 자신이 있습니다.) (많이) 완화 할 수는 없으며, 배포판의 소스 패키지부터 시작하여 자체 패키지를 작성하는 것입니다. 예, 단지 구축 및 설치보다 더 많은 작업입니다.