해당 명령을 사용할 때 createrepo
RPM(기본 디렉토리에 있음)을 여러 디렉토리(계층적이라고 생각함)에 배치하고 yum이 기본 디렉토리에 있는 디렉토리에 대한 모든 RPM을 재귀적으로 찾도록 할 수 있습니까?
예:
createrepo /srv/my/repo
/srv/my/repo/vendor1/package1/first.rpm
/srv/my/repo/vendor1/package2/first.rpm
/srv/my/repo/vendor2/package1/third.rpm
제가 이 질문을 하는 이유는 RPM 중 하나를 디렉토리에 떨어뜨리고 a createrepo --update
와 a를 실행했는데 yum clean all
여전히 인식하지 못하기 때문입니다. 이제 계층적 구조가 아닌 플랫 파일 구조로 해야 하는지 궁금합니다.
답변1
내 경험상 아니요, createrepo
디렉터리 트리를 재귀적으로 탐색할 수는 없습니다. 따라서 저장소의 디렉터리 구조를 평면화해야 합니다. 나는 일반적으로 저장소 빌드 스크립트에서 이러한 유형의 루프 구성을 사용합니다.
destdir="/path/to/my/yum-repos/Fedora/14"
for arch in i386 x86_64 noarch; do
printf "\n\n==== creating repo: %-50s [%-s]\n" $destdir $arch
pushd ${destdir}/${arch} >/dev/null 2>&1
createrepo -dp .
popd >/dev/null 2>&1
done
답변2
이 스레드와 내 일화적인 증거에 따르면 yum createrepo는 하위 디렉터리를 탐색하므로 평면화할 필요가 없습니다.
http://lists.baseurl.org/pipermail/yum/2013-December/024061.html
방금 실행한 테스트에 따르면 이런 일이 일어나고 있는 것 같습니다. 새 디렉토리 /usr/local/repob/pkgs/b/를 만들고 문자 "b"로 시작하는 모든 Fedora 19 rpm 파일을 여기에 복사했습니다. 그런 다음 상위 디렉터리 구조에서 "createrepo"를 실행합니다.
# createrepo /usr/local/repob
전체 디렉토리 구조를 재귀적으로 검색하여 새로운 로컬 yum 저장소를 생성하는 것으로 보입니다. 새 저장소에 대한 빠른 /etc/yum.repos.d/.conf 파일을 생성하고 "repoquery"를 사용하여 해당 패키지를 나열하여 이를 확인했는데 패키지가 모두 거기에 있습니다.
따라서 createrepo는 기본적으로 "/path/to/rpms/" 디렉토리를 재귀적으로 검색하는 것처럼 보이지만 매뉴얼 페이지에는 언급되지 않은 것 같습니다. 알아두면 유용한 정보라고 생각합니다.
답변3
/repodata와 동일한 디렉토리에 있는 심볼릭 링크를 사용하면 괜찮습니다.
답변4
createrepo
버전 0.9.9(아마도 이전 버전)는 하위 디렉터리에 들어갑니다.