티스토리 뷰

#!/bin/bash

# 다운로드 대상 디렉토리
DEST_DIR="./resolved-rpms"
mkdir -p "$DEST_DIR"

# 패키지 리스트 파일 (예: list.txt)
RPM_LIST="packages-rpm.txt"

# yum-utils 가 설치되어 있어야 함
command -v yumdownloader >/dev/null 2>&1 || {
  echo "yumdownloader 명령이 없습니다. 먼저 'yum install -y yum-utils'를 설치하세요."
  exit 1
}

# 기본 repo 활성화 확인
echo "[INFO] Repository 확인 중..."
yum repolist > /dev/null || {
  echo "[ERROR] yum repository 접근에 실패했습니다."
  exit 1
}

# 처리 시작
echo "[INFO] 의존성 포함 패키지 다운로드 시작..."

while read -r line; do
  if [[ -n "$line" ]]; then
    echo ">>> $line 다운로드 중..."
    yumdownloader --resolve --destdir="$DEST_DIR" "$line"
  fi
done < "$RPM_LIST"

echo "✅ 모든 패키지와 의존성 다운로드 완료"
echo "📦 결과 폴더: $DEST_DIR"

폐쇄망(인터넷 차단 환경)에서 yum localinstall -y ./*.rpm 명령을 실행했을 때, 다음과 같은 에러가 발생한 상황입니다:

Curl error (6): Couldn't resolve host name for https://mirrors.rockylinux.org/...

이는 인터넷이 차단된 폐쇄망 환경에서 YUM이 외부 리포지터리에 접속하려고 시도했기 때문에 실패한 것입니다.


🔧 문제 원인 요약

  • yum localinstall은 .rpm 패키지를 설치할 때 의존성이 있는 패키지를 자동으로 인터넷에서 내려받아 설치하려고 합니다.
  • 하지만 폐쇄망에서는 외부에 접속할 수 없으므로, 의존성 패키지를 다운로드할 수 없어 설치가 실패합니다.

✅ 해결 방법

1. 모든 의존성 포함한 .rpm 패키지 준비

폐쇄망에서는 다음 두 가지 방식 중 하나를 사용해야 합니다:

방식 A. yum deplist + 의존성 수동 다운로드

  1. 인터넷이 되는 PC에서 설치할 .rpm 파일의 의존성 확인:
  2. yum deplist 패키지명
  3. 확인된 모든 의존성 .rpm 파일을 수동으로 다운로드:
  4. yum install --downloadonly --downloaddir=/your/dir 패키지명
  5. 다운로드한 .rpm 파일들을 폐쇄망 환경으로 옮겨서 한 번에 설치:
  6. sudo yum localinstall -y *.rpm

방식 B. yumdownloader --resolve 사용

yum install yum-utils  # (필요시)
yumdownloader --resolve --destdir=./offline 패키지명
  • --resolve: 의존성까지 모두 다운로드
  • --destdir: 다운로드 경로

압축 후 폐쇄망 환경에 옮겨 yum localinstall 사용


2. 또는 로컬 YUM 리포지터리 구축 (더 확장된 방법)

사내에서 자주 사용하는 경우, DVD ISO나 패키지를 로컬 YUM 리포지터리로 구성하는 것을 추천합니다.

mount -o loop Rocky-8.iso /mnt
createrepo /mnt/BaseOS
createrepo /mnt/AppStream

그 후 /etc/yum.repos.d/local.repo 구성:

[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS
enabled=1
gpgcheck=0

[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0

📦 요약: 어디에서 무엇을 받아야 하는가?

목적 받을 대상 받는 위치

설치하려는 패키지 및 의존성 .rpm 파일들 외부 인터넷 가능 PC에서 yumdownloader --resolve 또는 repo ISO
리포지터리 구성용 파일 (선택) Rocky Linux DVD ISO https://rockylinux.org/download

 

 

---------

패쇄망에서 설치하려고 yumdownloader --resolve --destdir="$DEST_DIR" "$line" 위 명령어로 rpm들을 다운로드 했다. 그런데도 다음 에러가 난다.. 목록 중 어떤 rpm을 먼저 설치하려 하나? 알파벳 순서대로 하나?

sudo yum localinstall -y ./*.rpm

Rocky Linux 8 - AppStream Errors during downloading metadata for repository 'appstream': - Curl error (6): Couldn't resolve host name for https://mirrors.rockylinux.org/mirrorlist?arch=x86_64&repo=AppStream-8 [Could not resolve host: mirrors.rockylinux.org] Could not resolve host: mirrors.rockylinux.org Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: Curl error (6): Couldn't resolve host name for https://mirrors.rockylinux.org/mirrorlist?arch=x86_64&repo=AppStream-8 [Could not resolve host: mirrors.rockylinux.org]


⚠️ 문제 핵심

sudo yum localinstall -y ./*.rpm

명령은 로컬에 있는 RPM만 설치하는 것이 아님입니다.
의존성이 부족하면 yum은 **자동으로 인터넷(공개 저장소)**에 접속해 의존성 패키지를 받으려 시도합니다.

당신의 환경은 **패쇄망(오프라인 네트워크)**이기 때문에 다음 에러가 발생합니다:

Error: Failed to download metadata for repo 'appstream':
Could not resolve host: mirrors.rockylinux.org

❗️yum localinstall의 오해

  • localinstall은 .rpm 파일들을 설치하되, 의존성이 부족할 경우 인터넷 저장소를 통해 자동 해결합니다.
  • 따라서 인터넷이 없는 환경에서는 절대 쓰면 안 됩니다.

✅ 해결책

1. dnf 또는 rpm 명령을 사용해서 순수 로컬 설치만 하세요.

sudo dnf install ./*.rpm --disablerepo="*"

또는 (의존성 관계를 신경 써야 하는 경우):

sudo rpm -Uvh --nodeps ./*.rpm

--disablerepo="*"는 모든 온라인 저장소를 비활성화하고 .rpm 파일만 사용하게 합니다.


📦 어떤 순서로 설치하느냐?

  • yum localinstall ./*.rpm는 내부적으로 의존성 그래프를 따라 자동 정렬해서 설치합니다.
  • 즉, 알파벳 순서가 아니라 패키지 간 의존성에 따라 적절한 순서로 설치됩니다.
  • 단, 필요한 의존성 파일이 .rpm 목록에 누락되어 있다면, yum은 그것을 온라인 저장소에서 받으려고 시도합니다 → 실패.

🛠 점검 방법

  1. 다운로드한 RPM 목록이 완전한가?
    • yumdownloader --resolve로 받아도 빠지는 패키지가 있을 수 있음 (특히 weakdeps, optional 항목 등).
    • dnf repoquery --requires --resolve [패키지명] 명령으로 필요한 의존성 전체 확인 가능.
  2. 설치 전 검증→ 설치 시도는 하지 않고, 어떤 패키지가 빠졌는지 알려줌.
  3. sudo dnf install ./*.rpm --disablerepo="*" --setopt=install_weak_deps=False --assumeno

✅ 정리

문제 설명

yum localinstall 사용 인터넷 저장소 접근 시도 → 패쇄망에서는 실패
설치 순서 알파벳 순서 아님. 의존성 그래프 기반
해결 방법 dnf install ./*.rpm --disablerepo="*" 또는 rpm 사용
확인 방법 dnf install + --assumeno로 누락된 패키지 확인

필요하시면 yumdownloader를 반복해서 돌릴 스크립트나, 완전한 의존성 리스트 추출 방법도 도와드릴 수 있어요.

 

'Skill > 기반기술' 카테고리의 다른 글

rpm 버전 충돌 해결법  (2) 2025.07.29
linux] 네트웍차단  (1) 2025.07.28
swmm5 .whl 파일을 빌드하는 법  (0) 2025.07.23
make -j$(nproc)  (0) 2025.07.22
linux rocky에서 iso 마운트 후 copy하기  (0) 2025.07.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함