PyPI 재현 가능한 빌드를 위한 핵심 요소

What's missing to have reproducible builds on PyPI

PyPI 재현 가능한 빌드를 위한 핵심 요소

Python 패키징 생태계에서 재현 가능한 빌드를 구현하려면 배포판에 소스 코드 위치와 빌드에 사용된 모든 소프트웨어(SBOM)를 기록해야 합니다. 현재 sdists는 SBOM을 담을 구조가 없어 sdist v2가 필요하며, 빌드 백엔드가 환경 정보를 기록하면 생산자의 추가 작업 없이도 가능합니다. 신뢰할 수 있는 검증자가 PyPI에 재현 성공을 알리면 사용자는 배포판의 무결성을 확인할 수 있습니다.

SolarWinds는 빌드 과정에 악성 코드가 주입되어 공격을 받았습니다.
  1. edelbitter

    > 이 파일은 <신뢰할 수 있는 기관의 이름>에 의해 독립적으로 재현되었습니다.

    검증자가 무엇을 해야 하는지에 대한 강력한 정책이 없다면 위험하게 들립니다.

    예를 들어, 검증자가 빌드 봇에 네트워크 접근 권한을 부여하고 그 결과가 어떻게 보여야 하는지 확인하게 한다면, 손상은 눈에 띄지 않을 수 있고 라벨은 조용히 "독립적으로 다운로드됨"으로 격하될 수 있습니다.

    그리고 저는 자신의 필요 이상으로 그러한 서비스를 제공하려는 기관이 많지 않을 것이라고 생각합니다. 동시에 이미 인프라와 정책이 마련된 곳(예: Debian)에서 그러한 서비스를 제공하지 않는 기관도 마찬가지입니다. 또는 적어도 다른 모든 버전 업데이트에서 재현성을 깨지 않는 빌드 의존성에 기여할 것입니다.

  2. whateverboat

    Python의 경우, 실제로 유용한 방식으로 재현 가능한 빌드를 수행하는 것은 매우 어려워 보입니다. Python 휠은 다른 곳에서는 발생하지 않는 경로와 환경에 대한 매우 암묵적인 가정을 가지고 있기 때문입니다.

  3. crabbone

    이 사람들은 환상의 나라에 너무 깊이 빠져 있습니다...

    > 따라서 우리는 어깨를 으쓱하며 "재현 가능한 빌드를 원한다면 sdist를 사용하지 마세요"라고 말해야 합니다.

    이게 뭐야, 도대체... 소스를 다운로드했다면 재현 가능한 빌드의 산출물을 어떻게 기대할 수 있겠습니까?

    그리고 가장 중요한 것은, 이 모든 이야기는 "순수한"(Python 전용) 패키지에 관한 것입니다. 이것은 실제로 대부분의 실제 Python 프로젝트에는 거의 가치가 없습니다. 왜냐하면 그들은 네이티브 바인딩에 의존하기 때문입니다. PyPI가 그것들을 빌드할 수 있을 것이라고 왜 기대해야 하는지, 그것들을 빌드하는 표준 절차가 존재하지 않는데, 이해할 수 없습니다.

이 날의 다른 글

2026-08-20