시나리오: Puppet, Chef 등 버전 제어 기반의 시스템 구성에서 특정 시스템 상태를 재현해야 합니다. 이는 시스템 패키지 버전을 명시적으로 지정하여 수행됩니다.
최근 Debian 리포지토리에서 특정 패키지 버전이 누락되는 문제가 발생했습니다. 예를 들어 버전 2.7.5-1+deb9u1에는 "패치" 패키지가 필요하지만 2.7.5-1+deb9u2만 사용할 수 있습니다. 또 다른 더 심각한 예: "linux-headers-4.9.0-9-common"이 필요하며(관련 커널 설치로 인해) "linux-headers-4.9.0-11-common"만 사용할 수 있습니다.
이로 인해 시스템의 특정 상태를 재현하는 것이 불가능해집니다.
위의 패키지는 (제가 실제로 접한) 예시일 뿐입니다. 나는 일반적인 문제를 이해하고 해결하는 데 관심이 있습니다.
이렇게 업데이트되어 "사라지는" 패키지와 패키지 버전 뒤에 숨어 있는 아이디어는 무엇입니까?
이전 버전(실제로는 이전 버전이 아니라 몇 주 전 버전)의 데비안 패키지를 어디서 구할 수 있나요? 일반적인 방법으로 설치 프로세스를 자동화할 수 있어야 합니다.
답변1
특정 설정을 정확한 버전까지 재현하는 기능은 다음과 같습니다.당신의데비안 요구사항이 아닌 요구사항입니다.
데비안은 특정 버전에서 각 바이너리 패키지의 단일 버전만 지원합니다. 이와 대조적으로 특정 버전의 패키지 업데이트로 인해 회귀가 발생하지 않도록 주의를 기울이고 이것이 불가능할 경우 이 사실을 기록하십시오. 특정 패키지의 여러 버전을 유지하면 지원 부담과 테스트 요구 사항만 증가합니다. 예를 들어 패키지 관리자는 현재 지원되는 버전뿐만 아니라 사용 가능한 모든 버전의 라이브러리에 대해 업데이트된 패키지를 테스트해야 합니다.... 정말로 필요할 때 안정 릴리스의 패키지를 업데이트합니다.즉중요한 버그(보안 문제 포함)를 수정합니다. 커널의 경우 이는 때때로 커널 ABI가 변경됨을 의미하므로 ABI를 하드 코딩하는 대신(종속 패키지를 강제로 다시 빌드하기 위해) 일부 메타데이터 linux-image-amd64
를 linux-headers-amd64
도입할 수 있습니다. 패키지.
그러나 귀하의 상황에 대한 해결 방법이 있습니다. 게시된 모든 소스 코드와 바이너리 패키지는 다음 위치에 보관됩니다.snapshot.debian.org. 버전이 지정된 설정을 생성할 때 해당 스냅샷을 선택할 수 있습니다(예: 다음 중 하나).2019년 9월 스냅샷) 이를 저장소 URL로 사용합니다.
deb https://snapshot.debian.org/archive/debian/20190930T084755Z/ buster main
결국 이것에 의존하게 된다면, 다음과 같은 일종의 캐시 미러를 사용하십시오.적절한-CacherNG. 이렇게 하면 스냅샷 서버의 로드가 줄어들 뿐만 아니라 필요한 모든 패키지의 로컬 복사본이 확보됩니다.
(관련 상황원천패키지는 좀 더 복잡하며 라이센스 종속성으로 인해 아카이브에는 특정 버전의 일부 소스 패키지의 여러 버전이 포함되어 있습니다. 그러나 그것은 이것과 아무 관련이 없습니다. 엄밀히 말하면 데비안은 지원되는 릴리스에서 일부 바이너리의 여러 버전을 제공합니다. 현재 포인트 릴리스의 현재 버전과 보안 저장소의 업데이트 및 다음 릴리스 포인트의 업데이트 저장소를 접습니다. 따라서 릴리스될 때마다 포인트 버전을 업데이트하는 한 스냅샷을 사용하지 않고도 반복 가능한 버전 제어 시스템 구성을 유지할 수 있습니다. )
답변2
특정 시스템 상태를 재현하기 위해 사용자가 제어할 수 없는 서버에 의존하지 마십시오. 데비안 서버는 매우 안정적이지만 미래에 무슨 일이 일어날지 알 수 없습니다. 이는 특히 사용할 수 있는 다른 저장소와 관련이 있습니다.
재현 가능한 시스템 상태를 얻으려면 자신의 이미지를 유지 관리해야 합니다. 이렇게 하면 일반 시스템의 프로덕션 상태와 새 구성의 여러 테스트 상태를 가질 수도 있습니다.
저장소 관리 도구적절하게저장소의 미러를 생성하는 기능. 미러링할 패키지를 선택하고, 특정 시점에 저장소 콘텐츠의 스냅샷을 생성하고, 여러 미러 또는 스냅샷을 단일 저장소로 병합할 수 있습니다. 이렇게 하면 완전히 재현 가능한 시스템 상태를 얻을 수 있습니다.
답변3
하지만스티븐 키트의 답변물론 가능한 해결책은 필요한 패키지의 복사본을 직접 보관하는 것이 더 안전하다고 생각합니다.
시스템 설정을 기록할 때 반드시 .deb
저장하여 /var/cache/apt/archives/
사용할 수도 있습니다 apt-get download
.
apt
잠재적으로 위험한 자동화 작업이 실행되지 않도록 하려면 시스템 설정을 복원할 때 매우 엄격해야 합니다 .
dpkg
원하는 것을 직접 설치하는 것이 더 쉬울 수도 있습니다.