저는 Linux & Co.를 통해 사용자가 다양한 저장소에서 많은 패키지를 설치할 수 있다는 점을 좋아합니다. AFAIK, 소스 패키지도 함께 제공되므로 직접 컴파일할 수 있습니다.
하지만 직접 컴파일할 수 있는데 왜 미리 컴파일된 패키지를 "유지/제공"해야 합니까? 보유/제공하려는 의도는 무엇입니까?
소스 패키지만 다운로드하고 운영 체제가 나머지 작업을 수행하도록 Linux를 구성할 수 있습니까? (미리 컴파일된 패키지 설치와 비슷합니까?)
답변 주셔서 감사합니다.
답변1
장단점이 있습니다. 사전 빌드된 패키지를 제공하는 배포판은 패키지를 한 번 빌드하는 데 시간을 소비하고(지원하는 모든 구성에서) 사용자는 빌드하는 데 시간을 소비하지 않고 패키지를 설치할 수 있습니다. 사용자는 배포판의 바이너리를 있는 그대로 받아들입니다. 일부 대규모 배포판의 패키지 설치 횟수를 고려하면 모든 곳에서 다시 컴파일할 필요가 없어 절약된 시간이 상당합니다.
소스 코드와 이를 구축하는 데 필요한 인프라를 제공하고 사용자가 모든 것을 로컬에서 구축하도록 의존하는 일부 배포판이 있습니다.루트 다이어그램. 이를 통해 사용자는 패키지 빌드 방법을 정확하게 제어할 수 있습니다.
이 경로를 따라가면 패키지 구축을 단순화하여 시간을 절약하더라도 패키지 구축에 많은 시간을 소비할 준비가 되어 있어야 합니다. 나는 데비안에서 가장 복잡한 패키지를 관리하지 않지만, 내 패키지 중 하나는64비트 x86 빌더에서 빌드하는 데 2시간 이상 소요, 그리고느린 아키텍처에서 12시간 이상!
답변2
네 말 뜻은모두사람들은 패키지를 컴파일하기에 충분한 CPU/RAM/저장 공간/시간/지식을 가지고 있습니다. 아니요, 그렇지 않습니다. 그 반대가 사실입니다. 대부분의 사람들은 무언가가 컴파일될 때까지 몇 시간씩 기다리고 싶어하지 않습니다. Raspberry Pi에서 Firefox를 컴파일하는 데 몇 주가 걸릴 수 있습니다. 이거 괜찮아? 아니요.
두 번째 이유는 Linux 배포판이 정상적인 작동을 위해 통제되고 맬웨어가 없는 환경에서 소프트웨어 패키지를 구축하지만 최종 사용자가 제대로 실행된다는 보장이 없기 때문입니다.
배포판의 모든 사용자는 결국 정확히 동일한 코드를 실행하게 되는데, 이는 버그 보고 및 디버깅에 도움이 되지만, 소프트웨어를 직접 컴파일하기로 결정한 사용자에게는 그렇지 않을 수도 있습니다.
많은 최신 Linux 배포판은 보안 부팅을 지원합니다. 보안 부팅을 위해서는 최종 사용자에게 배포할 수 없는 키로 패키지에 서명해야 합니다. 이는 신뢰 체인이 완전히 깨졌음을 의미합니다.
Gentoo, LFS 또는 AUR 리포지토리를 사용하여 Arch Linux에서 모든 것을 빌드할 수 있습니다. 실제로 대부분의 배포판은 패키지를 컴파일할 수 있지만 위의 세 가지 배포판은 컴파일을 염두에 두고 만들어졌습니다.
답변3
하지만 직접 컴파일할 수 있는데 왜 미리 컴파일된 패키지를 "유지/제공"해야 합니까? 보유/제공하려는 의도는 무엇입니까?
간단한 경제학. 대규모 클러스터에서도 전체 배포판 패키지를 컴파일하는 데 몇 주가 걸리고 많은 에너지를 소비하며 많은 열이 발생합니다.
모든 사용자에게 반복해서 수행하는 것보다 이 작업을 한 번만 수행하는 것이 더 합리적입니다.
또한 기본 설치의 일부로 모든 패키지에서 사용하는 모든 프로그래밍 언어에 대한 모든 컴파일러를 포함해야 하기 때문에 기본 설치의 크기와 복잡성이 크게 증가합니다(따라서 공격 표면이 증가합니다!!!).
아주 아주 몇 년 전에는 정말 좋아했어요.처음부터 리눅스나는 기본 LFS 시스템의 전체 설치를 자동화하는 스크립트를 작성했습니다. 이틀 정도 진행되었는데, 기본 LFS 시스템은 다음과 같습니다.아주 기본적인체계. 여기에는 커널, libc, 쉘, 부트로더 및 일부 기본 도구가 포함되어 있습니다. 그게 전부입니다. 그래픽 환경 없음, 웹 브라우저 없음, 이메일 프로그램 없음, 오피스 제품군 없음, 멀티미디어 플레이어 없음, Java 환경 없음, Python/Ruby/PHP/Node.js/좋아하는 프로그래밍 언어가 무엇이든, 게임 없음, 사진 편집기 없음, 과학적인 도구도 없고 컴퓨터를 "유용하게" 만드는 모든 것이 실제로 있는 것도 아닙니다.
그 중 일부는 크기가 매우 커서 컴파일하는 데 오랜 시간이 걸립니다. 개별 패키지를 쉽게 픽업할 수 있습니다.주실행 중인 컴퓨터에 따라 컴파일됩니다. (라우터나 스마트워치를 생각해 보세요.)
답변4
나는 폐쇄된 환경에서 일한다. 당사 시스템 중 일부는 중요한 것으로 간주되어 잠겨 있습니다. 컴파일러와 디버거는 시스템에서 허용되지 않습니다.
이러한 패키지는 공급업체에서 제공한 그대로 설치됩니다.
소스에서 컴파일/설치하면 다음이 수행됩니다.
- 다른 사람이 알지 못하는 방식으로 소스 코드를 변경하여 패키지 기능을 변경할 수 있습니다.
- 기준선을 구축, 승격 및 설치하는 데 필요한 시간을 늘립니다. RTOS 환경에서는 중단을 최소화해야 합니다.
- 이러한 패키지는 항상 동일한(표준) 방식으로 컴파일됩니다. 컴파일러, 구성 파일 등의 변경에 대해 걱정할 필요가 없습니다.
즉, 모든 컴퓨터가정확히공급업체가 설치를 원하는 방식으로 동일한 패키지가 설치됩니다.