diff --git a/Dockerfile b/Dockerfile index 6462ca79..74ed7247 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,6 +21,8 @@ FROM centos:7.4.1708 # echo -e "export http_proxy=$http_proxy\nexport https_proxy=$https_proxy\n\ #export ftp_proxy=$ftp_proxy" >> /root/.bashrc +RUN echo "http_caching=packages" >> /etc/yum.conf + # username you will docker exec into the container as. # It should NOT be your host username so you can easily tell # if you are in our out of the container. diff --git a/centos-mirror-tools/dl_rpms.sh b/centos-mirror-tools/dl_rpms.sh index 54ff6281..15f1f717 100755 --- a/centos-mirror-tools/dl_rpms.sh +++ b/centos-mirror-tools/dl_rpms.sh @@ -251,7 +251,24 @@ download () { # Prime the cache -${SUDOCMD} yum ${YUMCONFOPT} ${RELEASEVER} makecache +loop_count=0 +max_loop_count=5 +echo "${SUDOCMD} yum ${YUMCONFOPT} ${RELEASEVER} makecache" +while ! ${SUDOCMD} yum ${YUMCONFOPT} ${RELEASEVER} makecache ; do + # To protect against intermittent 404 errors, we'll retry + # a few times. The suspected issue is pulling repodata + # from multiple source that are temporarily inconsistent. + loop_count=$((loop_count + 1)) + if [ $loop_count -gt $max_loop_count ]; then + break + fi + echo "makecache retry: $loop_count" + + # Wipe the inconsistent data from the last try + echo "yum ${YUMCONFOPT} ${RELEASEVER} clean all" + yum ${YUMCONFOPT} ${RELEASEVER} clean all +done + # Download files if [ -s "$rpms_list" ];then diff --git a/centos-mirror-tools/yum.conf.sample b/centos-mirror-tools/yum.conf.sample index 11a6ce72..b968a8ae 100644 --- a/centos-mirror-tools/yum.conf.sample +++ b/centos-mirror-tools/yum.conf.sample @@ -13,6 +13,7 @@ bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://b distroverpkg=centos-release override_install_langs=en_US.utf8 tsflags=nodocs +http_caching=packages reposdir=yum.repos.d