피드로 돌아가기
Dev.toInfrastructure
원문 읽기
apt-mark hold 오용으로 인한 OpenSSH 삭제 위기 및 Pinning 전환을 통한 해결
apt-mark hold doesn't pin versions — how it nearly removed OpenSSH across our fleet
AI 요약
Context
레거시 PECL ssh2 호환성을 위해 libssl3와 openssl 버전을 특정 릴리스로 유지해야 하는 환경임. 단순 버전 고정을 위해 apt-mark hold를 적용했으나, 이는 자동 업데이트만 방지할 뿐 의존성 해결 과정에서의 패키지 제거를 막지 못하는 구조적 한계가 존재함.
Technical Solution
apt-mark hold가 버전 고정이 아닌 자동 업그레이드 방지 기능임을 식별하여 의존성 충돌 시 패키지 삭제 가능성 파악libssl3다운그레이드 시 최신openssh-server와의 의존성 불일치로 인한 7개 핵심 패키지 제거 시도 확인- 개별 패키지 홀드 대신 관련 패키지 그룹(libssl3, openssl, openssh-server/client/sftp)을 하나의 트랜잭션으로 묶어 동시 다운그레이드 수행
--allow-change-held-packages옵션을 통한 강제 버전 조정으로 런타임 서비스 중단 방지- 최상위 우선순위(Priority 1001)를 부여하는 APT Pinning 설정을 통해 의존성 유지를 보장하는 강제 버전 고정 아키텍처로 전환
실천 포인트
- 패키지 버전 고정 필요 시 `apt-mark hold` 대신 `/etc/apt/preferences.d/`를 통한 APT Pinning 사용 검토 - 인프라 업데이트 자동화 파이프라인에 `apt --simulate` 결과 분석 단계를 포함하여 의존성 제거 위험 사전 탐지 - 하위 라이브러리 다운그레이드 시 상위 의존 패키지들을 동일 트랜잭션 내에서 그룹 단위로 업데이트/다운그레이드 처리