ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #1. Rocky Linux 9 - dnf localinstall 실행하기 (오프라인 환경)
    개발노트/Linux 2025. 2. 4. 18:00
    반응형

    오프라인 환경에서 dnf localinstallBaseOS를 외부에서 찾는 문제 해결 방법

    🔍 문제 상황

    오프라인 환경에서 dnf localinstall을 실행할 때, BaseOS 패키지를 외부 리포지토리에서 찾으려 하면서 실패하는 경우가 발생할 수 있습니다.

    🔹 원인

    • dnf는 기본적으로 설정된 온라인 리포지토리에서 패키지를 검색합니다.
    • localinstall을 사용해도, 설치하려는 패키지가 의존성을 추가로 요구할 경우 BaseOS 등 기본 리포지토리를 사용하려고 시도할 수 있습니다.
    • Rocky Linux는 BaseOSAppStream을 포함한 여러 공식 리포지토리를 사용하지만, 오프라인 환경에서는 이를 접근할 수 없습니다.

    ✅ 해결 방법

    1️⃣ dnf가 외부 리포지토리를 참조하지 않도록 설정

    오프라인 설치를 수행할 때, dnf가 온라인 리포지토리를 사용하려고 시도하는 것을 차단해야 합니다.

    sudo dnf --disablerepo="*" localinstall -y package.rpm

    🔹 --disablerepo="*" 옵션을 사용하면 모든 온라인 리포지토리를 비활성화하고, 제공된 .rpm 패키지만 설치하도록 강제합니다.


    2️⃣ dnf의 기본 리포지토리를 비활성화 (영구 적용)

    온라인 리포지토리를 영구적으로 비활성화하려면 dnf의 설정 파일을 수정해야 합니다.

    1) BaseOSAppStream 리포지토리를 임시로 비활성화

    다음 명령을 실행하면 특정 리포지토리를 제외하고 패키지를 설치할 수 있습니다.

    sudo dnf --setopt=BaseOS.enabled=0 --setopt=AppStream.enabled=0 install -y package.rpm

    2) /etc/yum.repos.d/ 내 리포지토리 파일 수정 (영구 설정)

    기본 리포지토리를 아예 비활성화하려면 BaseOS.repoAppStream.repo 파일을 수정해야 합니다.

    sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/Rocky-BaseOS.repo
    sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/Rocky-AppStream.repo

    ⚠️ 설치 후 다시 온라인 리포지토리를 사용하려면, enabled=1로 복구해야 합니다.


    3️⃣ 의존성 패키지를 함께 다운로드하여 오프라인에서 설치

    일반적으로 단일 .rpm 파일만 설치하면 의존성 부족 문제가 발생할 수 있습니다.
    이를 방지하려면 온라인 환경에서 필요한 패키지를 미리 다운로드하여 함께 이동해야 합니다.

    1) 온라인 환경에서 패키지 및 의존성 다운로드

    mkdir -p ~/offline-packages
    cd ~/offline-packages
    sudo dnf install --downloadonly --downloaddir=. package-name

    2) 오프라인 서버로 이동 후 일괄 설치

    scp -r ~/offline-packages user@192.168.xxx.xxx:/tmp/
    cd /tmp/offline-packages
    sudo dnf install -y *.rpm

    4️⃣ BaseOS 패키지를 로컬 리포지토리로 등록하여 활용 (추천)

    오프라인 환경에서 BaseOS 패키지가 필요하면, 미리 다운로드하여 로컬 리포지토리로 등록하면 더 편리합니다.

    1) 온라인 환경에서 BaseOS 패키지 다운로드

    mkdir -p ~/rocky9-baseos
    cd ~/rocky9-baseos
    sudo dnf install --downloadonly --downloaddir=. BaseOS
    tar -czvf rocky9-baseos.tar.gz ~/rocky9-baseos

    2) 오프라인 서버로 전송 후 압축 해제

    scp rocky9-baseos.tar.gz user@192.168.xxx.xxx:/mnt/repo/
    cd /mnt/repo/
    tar -xzvf rocky9-baseos.tar.gz

    3) 로컬 리포지토리 구성

    sudo createrepo /mnt/repo/
    sudo tee /etc/yum.repos.d/local.repo <<EOF
    [local-repo]
    name=Local Repository
    baseurl=file:///mnt/repo/
    enabled=1
    gpgcheck=0
    EOF

    4) dnf 캐시 업데이트 및 설치

    sudo dnf clean all
    sudo dnf makecache
    sudo dnf install -y package.rpm

    🎯 결론

    🔹 오프라인 환경에서 dnf localinstallBaseOS를 찾는 문제 해결 방법
    dnf --disablerepo="*" 옵션을 사용하여 외부 리포지토리를 비활성화
    BaseOS.repo 파일을 수정하여 기본 리포지토리를 비활성화
    dnf install --downloadonly를 사용하여 필요한 패키지 및 의존성을 미리 다운로드
    createrepo를 활용하여 로컬 리포지토리를 구성하여 오프라인에서 dnf 사용 가능하도록 설정

    이제 오프라인 환경에서도 dnf를 활용하여 패키지를 설치할 수 있습니다! 🚀

    반응형
Designed by Tistory.