Rust 최신 버전의 설치 파일과 관련 컴포넌트를 다운로드하는 Bash 스크립트입니다. 이 스크립트는 온라인 환경에서 필요한 파일들을 다운로드하여 오프라인 환경으로 옮길 수 있게 만들어줍니다.

◎ Rust 최신 버전 다운로드 스크립트

#!/bin/bash

# Rust의 최신 버전 정보 가져오기
RUST_VERSION=$(curl -s https://api.github.com/repos/rust-lang/rust/releases/latest | jq -r .tag_name)
RUST_ARCH="x86_64-unknown-linux-gnu"

# 다운로드 디렉토리 설정
DOWNLOAD_DIR="rust_downloads"
mkdir -p $DOWNLOAD_DIR
cd $DOWNLOAD_DIR

# 최신 Rust 설치 스크립트 다운로드
echo "다운로드 중: rustup-init"
curl -LO "https://static.rust-lang.org/rustup/dist/$RUST_ARCH/rustup-init"

# Rust 최신 버전 및 표준 라이브러리 다운로드
echo "다운로드 중: rust-$RUST_VERSION"
curl -LO "https://static.rust-lang.org/dist/rust-$RUST_VERSION-$RUST_ARCH.tar.gz"

echo "다운로드 중: rust-std-$RUST_VERSION"
curl -LO "https://static.rust-lang.org/dist/rust-std-$RUST_VERSION-$RUST_ARCH.tar.gz"

# 다운로드 완료 후
echo "다운로드 완료!"
echo "다음 파일들이 다운로드되었습니다:"
echo " - rustup-init"
echo " - rust-$RUST_VERSION-$RUST_ARCH.tar.gz"
echo " - rust-std-$RUST_VERSION-$RUST_ARCH.tar.gz"

 

 - 설명:

  • curl을 사용하여 GitHub API를 통해 최신 Rust 버전을 자동으로 가져옵니다.
  • rustup-init은 Rust를 설치할 때 필요한 초기 설치 스크립트입니다.
  • 최신 Rust 버전 및 표준 라이브러리(rust-std)를 다운로드합니다.
  • 다운로드 디렉토리는 rust_downloads로 설정되며, 이 디렉토리 내에 필요한 파일들이 저장됩니다.

 

 - 사용 방법:

  • 이 스크립트를 복사하여 .sh 파일로 저장합니다 (예: download_rust.sh).

  > 스크립트에 실행 권한을 부여합니다.

# chmod +x download_rust.sh

 

  > 스크립트를 실행합니다.

# ./download_rust.sh

 

스크립트가 완료되면 rust_downloads 디렉토리 내에 필요한 파일들이 다운로드됩니다.
이후 파일들을 오프라인 시스템으로 scp나 다른 방법으로 전송하여 설치할 수 있습니다.

 

◎ 오프라인 시스템에서 Rust 설치 스크립트

이 스크립트는 미리 다운로드한 파일들을 사용하여 Rust를 오프라인으로 설치할 수 있게 도와줍니다.

 - Rust 오프라인 설치 스크립트

#!/bin/bash

# 설치할 디렉토리 지정
INSTALL_DIR="$HOME/.cargo"
mkdir -p $INSTALL_DIR

# 필요한 파일이 있는지 확인
if [ ! -f "rustup-init" ] || [ ! -f "rust-$RUST_VERSION-$RUST_ARCH.tar.gz" ] || [ ! -f "rust-std-$RUST_VERSION-$RUST_ARCH.tar.gz" ]; then
  echo "필요한 파일이 누락되었습니다. 다운로드한 파일들이 모두 있는지 확인하세요."
  exit 1
fi

# rustup 설치
echo "Rust 설치 중..."

# rustup-init 실행
chmod +x rustup-init
./rustup-init --no-modify-path --default-toolchain none

# Rust 툴체인 설치
echo "Rust toolchain 설치 중..."
tar -xzf rust-$RUST_VERSION-$RUST_ARCH.tar.gz
cd rust-$RUST_VERSION-$RUST_ARCH
./install.sh --prefix=$INSTALL_DIR

# Rust 표준 라이브러리 설치
echo "Rust 표준 라이브러리 설치 중..."
tar -xzf rust-std-$RUST_VERSION-$RUST_ARCH.tar.gz
cd rust-std-$RUST_VERSION-$RUST_ARCH
./install.sh --prefix=$INSTALL_DIR

# 환경 변수 설정
echo "Rust 환경 설정 중..."
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

# 설치 완료 메시지
echo "Rust 설치가 완료되었습니다. 터미널을 재시작하거나, `source ~/.bashrc` 명령어를 실행하여 적용하세요."
echo "설치된 Rust 버전:"
rustc --version

 

 - 설명:
  > 파일 확인:

  • rustup-init, rust-$RUST_VERSION-$RUST_ARCH.tar.gz, rust-std-$RUST_VERSION-$RUST_ARCH.tar.gz 파일들이 있는지 확인합니다. 이 파일들은 미리 다운로드한 파일이어야 합니다.

  > rustup 설치:

  • rustup-init를 실행하여 rustup을 설치합니다. 이때 --no-modify-path 옵션을 사용하여 시스템의 PATH를 수정하지 않도록 하고, --default-toolchain none 옵션으로 기본 툴체인 자동 다운로드를 방지합니다.

  > Rust 툴체인 설치:

  • 미리 다운로드한 rust-$RUST_VERSION-$RUST_ARCH.tar.gz 파일을 풀고, 이를 시스템에 설치합니다.

  > Rust 표준 라이브러리 설치:

  • rust-std-$RUST_VERSION-$RUST_ARCH.tar.gz 파일을 풀고, 이를 시스템에 설치합니다.

  > 환경 변수 설정:

  • Rust 설치 후, $HOME/.cargo/bin을 PATH 환경 변수에 추가하여 cargo, rustc 등을 터미널에서 사용할 수 있도록 합니다.

  > 설치 완료 메시지:

  • 설치가 완료되면, rustc --version 명령어로 Rust 버전을 확인합니다.

 

 - 사용 방법

  > 오프라인 시스템에 파일 복사:

  • 먼저, 온라인 시스템에서 다운로드한 rustup-init, rust-$RUST_VERSION-$RUST_ARCH.tar.gz, rust-std-$RUST_VERSION-$RUST_ARCH.tar.gz 파일들을 오프라인 시스템으로 복사합니다.

  > 스크립트 실행:

  • 이 스크립트를 오프라인 시스템에 저장하고 실행합니다. 예를 들어 install_rust_offline.sh로 저장합니다.
# chmod +x install_rust_offline.sh
# ./install_rust_offline.sh

 


  > 설치 후 확인:

  • 설치가 완료되면, rustc --version 명령어로 정상적으로 설치되었는지 확인합니다.

 

 - 추가적으로:
  > 다른 쉘 사용 시: 만약 bash가 아닌 다른 쉘을 사용하고 있다면, ~/.bashrc 대신 해당 쉘의 설정 파일을 수정해야 합니다. 예를 들어, zsh를 사용한다면 ~/.zshrc에 환경 변수를 추가합니다.
  > 설치 디렉토리 변경: $INSTALL_DIR을 다른 디렉토리로 변경하고 싶다면, 스크립트에서 해당 값을 수정할 수 있습니다.

 

 오프라인 시스템에서 Rust 삭제 스크립트

이 스크립트는 설치된 Rust 파일과 관련된 디렉토리 및 환경 설정을 안전하게 제거하는 기능을 제공합니다.

 - Rust 오프라인 삭제/제거 스크립트

#!/bin/bash

# 설치된 Rust 디렉토리 및 관련 파일들
INSTALL_DIR="$HOME/.cargo"
RUSTUP_DIR="$HOME/.rustup"

# Rust 관련 환경 변수 파일 (bash, zsh 등)
SHELL_RC_FILE="$HOME/.bashrc"

# 환경 변수에서 Rust 관련 PATH 제거
echo "환경 변수에서 Rust 관련 PATH 제거 중..."
if grep -q 'cargo' "$SHELL_RC_FILE"; then
    sed -i '/cargo/d' "$SHELL_RC_FILE"
    echo "환경 변수에서 PATH 제거 완료."
else
    echo "환경 변수에 PATH가 설정되지 않았습니다."
fi

# .cargo 및 .rustup 디렉토리 삭제
echo "Rust 파일 및 디렉토리 삭제 중..."
if [ -d "$INSTALL_DIR" ]; then
    rm -rf "$INSTALL_DIR"
    echo "$INSTALL_DIR 디렉토리 삭제 완료."
else
    echo "$INSTALL_DIR 디렉토리가 존재하지 않습니다."
fi

if [ -d "$RUSTUP_DIR" ]; then
    rm -rf "$RUSTUP_DIR"
    echo "$RUSTUP_DIR 디렉토리 삭제 완료."
else
    echo "$RUSTUP_DIR 디렉토리가 존재하지 않습니다."
fi

# 추가적으로 설치한 Rust 패키지와 툴 삭제 (선택 사항)
if command -v rustc &>/dev/null; then
    echo "rustc가 설치되어 있습니다. 삭제 중..."
    rm -rf "$(which rustc)"
    echo "rustc 삭제 완료."
fi

if command -v cargo &>/dev/null; then
    echo "cargo가 설치되어 있습니다. 삭제 중..."
    rm -rf "$(which cargo)"
    echo "cargo 삭제 완료."
fi

# bashrc 적용
echo "변경 사항을 적용 중..."
source "$SHELL_RC_FILE"

echo "Rust 삭제가 완료되었습니다."

 

 - 설명:

  > 환경 변수에서 Rust 관련 PATH 제거:

  • ~/.bashrc 또는 ~/.zshrc와 같은 쉘 설정 파일에서 cargo와 관련된 환경 변수 라인을 삭제합니다.
  • sed -i '/cargo/d' 명령어로 PATH 변수에 추가된 cargo 경로를 제거합니다.

  > Rust 설치 디렉토리 삭제:

  • $HOME/.cargo와 $HOME/.rustup 디렉토리를 제거합니다. 이 디렉토리들은 Rust의 주요 설치 위치이므로 이들을 삭제합니다.

  > Rust 관련 바이너리 삭제:

  • rustc와 cargo가 설치된 위치를 확인한 후 삭제합니다. which 명령어로 경로를 찾고, 해당 경로에서 직접 삭제합니다.

  > 환경 변수 적용:

  • .bashrc 또는 .zshrc 파일을 수정한 후, source 명령어를 사용하여 변경 사항을 즉시 적용합니다.

 

 - 사용 방법:

  > 스크립트 실행:

위 스크립트를 uninstall_rust.sh라는 파일로 저장한 후, 실행 권한을 부여하고 실행합니다.

# chmod +x uninstall_rust.sh
# ./uninstall_rust.sh

 

  > 삭제 완료:

  • 스크립트가 완료되면, Rust와 관련된 모든 파일이 삭제되고 환경 변수에서 cargo와 관련된 항목도 제거됩니다.

  > 검증:

  • rustc --version 또는 cargo --version을 실행하여 Rust가 정상적으로 삭제되었는지 확인합니다. 명령어가 "command not found"로 나오면 삭제가 성공적으로 완료된 것입니다.

 

 - 추가 참고 사항:

  > 다른 쉘 사용 시:

  • ~/.bashrc 외에 다른 쉘을 사용 중이라면 해당 쉘의 설정 파일 (~/.zshrc, ~/.fish, 등)을 지정해야 합니다. 스크립트에서 SHELL_RC_FILE 변수를 변경하여 적용할 수 있습니다.

  > 추가적으로 설치된 패키지:

  • 만약 오프라인 환경에서 rustup 외에 다른 방식으로 Rust를 설치했다면, 해당 설치 방식에 맞게 디렉토리 삭제 부분을 수정해야 할 수 있습니다.

+ Recent posts