[Rust 공식문서 한국어 정리] 87. Rust Cargo.lock 가이드
[Rust 공식문서 한국어 정리] 87. Rust Cargo.lock 가이드
원문 제목: Cargo.toml vs Cargo.lock
작성자: The Rust Project
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 1. 서론 — 이 문서가 다루는 내용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Cargo.toml과 Cargo.lock의 역할 차이와 사용 목적을 명확히 합니다.
lock 파일이 의존성 재현성을 보장하는 원리를 설명합니다.
애플리케이션과 라이브러리 프로젝트에서 lock 파일을 다루는 방식을 비교합니다.
lock 파일 업데이트와 버전 고정 전략을 학습합니다.
의존성 관리에서 발생할 수 있는 혼란을 방지하는 방법을 정리합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔑 2. 핵심 개념 4가지
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① Cargo.toml — 의존성 요구사항(범위) 선언
② Cargo.lock — 실제 설치된 정확한 버전 기록
③ 재현성(Reproducibility) — 동일한 빌드 결과 보장
④ cargo update — lock 파일의 의존성을 최신으로 갱신
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📖 3. 주요 내용 상세
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Cargo.toml은 의존성의 허용 범위를 기술하는 파일입니다.
예를 들어 serde = "1.0"이라고 적으면 1.0.0 이상 2.0.0 미만의 버전이 허용됩니다.
Cargo.lock은 cargo가 실제로 해결한 각 크레이트의 정확한 버전과 체크섬을 기록합니다.
lock 파일이 있으면 다른 개발자나 CI 환경에서도 동일한 버전이 설치됩니다.
바이너리(애플리케이션) 프로젝트에서는 Cargo.lock을 버전 관리에 포함해야 합니다.
라이브러리 프로젝트에서는 Cargo.lock을 무시해도 됩니다.
라이브러리는 최종 애플리케이션의 lock 파일에 의해 버전이 결정되기 때문입니다.
cargo update 명령은 lock 파일의 의존성을 Cargo.toml 범위 내에서 최신으로 갱신합니다.
cargo update -p 로 특정 패키지만 업데이트할 수 있습니다.
lock 파일이 없는 상태에서 cargo build를 실행하면 최신 버전으로 새 lock 파일이 생성됩니다.
의존성 버전 충돌이 발생하면 Cargo는 SemVer 규칙과 lock 파일을 함께 고려하여 해결합니다.
--locked 플래그를 사용하면 lock 파일과 일치하지 않으면 빌드를 실패시킵니다.
--offline 모드에서는 인터넷 없이 lock 파일에 기록된 버전만 사용합니다.
패키지 체크섬은 다운로드한 파일이 변조되지 않았음을 검증합니다.
의존성 그래프는 여러 패키지가 공통 의존성을 가질 때 중복을 최소화하여 해결합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🛠 4. 실전 활용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
애플리케이션 프로젝트는 Cargo.lock을 Git에 커밋하여 팀 전체가 동일 환경을 유지합니다.
보안 패치를 위해 cargo update -p 로 선택적으로 갱신합니다.
CI에서는 cargo build --locked로 lock 파일 불일치를 즉시 감지합니다.
라이브러리 개발 시에는 lock 파일을 .gitignore에 추가합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 5. 정리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Cargo.toml은 의존성의 유연성을 제공하고 Cargo.lock은 재현성을 보장합니다.
프로젝트 유형에 따라 lock 파일 관리 전략을 달리해야 합니다.
정확한 버전 관리는 배포 안정성과 보안의 기초가 됩니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 출처 링크
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
원문: https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo Guide: https://doc.rust-lang.org/cargo/guide/
#Rust #Cargo #CargoLock #의존성관리 #번역

오뉴노노 님의 최근 댓글
ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30