이 오류(Curl error (37): Couldn't read a file
)는 YUM 또는 DNF가 리포지토리 설정에서 지정된 파일을 찾거나 액세스하지 못할 때 주로 발생합니다. 원인은 잘못 구성된 사용자 정의 또는 타사 리포지토리가 잘못된 위치를 가리키고 있을 수 있습니다.
Couldn’t read a file 해결 절차:
# yum repolist -v
Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, product-id, repoclosure, repodiff, repograph, repomanage, reposync, subscription-manager, uploadprofile
Updating Subscription Management repositories.
YUM version: 4.7.0
cachedir: /var/cache/dnf
Red Hat Enterprise Linux 8 for x86_64 - AppStre 2.6 MB/s | 57 MB 00:21
Red Hat Enterprise Linux 8 for x86_64 - BaseOS 4.7 MB/s | 60 MB 00:12
LocalRepository_BaseOS 0.0 B/s | 0 B 00:00
Errors during downloading metadata for repository 'LocalRepo_BaseOS':
- Curl error (37): Couldn't read a file:// file for file:///mnt/BaseOS/repodata/repomd.xml [Couldn't open file /mnt/BaseOS/repodata/repomd.xml]
Error: Failed to download metadata for repo 'LocalRepo_BaseOS': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
- 사용자 정의/타사 리포지토리 확인:
/etc/yum.repos.d/
디렉터리에서 사용자 정의 리포지토리가 있는지 확인하세요:
ls -l /etc/yum.repos.d/
- 기존 리포지토리 백업 및 제거:
사용자 정의 리포지토리가 발견되면 이를 백업한 후 제거합니다: RHEL 7 이하 버전의 경우:
mkdir /tmp/repo_bkp/
mv /etc/yum.repos.d/* /tmp/repo_bkp/
rm -rf /var/cache/yum/*
RHEL 8 이상 버전의 경우:
mkdir /tmp/repo_bkp/
mv /etc/yum.repos.d/* /tmp/repo_bkp/
rm -rf /var/cache/dnf/*
redhat.repo
재생성:
캐시를 정리하고 필요한 리포지토리를 재생성하려면 다음 명령어를 실행합니다:
yum clean all
yum repolist -v
이 명령은 시스템이 /etc/yum.repos.d/
에 있는 유효한 Red Hat 리포지토리를 포함하는 redhat.repo
를 다시 생성하도록 합니다.
- 로그에서 오류 확인:
추가 단서를 위해 구독 로그를 확인하세요:
tail -f /var/log/rhsm/rhsm.log
추가 참고 사항:
- Red Hat 지원 정책: Red Hat은 사용자 정의 또는 타사 리포지토리에서 발생하는 문제에 대한 지원을 제공하지 않습니다. Red Hat에서 지원하는 리포지토리만 사용하는지 확인하세요.
- 기본 URL 확인: 로컬 리포지토리를 사용하는 경우,
/mnt/BaseOS/repodata/repomd.xml
경로와 권한이 올바르게 설정되었는지 확인하세요.
위 단계를 따르면 YUM/DNF가 리포지토리 메타데이터를 정상적으로 가져올 수 있으며, 오류가 해결될 것입니다.