repo 관리하기

repo 관리하기

설정파일

repo 설정 /etc/yum.repo.d/

repo list 보기

$ dnf repolist
repo id                                    repo name
appstream                                  Navix 9 - appstream
baseos                                     Navix 9 - baseos
codeready                                  Navix 9 - codeready
highavailability                           Navix 9 - highavailability
resilientstorage                           Navix 9 - resilientstorage
updates                                    Navix 9 - updates

repo 활성/비활성

sudo dnf install epel-release
sudo dnf config-manager --set-enabled epel

dnf config-manager 상세 설명

dnf config-manager는 DNF 패키지 매니저의 설정을 관리하는 도구입니다.

기본 사용법

repository 관리

# repository 활성화
dnf config-manager --set-enabled repository_name

# repository 비활성화  
dnf config-manager --set-disabled repository_name

# repository 추가
dnf config-manager --add-repo https://example.com/repo.repo

# repository 목록 확인
dnf config-manager --dump

설정 옵션 변경

# 특정 repo 설정 변경
dnf config-manager --save --setopt=repo_name.option=value

# 전역 설정 변경
dnf config-manager --save --setopt=option=value

# 임시 설정 (저장하지 않음)
dnf config-manager --setopt=option=value

주요 설정 옵션들

# 메타데이터 캐시 만료 시간 설정 (초)
dnf config-manager --save --setopt=metadata_expire=7200

# 최대 동시 다운로드 수 설정
dnf config-manager --save --setopt=max_parallel_downloads=10

# 패키지 캐시 유지 여부
dnf config-manager --save --setopt=keepcache=True

# GPG 체크 활성화/비활성화
dnf config-manager --save --setopt=repo_name.gpgcheck=1

고급 사용 예제

proxy 설정

# HTTP 프록시 설정
dnf config-manager --save --setopt=proxy=http://proxy.example.com:8080

# 인증이 필요한 프록시
dnf config-manager --save --setopt=proxy=http://user:pass@proxy.example.com:8080

# 프록시 제외 호스트
dnf config-manager --save --setopt=proxy_username=user
dnf config-manager --save --setopt=proxy_password=password

미러 설정

# 특정 repo의 baseurl 변경
dnf config-manager --save --setopt=baseos.baseurl=http://mirror.example.com/baseos/

# metalink 설정
dnf config-manager --save --setopt=baseos.metalink=http://mirrors.example.com/metalink

# mirrorlist 설정  
dnf config-manager --save --setopt=baseos.mirrorlist=http://mirrors.example.com/mirrorlist

설정 확인 및 디버깅

# 특정 repo 설정 전체 확인
dnf config-manager --dump baseos

# 모든 설정 확인
dnf config-manager --dump

# 활성화된 repo만 확인
dnf config-manager --dump | grep -A 20 "\[.*\]" | grep "enabled = 1" -B 1

# 설정 파일 위치 확인
dnf config-manager --dump | grep "config file"

특정 repository에서 패키지 제외

Set exclude using dnf config-manager
# 특정 repo에서 kernel* 패키지 제외
dnf config-manager --save --setopt=baseos.excludepkgs=kernel*

# 여러 패키지 제외 (쉼표로 구분)
dnf config-manager --save --setopt=baseos.excludepkgs=kernel*,systemd*

# 글로벌 exclude 설정 (모든 repo에 적용)
dnf config-manager --save --setopt=excludepkgs=kernel*

exclude 설정 확인

Verify exclude settings
# repository 설정 확인
dnf config-manager --dump baseos | grep excludepkgs

# 전체 설정 확인
dnf config-manager --dump | grep excludepkgs

exclude 설정 제거

# 특정 repo의 exclude 제거
dnf config-manager --save --setopt=baseos.excludepkgs=

# 글로벌 exclude 제거
dnf config-manager --save --setopt=excludepkgs=

문제 해결

설정 초기화

# 특정 옵션 기본값으로 복원
dnf config-manager --save --setopt=option=

# 설정 파일 백업 및 복원
cp /etc/dnf/dnf.conf /etc/dnf/dnf.conf.backup
cp /etc/dnf/dnf.conf.backup /etc/dnf/dnf.conf

캐시 관리

# 메타데이터 캐시 정리
dnf clean metadata

# 모든 캐시 정리
dnf clean all

# 캐시 다시 생성
dnf makecache

자주 사용하는 명령어 조합

# repo 추가 후 즉시 활성화
dnf config-manager --add-repo https://example.com/repo.repo
dnf config-manager --set-enabled repo_name

# repo 비활성화 후 설정 확인
dnf config-manager --set-disabled repo_name
dnf repolist --disabled

# 설정 변경 후 검증
dnf config-manager --save --setopt=baseos.excludepkgs=kernel*
dnf config-manager --dump baseos | grep excludepkgs