rust에서 사용하는 cargo 관련 에러 해결 방법이다.
[개요]
rust에서는 각종 라이브러리들을 crate라고 부른다.
이미 생성되어있는 crate를 이용해 쉽게 프로그래밍이 가능한데, 역시 crate도 버전 관리가 되고 있다.
crate를 사용하기 위해서는 '개인 러스트 프로젝트 경로/Cargo.toml'에 [dependencies]를 추가하여 적어준다.
그리고 cargo build를 통해 해당 버전으로 build를 해주면 아래와 같이 오류가 발생할 수 있음.
오류를 보면 SSL connect가 안되는 것 같다.
쭉 보다보면 주소가 나오는데 'https://index.crates.io/config.json' 다운로드를 못했다고 나온다.
글을 작성하는 당시 브라우저의 주소창에 해당 주소를 직접 입력하여 들어가보면 정상적으로 다운로드가 되었다.
-> 서버 문제 아님
혹시나 pc에 설정된 dns가 잘못되었나 싶어 dns를 kt dns에서 google dns로 변경도 해주었다.
-> 그래도 안됌
[해결]
'.cargo' 경로에 'config.toml' 파일을 생성하고 안에 'check-revoke = false'를 써줌
'config.toml' 파일이 있으면 추가해주면 되고, 파일이 없으면 파일을 만들어서 아래 내용을 적어주면 된다.
본인은 'config.toml' 파일이 없어서 만들어주었다.
그럼 원래 사용되지 않던 'cargo update' 명령어가 실행이 된다.
(전)
(후)
'cargo update' 명령어는 'Cargo.lock' 파일에 패키지를 업데이트 해준다.
https://doc.rust-lang.org/cargo/commands/cargo-update.html
'Cargo.toml'에 단순히 rand만 추가하였지만 위에 보이는 것과 같이 여러 crate들이 자동으로 추가되었다고 한다.
아마 서로 의존성이 있기 때문에 추가되었을 것이다.
'cargo update' 명령어를 실행한 뒤 'Cargo.lock'을 열어보면 아래와 같이 자동으로 [[package]]가 추가되어있다.
그리고 'cargo run' 명령어를 실행하면 아래와 같이 crate를 다운받고 컴파일하여 프로그램을 실행시킨다.
* Cargo.lock?
'Cargo.lock' 파일은 사용자가 'Cargo.toml'의 [dependencies]에서 버전을 변경해주지 않는 이상 'Cargo.lock'에 기록된 버전을 사용해 프로그램을 구성한다는 뜻이다.
extension들은 지속적으로 업데이트가 진행될텐데(오픈소스 기여가 활발하다면) 그에 따라 프로그램에 어떤 영향을 끼칠지는 완전히 알 수 없다.
때문에 검증된 버전을 고정시켜 프로그램에 영향이 가지 않도록 하는 유용한 기능이다.
'프로그래밍' 카테고리의 다른 글
주로 쓰이는 정규표현식 (0) | 2022.02.05 |
---|
댓글