종속성을 설치하지 않도록 강제로 apt /yum

종속성을 설치하지 않도록 강제로 apt /yum

패키지를 설치할 때 설치 여부를 apt알려주 는 명령줄 옵션이 있습니까?yumDepends

Python/pip에서는 다음과 같이 할 수 있습니다.

pip3 install --no-deps -r requirements.txt

근본적인

우리는 정기적으로 도커 이미지를 구축합니다. 이 파일에는 apt특정 버전을 첨부하지 않고 패키지를 설치하는 방법에 대한 지침이 있습니다 . 우리 잘못도 아닌데 갑자기 테스트가 중단되기 시작했기 때문에 프로세스가 매우 불안정했습니다. 우리는 패키지를 테스트된 특정 버전에 고정하고 싶습니다.

예:

$ sudo apt-get install python3=3.5.1-3

문제는 필수 패키지를 특정 버전으로 설정하더라도 해당 패키지 내에 제어할 수 없는 종속성이 있다는 것입니다. 이러한 정보는 언제든지 업데이트될 수 있으며 러그는 사용자 아래에서 제거됩니다.

우리는 각 패키지를 전체 종속성 목록으로 분류한 다음 apt/yum에 해당 목록만 설치하고 다른 것은 설치하지 않도록 지시하고 싶습니다. 우리는 항상 개발자가 이러한 패키지의 버전을 고정하도록 강요할 수 있습니다(특히 pip의 요구 사항.txt와 같이 모든 버전을 하나의 파일에 저장하는 경우).

답변1

이는 귀하가 언급한 문제에 대한 답변은 아니지만 근본적인 상황을 해결하는 데 도움이 될 것입니다.

버전 불변 패키지 소스가 필요한 경우 전통적인 솔루션은 비공개 패키지 저장소를 사용하는 것입니다. 즉, 선택한 배포판의 저장소를 미러링한 다음 그대로 유지하고 패키지를 부분적으로만 변경합니다. 후자 부분은 테스트에서 가장 고통스러운 부분입니다. 왜냐하면 다양한 테스트 시나리오는 일반적으로 공통 기본 저장소와 비교하여 다른 패키지 업그레이드가 필요하고 결국 여러 저장소를 유지 관리하게 되기 때문입니다.

컨테이너는 이미지 레지스트리와 결합될 때 더 간단한 솔루션을 제공합니다. 평소대로 기본 테스트 이미지를 빌드하고 모든 테스트 종속성을 포함합니다.

FROM debian:10
RUN apt update && apt upgrade && apt install ...

이를 빌드하고 적절한 태그(날짜, 더 좋지 않은 경우)를 사용하여 (개인) 레지스트리에 푸시하십시오. 그러면 테스트 장면은 변경되지 않는 해당 이미지를 기반으로 할 수 있습니다. 특정 패키지를 업그레이드해야 한다고 결정한 경우 새 이미지를 사용하고 기본 이미지에 적절한 종속성을 만듭니다.

FROM testbase:20200229
RUN apt update && apt install ...

그런 식으로 업그레이드(또는 설치)하려는 패키지만 나열하세요. 그렇지 않으면 해당 패키지만 업그레이드됩니다.필요하다자체 종속성에 최신 패키지를 포함합니다. 이 경우 패키지도 함께 포함됩니다(그러나 이를 피할 수 있는 쉬운 방법은 없으므로 어쨌든 처리해야 합니다).

적절한 태그가 지정된 이미지를 참조하는 한 기존 테스트에 영향을 주지 않고 기본 테스트 이미지를 주기적으로 다시 빌드하고 푸시할 수 있습니다.

답변2

종속성을 선언하는 이유는 이러한 항목을 패키징하는 사람이 특정 버전에서 해당 항목을 필요로 하기 때문입니다. 물론 너무 멀리 가서 필요하지 않은 것을 요청할 수도 있고, 이전 버전이 잘 작동하는데 새 버전을 요청할 수도 있습니다. 그러나 가능한 모든 시나리오를 확인하는 것은 많은 작업이며 패커에게는 시간이 제한되어 있습니다. 합리적이라면 "xyz 버전 5.3 이상" 형식이어야 하며 이후 버전에서도 작동합니다.

요청된 종속성을 설치하지 않으면 완전히 테스트되지 않은 영역에 갇히게 됩니다. 잘 작동할 수도 있지만 신비한 방식으로 부서지거나 바로 눈앞에서 폭발할 수도 있습니다.

관련 정보