티스토리 뷰
#!/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 + 의존성 수동 다운로드
- 인터넷이 되는 PC에서 설치할 .rpm 파일의 의존성 확인:
- yum deplist 패키지명
- 확인된 모든 의존성 .rpm 파일을 수동으로 다운로드:
- yum install --downloadonly --downloaddir=/your/dir 패키지명
- 다운로드한 .rpm 파일들을 폐쇄망 환경으로 옮겨서 한 번에 설치:
- 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은 그것을 온라인 저장소에서 받으려고 시도합니다 → 실패.
🛠 점검 방법
- 다운로드한 RPM 목록이 완전한가?
- yumdownloader --resolve로 받아도 빠지는 패키지가 있을 수 있음 (특히 weakdeps, optional 항목 등).
- dnf repoquery --requires --resolve [패키지명] 명령으로 필요한 의존성 전체 확인 가능.
- 설치 전 검증→ 설치 시도는 하지 않고, 어떤 패키지가 빠졌는지 알려줌.
- 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
- object key
- JQuery
- setter
- border-collapse
- DatePicker
- excel
- springboot
- devtools
- caniuse
- Javascript
- 정규식
- oracle
- draw.io
- ul li로 테이블
- Keycode
- spring
- 진열사랑
- $.extend
- QueryDSL
- @ExceptionHandler
- sumifs
- getter
- $.each
- element위치
- 전후방탐색
- 프로젝트명변경
- lombok
- 여러 컬럼 update
- PostgreSQL
- CSS
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
