패키지 관리 생태계의 주요 구성 요소
패키지 관리 환경은 다양한 계층과 목적을 가진 도구들로 이루어져 있으며, 핵심 범주별로 다음과 같습니다.
1. 언어별 패키지 관리자
각 프로그래밍 언어는 고유한 패키지 관리 시스템을 가집니다.
-
JavaScript/TypeScript: npm, Yarn, pnpm, Bun
-
Python: pip, Poetry, uv, Conda
-
Ruby: RubyGems, Bundler (Molinillo 사용)
-
Java/JVM: Maven, Gradle
-
**C
/.NET**: NuGet
-
Rust: Cargo
-
Go: Go modules
-
PHP: Composer
2. 시스템 및 범용 패키지 관리자
운영 체제 수준의 소프트웨어 관리 및 언어 경계를 넘는 환경 관리를 담당합니다.
-
시스템: apt, dpkg (Debian/Ubuntu), dnf, yum (Fedora/RHEL), Homebrew (macOS), winget (Windows)
-
범용: Nix (재현 가능한 환경), asdf (버전/환경 관리), Docker Hub (컨테이너 레지스트리)
3. 의존성 해결 및 파싱 라이브러리
버전 제약 조건 해결 및 매니페스트 파일 분석을 위한 핵심 구성 요소입니다.
-
의존성 해결: PubGrub (Dart, Poetry, 최신 Bundler), libsolv (DNF, Conda), Molinillo (오래된 Bundler, Ruby 최적화)
-
매니페스트 파싱: bibliothecary (Ruby 라이브러리), syft, osv-scalibr
4. 보안 및 공급망 도구
의존성 취약점 스캔, SBOM(Software Bill of Materials) 생성, 그리고 신뢰할 수 있는 발행 메커니즘을 제공합니다.
-
취약점 스캐닝: Snyk, Grype, Trivy, npm audit, bundler-audit, OSV-Scanner
-
SBOM 생성: Syft, Trivy, CycloneDX tools, SPDX tools
-
신뢰할 수 있는 발행: Sigstore (npm, PyPI), TUF (PyPI, RubyGems), in-toto
5. 기타 주요 영역
-
레지스트리 소프트웨어: Verdaccio (npm), devpi (PyPI), Gemstash (Gem)
-
엔터프라이즈 도구: JFrog Artifactory, Sonatype Nexus
-
모노레포 도구: Turborepo, Nx, Lerna
-
표준: PURL, CVE, CycloneDX, SPDX, SLSA, SemVer