저는 CentOS를 사용하고 있습니다. 저장소를 구축하고 여기에 패키지를 넣고 다른 서버에서 테스트했는데 모든 것이 정상입니다.
저장소에 새 패키지를 추가하고 실행할 때:
$ createrepo -v /var/www/html/centos/6.5/updates/x86_64/Packages/
내 저장소를 추가한 서버에서 최근에 추가된 마지막 패키지를 설치하려고 시도했지만 동일한 서버에서 이 작업을 수행할 때까지는 작동하지 않았습니다.
$ yum clean all
이게 정상인가요?
답변1
지금까지 이것은 "정상적인" 동작이며 "yum update"를 호출하는 서버는 저장소에 사용 가능한 패키지의 캐시를 유지합니다. "yum clean all"을 호출하면 이 캐시가 삭제되고 서버는 방금 추가한 패키지를 포함하여 사용 가능한 패키지 목록을 저장소에 다시 요청해야 합니다.
실제로 무슨 일이 일어났는가
- 시스템 A의 저장소에 새 패키지를 추가합니다.
- createrepo를 호출하면 저장소 정보가 업데이트되었습니다.
- 머신 A의 리포지토리가 포함된 서버 B로 이동합니다.
- B에서 "yum update"를 호출합니다. yum이 마지막으로 실행된 것은 그리 오래되지 않았기 때문에 yum은 A에 연결하지 않고(!) 로컬 캐시만 확인합니다. 왜냐하면 로컬 캐시가 몇 시간 오래되었기 때문입니다. 귀하의 새 패키지는 거기에 나열되지 않습니다
- 이제 불안하니까 B에서 "yum clean all"을 누르세요. [잠시 기다려도 됩니다.]
- B의 모든 캐시가 삭제됩니다.
- B에서 "yum update"를 다시 호출하면 B가 강제로 서버에 연결되어 현재 데이터를 모두 가져와 새 패키지를 볼 수 있게 됩니다.
답변2
이것은 나에게 올바른 행동처럼 들리지 않습니다. YUM에서 다운로드한 RPM은 /var/cache/yum
.
예
Fedora 19 시스템에서:
$ pwd
/var/cache/yum
모든 디렉토리를 기록해 두십시오. 각 저장소마다 하나씩 있습니다.
$ tree . -L 3 -d
.
`-- x86_64
`-- 19
|-- fedora
|-- fedora-debuginfo
|-- google-chrome
|-- home_pstavirs_ostinato
|-- home_tpokorra_mono
|-- livna
|-- livna-debuginfo
|-- rpmfusion-free
|-- rpmfusion-free-debuginfo
|-- rpmfusion-free-updates
|-- rpmfusion-free-updates-debuginfo
|-- rpmfusion-nonfree
|-- rpmfusion-nonfree-debuginfo
|-- rpmfusion-nonfree-updates
|-- rpmfusion-nonfree-updates-debuginfo
|-- rpm-sphere
|-- updates
|-- updates-debuginfo
`-- virtualbox
21 directories