이것은정식 질문패키지 소프트웨어를 사용해야 하는 경우와 직접 빌드하고 설치하는 경우에 대해 설명합니다.
소스에서 직접 빌드하고 설치하는 대신 OS 배포판에서 제공하는 패키지에서 소프트웨어를 설치해야 하는 경우는 언제입니까? 언제 소스에서 빌드하는 것이 더 좋습니까?
답변1
타당한 이유가 없는 한 배포판 패키지를 사용해야 합니다. 배포판 패키지를 사용하면 다음과 같은 중요한 이점을 얻을 수 있습니다.
- 패키지를 설치 및 제거하고 최신 상태로 유지하는 작업이 줄어듭니다.
- 패키징 시스템은 소프트웨어의 종속성을 자동으로 설치하고 최신 상태로 유지합니다.
- 보안 업데이트는 배포판에서 자동으로 제공되므로 추적하거나 누락될까 봐 걱정할 필요가 없습니다.
- 패키징 시스템은 배포판이 선호하는 방식으로 항목을 구성합니다. 예를 들어, apt 기반 시스템에서 Apache는 /etc/apache2/*-enabled의 심볼릭 링크와 이를 사용하여 Apache 기능을 활성화하거나 비활성화하는 도구(a2enconf, a2enmod, ...)와 함께 설치됩니다. 처음에는 배우는 데 더 많은 작업이 필요할 수 있지만, distro의 기본 도구와 작업 방식을 사용하면 장기적으로 생활이 더 쉬워지고 구성이 더 잘 통합될 것입니다.
배포판이 제공하는 것보다 최신 버전의 일부 소프트웨어를 사용해야 하거나 컴파일해야 하는 기능을 활성화해야 하는 경우 커뮤니티 저장소에서 패키지의 최신 버전이나 기능이 풍부한 버전을 찾을 수 있습니다. 레미의 저장소RHEL/CentOS와 함께 제공되는 것보다 훨씬 더 최신 버전의 PHP를 제공하는 잘 알려진 예입니다. 커뮤니티 리포지토리를 사용하면 OS 리포지토리의 많은 이점을 얻을 수 있지만 작성자가 악성 코드를 공개하여 전체 권한을 사용하여 시스템에 설치할 위험이 있습니다. 사례별로 위험/보상 판단을 직접 내려야 합니다.
이러한 대안 중 어느 것도 효과가 없으면 소스에서 컴파일해야 합니다. 소스 코드에서 소프트웨어를 컴파일할 때 권장되는 경로는 다음과 같습니다.나만의 바이너리 패키지 만들기. 자신만의 패키지를 구축하면 다음을 수행할 수 있습니다.
- 배포, 설치, 종속성 관리, 보고, 업그레이드, 다운그레이드 및 제거를 위해 배포판의 패키지 관리 시스템을 사용하세요.
- 빌드 도구 및 개발 라이브러리를 단일 빌드 호스트로 제한하십시오(모든 테스트 및 프로덕션 서버에 설치하는 대신).
- 프로덕션 환경에 동일한 패키지를 배포하기 전에 먼저 테스트 환경에 패키지를 배포하는 공통 릴리스 경로를 따르세요.
그렇게 하니까당신은 패키지 관리자입니다, 중요한 버그와 보안 업데이트를 놓치지 않으려면 관련 보안 메일링 리스트를 구독해야 합니다.
패키징하지 않고 로컬로 구축된 소프트웨어를 설치하게 된다면,GNU 스토우잘 정리된 상태로 유지하고 더 쉽게 제거할 수 있도록 도와줍니다.
답변2
나는 앤드류의 반응을 좋아한다.
나는 "더 나은 통합"에 대한 Andrew의 의견에 추가할 구체적인 사항을 지적하고 싶습니다. 소스(향후 프로젝트의 종속성)에서 애플리케이션을 설치하고 나중에 바이너리(예: deb 또는 rpm 패키지)에서 패키지를 설치하려고 하면 해당 패키지가 종속성이 설치된 것을 인식하지 못할 수 있습니다. RPM 또는 DEB 패키지에서 초기 종속성 애플리케이션을 설치한 경우 향후 패키지는 해당 애플리케이션이 설치되었음을 알게 됩니다. 동일한 패키지 방법(예: yum, pip, rpm 등)을 사용하는 것이 가장 좋습니다. 소스에서 설치하는 것은 또 다른 방법입니다. 따라서 Andrew가 말하는 용이성은 심각한 고려 사항입니다.
"자신만의 바이너리 패키지 만들기"는 설치 프로세스를 기록하는 이점이 있다는 점을 덧붙이고 싶습니다. 소스 파일에서 설치하면 로깅의 이점이 없습니다.