[Linux]패키지 캐시 데이터(Cache data)를 구성해야 하는 이유는?
dnf는 패키지를 설치, 업데이트, 제거하는 데 있어서 속도와 효율성을 향상시키기 위해 캐시를 사용합니다. 이 캐시는 로컬 시스템에 저장된 패키지 메타데이터 정보로, 네트워크를 통해 가져오는 데 소요되는 시간을 줄이고, 패키지 정보를 더 빠르게 사용할 수 있게 합니다. 여러 가지 이유로 캐시를 구성하는 것이 좋습니다.
- 네트워크 부하 감소: dnf이 패키지 정보를 가져오기 위해 외부 저장소에 계속적으로 접근하지 않고, 로컬 캐시를 사용하면 네트워크 부하가 감소하며, 특히 대역폭이 제한된 환경에서 이점을 제공합니다.
- 빠른 패키지 검색 및 설치: 캐시를 사용하면 패키지 검색 및 설치가 훨씬 빨라집니다. 로컬 캐시에서 정보를 가져오기 때문에 외부 저장소에 요청을 보내는 시간을 줄일 수 있습니다.
- 신뢰성과 안정성: 로컬 캐시는 외부 저장소에 연결할 필요가 없으므로 외부 저장소가 응답하지 않는 경우에도 패키지 정보에 접근할 수 있습니다.
캐시 데이터가 오래되면 패키지 매니저가 최신 정보를 받지 못해 여러 문제가 발생할 수 있습니다. 아래는 오래된 캐시 데이터로 인한 일반적인 오류 몇 가지입니다.
- 패키지를 찾을 수 없음 (Package not found): 오래된 캐시로 인해 패키지의 최신 버전이나 존재 여부를 확인할 수 없는 경우 발생합니다.
- 의존성 문제 (Dependency issues): 최신 패키지의 의존성이 변경된 경우 오래된 캐시에서는 새로운 의존성을 인식하지 못해 발생합니다.
- 패키지 업데이트가 안 되는 경우: 새로운 버전의 패키지가 출시된 경우, 오래된 캐시에서는 해당 업데이트를 확인하지 못해 업데이트가 적용되지 않습니다.
- 저장소와 관련된 오류: 저장소 정보가 오래된 경우, 저장소에 연결할 때 문제가 발생할 수 있습니다.
- 저장소 메타 데이터를 관리 파일이 오래된 경우: 패키지 매니저가 다운로드한 repomd.xml 파일이 로컬에 있는 파일보다 오래되었을 때 발생합니다.
위와 같은 오류가 발생할 경우에는 패키지 캐시 데이터를 재구성하는 것이 좋습니다. dnf 패키지 관리자가 설치되어 있다면, 캐시 데이터는 /var/cache/dnf
디렉토리에 저장되며 dnf clean all
명령과 dnf makecache [--refresh]
명령을 순차적으로 사용해서 캐시를 재구성할 수 있습니다. 재구성을 하면 아래처럼 붉은 색 파일들이 삭제되고, 다시 생성됩니다. [–refresh] 옵션을 사용하면 항상 외부 저장소에서 최신 정보를 가져와 갱신합니다.
[root@centos8 ~]# cd /var/cache/dnf [root@centos8 dnf]# lltotal 71176 drwxr-xr-x. 4 root root 56 Oct 31 09:50 appstream-773ef6463612e8e2 -rw-r--r--. 1 root root 28274811 Oct 31 09:50 appstream-filenames.solvx -rw-r--r--. 1 root root 7873255 Oct 31 09:50 appstream.solv drwxr-xr-x. 4 root root 56 Oct 31 09:50 baseos-055ffcb2ec25a27f -rw-r--r--. 1 root root 23378161 Oct 31 09:50 baseos-filenames.solvx -rw-r--r--. 1 root root 8891709 Oct 31 09:50 baseos.solv -rw-r--r--. 1 root root 2 Oct 31 10:12 expired_repos.json drwxr-xr-x. 3 root root 40 Oct 31 09:50 extras-9705a089504ff150 drwxr-xr-x. 3 root root 40 Oct 31 09:50 extras-common-af8e527ca2f63c73 -rw-r--r--. 1 root root 762 Oct 31 09:50 extras-common-filenames.solvx -rw-r--r--. 1 root root 13034 Oct 31 09:50 extras-common.solv -rw-r--r--. 1 root root 1787 Oct 31 09:50 extras-filenames.solvx -rw-r--r--. 1 root root 27917 Oct 31 09:50 extras.solv -rw-r--r--. 1 root root 0 Oct 31 09:44 last_makecache -rw-r--r--. 1 root root 4395008 Oct 31 10:12 packages.db -rw-r--r--. 1 root root 2 Oct 31 10:12 tempfiles.json[root@centos8 dnf]# dnf clean all27 files removed[root@centos8 dnf]# lltotal 4300 drwxr-xr-x. 4 root root 38 Oct 31 10:21 appstream-773ef6463612e8e2 drwxr-xr-x. 4 root root 38 Oct 31 10:21 baseos-055ffcb2ec25a27f -rw-r--r--. 1 root root 2 Oct 31 10:21 expired_repos.json drwxr-xr-x. 3 root root 22 Oct 31 10:21 extras-9705a089504ff150 drwxr-xr-x. 3 root root 22 Oct 31 10:21 extras-common-af8e527ca2f63c73 -rw-r--r--. 1 root root 0 Oct 31 09:44 last_makecache -rw-r--r--. 1 root root 4395008 Oct 31 10:12 packages.db -rw-r--r--. 1 root root 2 Oct 31 10:12 tempfiles.json[root@centos8 dnf]# dnf makecacheCentOS Stream 8 - AppStream 4.3 MB/s | 34 MB 00:07 CentOS Stream 8 - BaseOS 8.8 MB/s | 51 MB 00:05 CentOS Stream 8 - Extras 29 kB/s | 18 kB 00:00 CentOS Stream 8 - Extras common packages 12 kB/s | 6.9 kB 00:00 Metadata cache created.[root@centos8 dnf]# lltotal 71176 drwxr-xr-x. 4 root root 56 Oct 31 10:23 appstream-773ef6463612e8e2 -rw-r--r--. 1 root root 28274811 Oct 31 10:23 appstream-filenames.solvx -rw-r--r--. 1 root root 7873255 Oct 31 10:23 appstream.solv drwxr-xr-x. 4 root root 56 Oct 31 10:23 baseos-055ffcb2ec25a27f -rw-r--r--. 1 root root 23378161 Oct 31 10:23 baseos-filenames.solvx -rw-r--r--. 1 root root 8891709 Oct 31 10:23 baseos.solv -rw-r--r--. 1 root root 2 Oct 31 10:23 expired_repos.json drwxr-xr-x. 3 root root 40 Oct 31 10:23 extras-9705a089504ff150 drwxr-xr-x. 3 root root 40 Oct 31 10:23 extras-common-af8e527ca2f63c73 -rw-r--r--. 1 root root 762 Oct 31 10:23 extras-common-filenames.solvx -rw-r--r--. 1 root root 13034 Oct 31 10:23 extras-common.solv -rw-r--r--. 1 root root 1787 Oct 31 10:23 extras-filenames.solvx -rw-r--r--. 1 root root 27917 Oct 31 10:23 extras.solv -rw-r--r--. 1 root root 0 Oct 31 09:44 last_makecache -rw-r--r--. 1 root root 4395008 Oct 31 10:23 packages.db -rw-r--r--. 1 root root 2 Oct 31 10:12 tempfiles.json