cargo install로 바이너리 설치
cargo install이 바이너리 크레이트를 로컬에 빌드·설치하는 경로를 이해하고 버전·PATH·업데이트 상태를 점검합니다.
cargo install 명령은 바이너리 크레이트를 로컬에 설치해 쓸 수 있게 해 줍니다. 이 명령은 시스템 패키지를 대신하려는 것이 아니라, 러스트 개발자가 crates.io에 공유한 도구를 편하게 설치하게 해 주려는 것입니다. 아래 그림은 cargo install이 패키지를 받아 실행 파일을 설치하기까지와, 설치한 파일을 셸이 찾는 일을 나누어 보여 줍니다.
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 ripgrep은 기본으로 crates.io에서 ripgrep 패키지의 버전을 골라, 그 패키지와 의존성을 로컬에서 빌드하고, 설치 루트의 bin 폴더에 실행 파일 rg를 둡니다. 패키지 이름은 ripgrep이고 실행 파일 이름은 rg로, 둘이 다를 수 있습니다. 설치한 뒤에 rg를 실행했을 때 셸이 PATH에서 그 파일을 찾는 일은 설치와 별개입니다. 또 설치한다고 해서 내려받은 소스를 믿어도 되는지나 코드가 안전한지를 저절로 검사해 주지는 않으며, 프로젝트의 Cargo.toml에 라이브러리 의존성을 적는 일과도 다릅니다.
cargo install로 Crates.io에 있는 바이너리 설치하기
cargo install로는 바이너리 대상(binary target)이 있는 패키지만 설치할 수 있습니다. 바이너리 대상은 크레이트에 src/main.rs 파일이나 바이너리로 지정한 다른 파일이 있을 때 만들어지는 실행할 수 있는 프로그램으로, 그 자체로는 실행할 수 없고 다른 프로그램에 넣어 쓰는 라이브러리 대상과 대비됩니다. 크레이트가 라이브러리인지, 바이너리 대상이 있는지, 둘 다인지는 보통 크레이트의 README 파일에 나와 있습니다. 실행할 수 있는 예제(example) 대상도 옵션을 주면 설치할 수 있습니다.
cargo install로 설치한 바이너리는 모두 설치 루트의 bin 폴더에 저장됩니다. rustup으로 러스트를 설치했고 따로 설정을 바꾸지 않았다면, 이 폴더는 $HOME/.cargo/bin입니다. cargo install로 설치한 프로그램을 실행하려면 이 폴더가 $PATH에 들어 있는지 확인하세요.
예를 들어 커맨드 라인 인수 받기에서, 파일을 검색하는 grep 도구를 러스트로 구현한 ripgrep이 있다고 했습니다. ripgrep을 설치하려면 다음을 실행합니다.
cargo install ripgrep Updating crates.io index
Downloaded ripgrep v14.1.1
Downloaded 1 crate (213.6 KB) in 0.40s
Installing ripgrep v14.1.1
--생략--
Compiling grep v0.3.2
Finished `release` profile [optimized + debuginfo] target(s) in 6.73s
Installing ~/.cargo/bin/rg
Installed package `ripgrep v14.1.1` (executable `rg`)결과의 마지막에서 두 번째 줄은 설치한 바이너리의 위치와 이름을 보여 주며, ripgrep의 경우 이름은 rg입니다. 버전과 걸린 시간은 설치하는 시점과 환경에 따라 다르며, 이 결과의 버전이 지금의 최신 버전이라는 뜻은 아닙니다. 앞에서 말했듯 설치 폴더가 $PATH에 들어 있다면, rg --help를 실행해 파일을 검색하는 더 빠르고 러스트다운 도구를 쓰기 시작할 수 있습니다.
버전과 설치 위치 확인하기
그림의 아래쪽 칸들은 설치할 때 함께 확인해야 할 것들을 정리한 것입니다. 먼저 버전입니다. cargo install ripgrep --version 13.0.0처럼 정확한 버전을 주면 그 패키지 버전을 고릅니다. --locked를 더하면 패키지에 들어 있는 Cargo.lock이 있을 때 그 의존성 해석을 그대로 씁니다. 패키지의 버전을 고르는 일과 그 패키지의 의존성 버전을 고정하는 일은 서로 다른 일입니다.
cargo install ripgrep --version 13.0.0 --locked다음은 설치 위치입니다. 설치 루트는 --root 옵션, CARGO_INSTALL_ROOT 환경 변수, Cargo 설정의 install.root, CARGO_HOME 환경 변수, 기본값 ~/.cargo의 순서로 정해집니다. 무엇을 설치했는지는 cargo install --list로 보고, 셸이 실제로 어느 파일을 실행하는지는 Unix 셸에서 command -v rg로, PowerShell에서 Get-Command rg로 따로 확인합니다.
cargo install --list
command -v rgGet-Command rg같은 이름의 프로그램이 시스템에도 설치되어 있고 그 폴더가 PATH에서 더 앞에 있다면, rg를 실행했을 때 Cargo로 설치한 것이 아니라 시스템의 것이 실행됩니다. 그러니 rg --version의 결과가 예상과 다르더라도 곧바로 설치가 실패했다고 판단하지 말고, 설치 기록과 실제 실행 경로를 함께 봅니다.
마지막으로 빌드할 때 실행되는 코드입니다. 빌드 스크립트나 절차적 매크로(procedural macro)는 빌드하는 동안 사용자의 권한으로 실행될 수 있으므로, 설치하기 전에 소스와 버전을 확인합니다. 이미 설치한 실행 파일을 다시 설치할 때 쓰는 --force는 기존 파일을 덮어쓰는 방식을 정할 뿐, 그 패키지를 믿어도 된다는 뜻은 아닙니다. crates.io나 Git에서 설치할 때는 사용자와 시스템 수준의 Cargo 설정을 쓰고, --path로 로컬 폴더에서 설치할 때는 그 폴더의 설정도 쓰일 수 있습니다. 이 옵션들은 cargo install 문서에 자세히 나와 있습니다.
정리
cargo install은 crates.io 같은 곳에서 바이너리 대상이 있는 패키지를 받아 로컬에서 빌드하고, 설치 루트의bin폴더에 실행 파일을 둡니다.- 패키지 이름과 실행 파일 이름은 다를 수 있으며,
ripgrep은rg를 설치합니다. - 기본 설치 폴더는
$HOME/.cargo/bin이며, 설치한 프로그램을 이름만으로 실행하려면 이 폴더가PATH에 있어야 합니다. --version은 패키지 버전을,--locked는 패키지가 제공한Cargo.lock의 의존성 해석을 고릅니다.- 설치 기록은
cargo install --list로, 실제로 실행되는 파일은command -v나Get-Command로 따로 확인하고, 설치하기 전에 소스와 버전을 확인합니다.
연습 문제
1. 버전이 다르게 나온다
cargo install ripgrep --version 13.0.0으로 설치했는데 rg --version이 12.0.0을 보여 줍니다. 무엇을 확인해야 하나요?
해설 보기
설치가 실패했다고 단정하지 말고, cargo install --list로 13.0.0이 설치 기록에 있는지 보고, command -v rg나 Get-Command rg로 셸이 실제로 어느 경로의 rg를 실행하는지 확인합니다. /usr/bin 같은 시스템 폴더가 PATH에서 ~/.cargo/bin보다 앞에 있으면 시스템에 설치된 12.0.0이 먼저 실행됩니다. 이때는 PATH의 순서를 바꾸거나 ~/.cargo/bin/rg처럼 경로를 지정해 실행합니다.
2. 의존성으로 쓸까 설치할까
(가) 내 프로그램 안에서 ripgrep의 검색 기능을 함수로 불러 쓰고 싶다. (나) 터미널에서 rg 명령을 쓰고 싶다. 각각 무엇을 하나요?
해설 보기
(가)는 코드에서 라이브러리를 쓰는 것이므로, 필요한 라이브러리 크레이트를 프로젝트의 Cargo.toml의 [dependencies]에 적습니다. ripgrep의 검색 기능은 grep 같은 별도 라이브러리 크레이트로 나뉘어 있습니다. (나)는 실행 파일이 필요한 것이므로 cargo install ripgrep으로 설치하며, 이것은 프로젝트의 의존성 목록을 바꾸지 않습니다.
다음 글 Cargo 커스텀 명령어에서는 이렇게 설치한 실행 파일로 Cargo에 새 하위 명령을 더하는 방법을 살펴봅니다.