cargo install로 바이너리 설치
cargo install이 바이너리 크레이트를 로컬에 빌드·설치하는 경로를 이해하고 버전·PATH·업데이트 상태를 점검합니다.
러스트 학습이 중반을 넘으면, 직접 코드 작성뿐 아니라 개발 도구를 어떻게 관리할지도 중요해집니다.
cargo install은 그 지점에서 자주 만나게 되는 명령어입니다.
이 명령은 단순 설치 명령처럼 보이지만, 로컬 개발 환경 재현성과 생산성을 좌우하는 핵심 루틴이기도 합니다.
특히 팀 단위로 CLI 도구를 공유할 때는 설치 경로와 버전 관리 정책을 함께 이해해야 혼선을 줄일 수 있습니다.
이 절에서는 설치 방법만 보여주는 데서 끝내지 않고, 어떤 도구를 어떤 기준으로 설치해야 하는지도 함께 정리하겠습니다.
아울러 시스템 패키지 관리 도구와 Cargo 설치 범위를 구분해 충돌 위험을 줄이는 방법도 다룹니다.
PATH 설정이 잘못되었을 때 어떤 증상이 나타나는지 미리 알고 있으면 문제 해결 시간이 크게 단축됩니다.
이 관점을 익히면 새 개발 환경을 세팅할 때도 도구 설치를 반복 가능한 절차로 관리할 수 있습니다.
cargo install의 신뢰·버전·설치 경로 경계
ripgrep 패키지 선택→로컬 의존성 빌드→설치 root/bin의 rg→별도 PATH 찾기의 실행 파일 상태이다.
RUST · BINARY INSTALLATION
cargo install ripgrep은 rg를 설치하고 PATH는 따로 찾는다
본문의 실제 패키지와 실행 파일 이름을 연결합니다. 설치할 소스·버전, 빌드 코드, 설치 위치와 실행 검색을 각각 확인합니다.
선택 · ripgrep
cargo install ripgrep은 기본 crates.io에서 패키지를 고릅니다. 다른 registry·Git·path 소스도 선택할 수 있습니다.
빌드 · 실행 가능 target
기본으로 binary target을 빌드하고 설치합니다. 실행 가능한 example도 옵션으로 설치할 수 있습니다.
설치 · root/bin/rg
본문의 실행 파일 이름은 rg입니다. 설치 성공 뒤에도 rg --help가 PATH에서 올바른 파일을 찾는지 확인해야 합니다.
본문 · 설치와 실행
cargo install ripgrep
rg --help설치된 실행 파일 이름과 패키지 이름은 다를 수 있습니다. 일반 프로젝트의 라이브러리 의존성 선언과는 다른 작업입니다.
버전과 lockfile
--version 13.0.0 같은 완전한 버전은 그 패키지 버전을 고릅니다. --locked는 제공된 Cargo.lock이 있으면 그 의존성 해석을 사용합니다. 패키지 버전 선택과 의존성 고정은 별개입니다.
설치 위치와 PATH
설치 루트 우선순위는 --root → CARGO_INSTALL_ROOT → install.root 설정 → CARGO_HOME → 기본 ~/.cargo입니다. 명시 경로 실행과 PATH 발견을 각각 확인합니다.
빌드 코드와 교체
build script·proc macro 등은 빌드 중 사용자 권한으로 실행될 수 있습니다. 소스와 버전을 확인하고 설치합니다. --force는 기존 실행 파일의 덮어쓰기 정책이며 신뢰를 보장하지 않습니다.
기본 registry/Git 설치는 사용자·시스템 수준 Cargo 설정을 사용합니다. --path 설치는 해당 path의 로컬 설정을 사용할 수 있습니다. 기본은 binary이며 example 설치에는 옵션이 필요합니다.
이 예의 조건
- 본문과 원 도표에 제시된 사례의 입력·조건을 사용합니다. 설명용 수치나 독립 비교 경로는 각 단계에 표시합니다.
- 현재 상태·값과 전환 근거의 위치는 모든 단계에서 같습니다. 조건이 맞지 않거나 실행되지 않은 경로를 성공한 동작으로 해석하지 않습니다.
관계도의 보충 설명
| 범위 | 원문 |
|---|---|
| 관계·조건 설명 | 원래 가로 도표의 세 노드와 두 진행 간선이다. ripgrep 패키지의 선택 버전→패키지 및 의존성의 로컬 빌드→설치 루트의 bin/rg 파일로 이어진다. rg 호출의 PATH 검색은 별도이며 패키지명 ripgrep과 실행 파일명 rg를 동일시하지 않는다. 설치가 원격 소스의 신뢰나 코드 안전성을 자동 검증하지 않고 프로젝트의 라이브러리 의존성 선언을 대신하지 않는다. |
| 관찰·상황 | 값·보충 정보 | 변화·이유 |
|---|---|---|
| 패키지 선택 cargo install이 ripgrep을 빌드 입력으로 삼는다. |
|
|
| 빌드·설치 로컬 빌드 뒤 설치 root/bin에 rg를 둔다. |
|
|
| 명령 탐색 별도 실행에서 PATH가 rg를 찾는다. |
|
|
cargo install의 신뢰·버전·설치 경로 경계
ripgrep 패키지 선택→로컬 의존성 빌드→설치 root/bin의 rg→별도 PATH 찾기의 실행 파일 상태이다.
RUST · BINARY INSTALLATION
cargo install ripgrep은 rg를 설치하고 PATH는 따로 찾는다
본문의 실제 패키지와 실행 파일 이름을 연결합니다. 설치할 소스·버전, 빌드 코드, 설치 위치와 실행 검색을 각각 확인합니다.
선택 · ripgrep
cargo install ripgrep은 기본 crates.io에서 패키지를 고릅니다. 다른 registry·Git·path 소스도 선택할 수 있습니다.
빌드 · 실행 가능 target
기본으로 binary target을 빌드하고 설치합니다. 실행 가능한 example도 옵션으로 설치할 수 있습니다.
설치 · root/bin/rg
본문의 실행 파일 이름은 rg입니다. 설치 성공 뒤에도 rg --help가 PATH에서 올바른 파일을 찾는지 확인해야 합니다.
본문 · 설치와 실행
cargo install ripgrep
rg --help설치된 실행 파일 이름과 패키지 이름은 다를 수 있습니다. 일반 프로젝트의 라이브러리 의존성 선언과는 다른 작업입니다.
버전과 lockfile
--version 13.0.0 같은 완전한 버전은 그 패키지 버전을 고릅니다. --locked는 제공된 Cargo.lock이 있으면 그 의존성 해석을 사용합니다. 패키지 버전 선택과 의존성 고정은 별개입니다.
설치 위치와 PATH
설치 루트 우선순위는 --root → CARGO_INSTALL_ROOT → install.root 설정 → CARGO_HOME → 기본 ~/.cargo입니다. 명시 경로 실행과 PATH 발견을 각각 확인합니다.
빌드 코드와 교체
build script·proc macro 등은 빌드 중 사용자 권한으로 실행될 수 있습니다. 소스와 버전을 확인하고 설치합니다. --force는 기존 실행 파일의 덮어쓰기 정책이며 신뢰를 보장하지 않습니다.
기본 registry/Git 설치는 사용자·시스템 수준 Cargo 설정을 사용합니다. --path 설치는 해당 path의 로컬 설정을 사용할 수 있습니다. 기본은 binary이며 example 설치에는 옵션이 필요합니다.
이 예의 조건
- 본문과 원 도표에 제시된 사례의 입력·조건을 사용합니다. 설명용 수치나 독립 비교 경로는 각 단계에 표시합니다.
- 현재 상태·값과 전환 근거의 위치는 모든 단계에서 같습니다. 조건이 맞지 않거나 실행되지 않은 경로를 성공한 동작으로 해석하지 않습니다.
관계도의 보충 설명
| 범위 | 원문 |
|---|---|
| 관계·조건 설명 | 원래 가로 도표의 세 노드와 두 진행 간선이다. ripgrep 패키지의 선택 버전→패키지 및 의존성의 로컬 빌드→설치 루트의 bin/rg 파일로 이어진다. rg 호출의 PATH 검색은 별도이며 패키지명 ripgrep과 실행 파일명 rg를 동일시하지 않는다. 설치가 원격 소스의 신뢰나 코드 안전성을 자동 검증하지 않고 프로젝트의 라이브러리 의존성 선언을 대신하지 않는다. |
| 관찰·상황 | 값·보충 정보 | 변화·이유 |
|---|---|---|
| 패키지 선택 cargo install이 ripgrep을 빌드 입력으로 삼는다. |
|
|
| 빌드·설치 로컬 빌드 뒤 설치 root/bin에 rg를 둔다. |
|
|
| 명령 탐색 별도 실행에서 PATH가 rg를 찾는다. |
|
|
cargo install로 Crates.io에 있는 바이너리 설치하기
cargo install 명령어는 로컬 환경에 바이너리 크레이트를 설치하고 사용할 수 있도록 해줍니다.
이는 시스템 패키지를 대체할 의도는 아닙니다; 러스트 개발자들이 crates.io에서 공유하고 있는 도구를 편리하게 설치할 수 있도록 하기 위함입니다.
기본 설치 대상은 바이너리 타겟(binary target)입니다. 실행 가능한 example 타겟도 옵션을 지정하여 설치할 수 있습니다.
바이너리 타겟이란 src/main.rs 파일 혹은 따로 바이너리로 지정된 파일을 가진 크레이트가 생성해 낸 실행 가능한 프로그램을 말하는 것으로, 혼자서 실행될 수 없지만 다른 프로그램에 포함되기에 적합한 라이브러리 타겟과는 반대되는 의미입니다.
보통은 크레이트의 README 파일에 해당 크레이트가 라이브러리인지, 바이너리 타겟을 갖는지, 혹은 둘 다인지에 대한 정보가 담겨있습니다.
cargo install을 이용해 설치된 모든 바이너리는 설치 루트의 bin 디렉터리에 저장됩니다.
만약 여러분이 rustup.rs를 이용해 러스트를 설치했고 별도의 설정값 수정이 없었다면, 이 디렉터리는 $HOME/.cargo/bin일 것입니다.
cargo install로 설치한 프로그램을 실행하려면 $PATH 환경 변수에 해당 디렉터리가 등록되어 있는지 확인하세요.
예를 들면, 11장에서 파일 검색용 grep 도구의 러스트 구현체인 ripgrep이라는 게 있다고 언급했었지요.
ripgrep을 설치하려면 다음과 같이 하면 됩니다.
$ cargo install ripgrep
Updating crates.io index
Downloaded ripgrep v13.0.0
Downloaded 1 crate (243.3 KB) in 0.88s
Installing ripgrep v13.0.0
--snip--
Compiling ripgrep v13.0.0
Finished release [optimized + debuginfo] target(s) in 3m 10s
Installing ~/.cargo/bin/rg
Installed package `ripgrep v13.0.0` (executable `rg`)출력의 마지막 두 줄은 설치된 바이너리의 경로와 이름을 보여주는데, ripgrep의 경우에는 rg로군요.
위 13.0.0 로그는 당시 설치 결과의 예이며 현재 최신 버전이라는 뜻은 아닙니다. 같은 버전을 고르려면 cargo install ripgrep --version 13.0.0 --locked처럼 버전 요구와 lockfile 사용을 명시할 수 있습니다. 완전한 숫자 버전은 정확한 버전을 뜻하며, --locked는 패키지에 포함된 lockfile을 사용하도록 요청합니다. 원본 패키지의 lockfile 포함 여부·지원 툴체인·소스 취득도 확인해야 하고, 모든 환경에서 같은 실행 파일 바이트가 나온다는 보장은 아닙니다. 기본 설치는 포함된 lockfile을 그대로 사용하는 것으로 가정하지 않습니다.
설치 기록은 cargo install --list로, 실제 호출 경로는 Unix 셸의 command -v rg 또는 PowerShell의 Get-Command rg로 따로 확인합니다. 같은 이름의 시스템 설치판이 PATH 앞에 있다면 Cargo 설치가 성공해도 다른 rg가 실행될 수 있습니다. 이 절의 명령은 설치할 소스와 빌드 스크립트를 신뢰한 환경에서 따라 하는 절차이며, 설치 자체가 단순 파일 복사이거나 보안 검증을 대신하는 것은 아닙니다.
스스로 진단하기
가상 설치 기록에는 Cargo 설치판 rg 13.0.0이 있지만, 현재 셸의 PATH가 /usr/bin을 먼저 찾고 그곳의 rg는 12.0.0입니다. 일반 rg --version의 결과만으로 Cargo 설치 실패를 결론 낼 수 있나요? 어떤 두 정보를 대조해야 하나요? 또 라이브러리를 프로젝트의 의존성으로 쓰려는 목적에 cargo install이 맞는지도 설명하세요.
설치와 호출 경계 확인
설치가 실패했다고 단정할 수 없습니다. 설치 기록·설치 루트의 실행 파일과 현재 셸이 선택한 경로·그 파일의 버전을 따로 대조합니다. 이 조건에서 일반 rg는 시스템 경로의 12.0.0입니다. PATH를 의도에 맞게 설정하거나 설치된 파일의 경로로 직접 호출해야 합니다. 프로젝트가 가져올 라이브러리는 Cargo.toml의 의존성으로 선언하며, 실행 파일을 설치하는 명령이 그 의존성을 대신하지 않습니다.
버전·lockfile·설치 루트의 계약은 Cargo install을 참고하세요.
방금 전에 언급했듯 여러분의 $PATH 환경 변수에 설치된 디렉터리가 등록되어 있다면 명령창에서 rg --help를 실행할 수 있고, 파일을 찾을 때 더 빠르고 러스트다운 도구를 사용할 수 있습니다!
실수 방지 체크
이 절을 마친 뒤에는 기능 구현 여부만 보지 말고 아래 기준으로 품질을 점검합니다.
- 핵심 개념을 한 문장으로 설명할 수 있는지 확인합니다.
- 예제 코드를 그대로 복사한 뒤, 변수/조건을 바꿔도 의도가 유지되는지 점검합니다.
- 다음 절에서 재사용할 판단 기준(선택 이유, 트레이드오프)을 메모로 남깁니다.
cargo install은 설치 자체보다 설치된 실행 파일을 누가 관리하고, 어느 경로에서
찾히며, 어떤 버전으로 다시 맞출지를 함께 결정할 때 개발 환경 관리 도구가 됩니다.