다양한 배포판이 해당 저장소에서 사용 가능한 패키지를 패치한다는 것을 알고 있지만 이것이 왜 필요한지 이해하지 못했습니다. 누구든지 관련 온라인 문서를 설명하거나 알려주시면 감사하겠습니다. 감사해요.
답변1
몇 번 시도했지만 이제 질문하신 내용을 이해한 것 같습니다.
배포판이 특정 소프트웨어를 패키징하기 전에 패치하는 데에는 여러 가지 이유가 있습니다. 나는 비배타적 목록을 제공하려고 노력할 것입니다. 다른 가능한 이유가 있을 것이라고 확신합니다.
이 논의의 목적에 따라 "업스트림"은 소프트웨어 공식 개발자의 원본 소스 코드를 의미합니다.
어떤 이유로든 업스트림 패치가 마스터 브랜치에 병합되지 않았습니다(또는 아직 병합되지 않았습니다). 일반적으로 이는 패키지의 배포 패키지 관리자가 위의 패치가 가치 있다고 느끼거나 배포의 연속성을 유지하는 데 필요하기 때문입니다(웹 서버가 있고
php
의존해왔던 몇 가지 기능을 작업 중이라고 가정). 루틴 업데이트 후)가 더 이상 작동하지 않거나 이전 스타일에서 구성 파일을 읽을 수 없습니다.Distros는 파일 시스템 계층에 대해 표준화된 패턴을 선호하는 경향이 있습니다
/etc/
. 각 소프트웨어 개발자는 올바른 표준을 구성하는 것이 무엇인지에 대한 자신의 아이디어를 가질 수도 있고 그렇지 않을 수도 있습니다. 따라서 배포판 관리자가 가장 먼저 해야 할 일은 배포판의 나머지 부분에 해당하는 계층적 패턴으로 해당 구성 파일을 구성하고 예상하도록 빌드 스크립트를 패치하는 것입니다.구성 주제를 계속해서 설명하자면, 첫 번째 "패치"는 배포판의 나머지 부분과 함께 "즉시" 작동하는 기본 구성 파일 세트인 경향이 있습니다. 즉, 최종 사용자가 배포 후 즉시 사용할 수 있도록 합니다. 작업 구성을 수동으로 정렬할 필요가 없습니다.
이것이 내 생각이다. 아마도 다른 것들도 있을 것입니다. 그러나 이것이 여러분에게 몇 가지 아이디어를 제공해주기를 바랍니다.
답변2
@Shadur의 답변 외에도 내 머리 꼭대기에서 :
- 일부 배포판에서는 다른 패키지에서 제공하는 내장 라이브러리나 파일의 사용을 권장하지 않습니다. 예를 들어, 많은 소프트웨어에는 JQuery가 내장되어 있지만 데비안에는 이를 제공하는 libjs-jquery 패키지가 있습니다.
- 업스트림은 최신 라이브러리에 대한 종속성과 같이 이전 버전과 호환되지 않는 변경 사항과 보안 패치를 혼합하는 경우가 많습니다. 보다 정확한 인증서 확인을 위해 전체 배포판에 대한 광범위한 변경을 방지하기 위해 패키지 관리자는 보안 패치만 선택하도록 선택할 수 있습니다.
- 업스트림 소프트웨어는 다른 소프트웨어와 충돌할 수 있습니다. 예를 들어 경로는 동일하지만 콘텐츠가 다른 파일을 제공할 수 있습니다. 이 충돌을 해결하려면 다른 곳에서 파일을 찾기 위한 패치가 필요할 수 있습니다.
- 업스트림은 패키지를 설치하고 제거할 때 오류가 발생하기 쉬운 다른 소프트웨어 구성 파일에 무언가를 수동으로 추가하기 위한 지침에 만족하는 경우가 많으므로 배포판에서는 *.d 디렉터리에 있는 조각 파일을 사용하는 것을 선호할 수 있습니다.
- 업스트림의 일부 부분은 배포판 라이센스와 호환되지 않을 수 있으므로 패키지 관리자는 문제가 있는 부분을 패치하기로 결정할 수 있습니다.
- 업스트림 사용에서는 다른 소프트웨어(예: Apache)에 특정한 경로를 가정하지만 관리자는 해당 경로가 일반 웹 서버를 지원하기를 원합니다.
- 때로는 업스트림 개발자가 더 이상 통신하지 않고 소프트웨어가 중단되어 제대로 실행되도록 패치가 필요한 경우도 있습니다.
답변3
답변4
가장 긴급한 이유:빌드 오류입니다.
- 어쩌면 업스트림이 문제를 해결할 때까지 기다리고 싶지 않을 수도 있습니다(수정 사항이 분명하다고 가정할 경우).
- 분명히 필요한데도 어떤 이유로든 업스트림에서 수정 사항을 받아들이지 않을 수도 있습니다.
- 어쩌면 유지 관리가 전혀 없을 수도 있습니다.