dbt deps 명령어

dbt deps 명령어

dbt depspackages.yml에 나열된 의존성의 최신 버전을 가져와 프로젝트에 설치해요. package-lock.yml로 예측 가능하고 재현 가능한 설치를 보장하고, --add-package·--upgrade·--lock 같은 옵션으로 패키지 관리를 돕는 명령어예요.

출처: 문서

본문

dbt depspackages.yml에 나열된 의존성의 최신 버전을 git에서 가져와요. 자세한 내용은 Package-Management를 참고하세요.

관련이 있으면 dbt는 dbt Hub에 나열된 패키지의 최신 버전 및/또는 최신 버전을 표시해요. 아래 예시예요.

이는 git/local을 통해 설치한 패키지에는 적용되지 않아요

packages:
  - package: dbt-labs/dbt_utils
    version: 0.7.1
  - package: brooklyn-data/dbt_artifacts
    version: 1.2.0
    install-prerelease: true
  - package: dbt-labs/codegen
    version: 0.4.0
  - package: calogica/dbt_expectations
    version: 0.4.1
  - git: https://github.com/dbt-labs/dbt_audit_helper.git
    revision: 0.4.0
  - git: "https://github.com/dbt-labs/dbt_labs-experimental-features" # git URL
    subdirectory: "materialized-views" # name of subdirectory containing `dbt_project.yml`
    revision: 0.0.1
  - package: dbt-labs/snowplow
    version: 0.13.0
Installing dbt-labs/[email protected]
  Installed from version 0.7.1
  Up to date!
Installing brooklyn-data/[email protected]
  Installed from version 1.2.0
Installing dbt-labs/[email protected]
  Installed from version 0.4.0
  Up to date!
Installing calogica/[email protected]
  Installed from version 0.4.1
  Up to date!
Installing https://github.com/dbt-labs/[email protected]
  Installed from revision 0.4.0
Installing https://github.com/dbt-labs/[email protected]
  Installed from revision 0.0.1
   and subdirectory materialized-views
Installing dbt-labs/[email protected]
  Installed from version 0.13.0
  Updated version available: 0.13.1
Installing calogica/[email protected]
  Installed from version 0.4.0
  Up to date!

Updates available for packages: ['tailsdotcom/dbt_artifacts', 'dbt-labs/snowplow']
Update your versions in packages.yml, then run dbt deps

예측 가능한 패키지 설치

dbt는 프로젝트 루트에 package-lock.yml 파일을 생성해요. 이 파일은 packages.yml 또는 dependencies.yml 파일에 정의된 모든 패키지의 정확히 해결된 버전(커밋 SHA 포함)을 기록해요. package-lock.yml은 모든 환경에서 일관되고 재현 가능한 설치를 보장해요.

dbt deps를 실행하면 dbt는 package-lock.yml에 잠긴 버전을 기준으로 패키지를 설치해요. 즉 패키지 파일이 바뀌지 않는 한, 더 새 버전이 출시됐어도 정확히 동일한 의존성 버전이 설치돼요. 이 일관성은 개발·프로덕션 환경의 안정성을 유지하고, 버그가 있을 수 있는 새 릴리스로 인한 예기치 못한 문제를 방지하는 데 중요해요.

packages.yml 파일이 바뀌면(예: 새 패키지 추가 또는 버전 범위 업데이트) dbt deps는 자동으로 새 의존성 집합을 해결하고 잠금 파일을 그에 맞게 업데이트해요. dbt deps --upgrade를 실행해 수동으로 업그레이드를 촉발할 수도 있어요.

일관성을 유지하려면 package-lock.yml 파일을 버전 관리에 커밋하세요. 이는 모든 환경과 모든 개발자 간 일관성을 보장해요.

package-lock.yml 관리

package-lock.yml 파일은 처음에 Git에 커밋하고, 버전을 바꾸거나 패키지를 제거하려 할 때만 업데이트해야 해요. 예를 들어 dbt deps --upgrade로 업데이트된 패키지 버전을 받거나 dbt deps --lock으로 패키지를 설치하지 않고 packages config 변경에 따라 잠금 파일을 업데이트할 수 있어요.

package-lock.yml 사용을 완전히 건너뛰려면 프로젝트의 .gitignore에 추가할 수 있어요. 하지만 이 방식은 빌드의 예측 가능성을 희생해요. 이 경로를 선택한다면 서드파티 패키지에 버전 고정(pin)을 추가하는 것을 강력히 권장해요.

packages config 변경 감지

package-lock.yml 파일에는 packages config의 sha1_hash가 포함돼요. packages.yml을 업데이트하면 dbt가 변경을 감지하고 다음 dbt deps 명령어에서 의존성 해석을 다시 실행해요. 새 패키지를 설치하지 않고 잠금 파일을 업데이트하려면 --lock 플래그를 사용하세요:

dbt deps --lock

패키지 업데이트 강제

packages.yml이 바뀌지 않았어도 모든 패키지를 업데이트하려면 --upgrade 플래그를 사용하세요:

dbt deps --upgrade

이것은 내부 관리되는 Git 패키지의 main 브랜치에서 최신 커밋을 가져올 때 특히 유용해요.

warning 신중하게 관리하지 않으면 강제 패키지 업그레이드는 빌드 불일치를 가져올 수 있어요.

특정 패키지 추가

dbt deps 명령어는 정확한 문법을 기억할 필요 없이 패키지 구성을 직접 추가·업데이트할 수 있어요.

Hub 패키지(기본값)

Hub 패키지는 기본 패키지 유형이며 설치하기 가장 쉬워요.

dbt deps --add-package dbt-labs/[email protected]

# with semantic version range
dbt deps --add-package dbt-labs/snowplow@">=0.7.0,<0.8.0"

비-Hub 패키지

--source 플래그를 사용해 설치할 패키지 유형을 지정하세요:


# Git package
dbt deps --add-package https://github.com/fivetran/[email protected] --source git

# Local package
dbt deps --add-package /opt/dbt/redshift --source local

(dbt v2.0 이상 적용)

에이전트 스킬 설치

ai_provider 플래그를 설정하면 dbt deps는 프로젝트와 그 패키지가 제공하는 에이전트 스킬도 설치해서, 코딩 에이전트가 읽는 디렉터리에 기록해요:

Installing add-a-data-test (demo_skills) -> .claude/skills
Installing naming-conventions (demo_skills) -> .claude/skills

ai_provider가 없으면 dbt deps는 평소처럼 패키지를 설치하고 스킬은 기록하지 않아요.

더 알아보기 (Learn more)