# dnf install -y dnf-utils createrepo
The reposync command is used to synchronize a remote yum repository to a local directory, using yum to retrieve the packages.
reposync --download-metadata --gpgcheck --plugins --repoid=rh8_baseos_latest --arch=ppc64le --newest-only -p /localrepo
# mkdir -p /software/redhat/8/base # /usr/bin/reposync --newest-only --repoid=rh8_baseos_latest -p /software/redhat/8/base # /usr/bin/createrepo /software/redhat/8/base
script example
#!/bin/bash logpath=/var/log logname=$logpath/repo_sync_$(date +%Y.%m.%d).log # Remove old logs find $logpath/repo_sync* -mtime +5 -delete; >> $logname 2>&1 # Sync repositories /usr/bin/reposync --newest-only --repoid=rh8_baseos_latest -/software/redhat/8/base >> $logname 2>&1 /usr/bin/createrepo /software/redhat/8/base/getPackage/ >> $logname 2>&1
# reposync –gpgcheck -l –repoid=rhel-6-server-rpms –download_path=/var/www/html
Using a proxy with Yum
# vi /etc/yum.conf proxy=http://someproxyserver.com:8000 proxy_username=proxyuser proxy_password=proxypass ...
Man page reposync
synchronize yum repositories to a local directory
OPTIONS
-h, --help Display a help message, and then quit. -c CONFIG, --config=CONFIG Config file to use (defaults to /etc/yum.conf). -a ARCH, --arch=ARCH Act as if running the specified arch (default: current arch, note: does not override $releasever. x86_64 is a superset for i*86.). --source Also download .src.rpm files. -r REPOID, --repoid=REPOID Specify repo ids to query, can be specified multiple times (default is all enabled). -e CACHEDIR, --cachedir CACHEDIR Directory in which to store metadata. -t, --tempcache Use a temp dir for storing/accessing yum-cache. -d, --delete Delete local packages no longer present in repository. -p DESTDIR, --download_path=DESTDIR Path to download packages to: defaults to current directory. --norepopath Don't add the reponame to the download path. Can only be used when syncing a single repository (default is to add the reponame). -g, --gpgcheck Remove packages that fail GPG signature checking after downloading. exit status is '1' if at least one package was removed. -u, --urls Just list urls of what would be downloaded, don't download. -l, --plugins Enable yum plugin support. -m, --downloadcomps Also download comps.xml. --download-metadata Download all the non-default metadata. -n, --newest-only Download only newest packages per-repo. -q, --quiet Output as little information as possible.
RHEL 8
You should not use createrepo on a RHEL 8 repository or you will delete the module data. reposync was updated to download all of the repodata for you making a local repository, a single command.
# reposync --download-metadata --repo <repo-id>
To use createrepo on a RHEL 8 repository, download the files: comps.xml , updateinfo.xml , modules.yaml
# rm -rf /var/cache/dnf # yum module list && yum updateinfo # reposync --repo <repo-id> --download-path=/var/www/html ### With the repository downloaded, we now need to build the repodata. We should be sitting in the root of the repository. # cd /var/www/html/<repo-id> # cp $(find /var/cache/dnf/<repo-id>* -name *comps.xml) comps.xml # createrepo -g comps.xml ./ ### Find and add the module data **NOTE** createrepo_c-0.16.2-2.el8 and later will automatically detect and include the modules.yaml, if present in the repo directory. # gunzip $(find /var/cache/dnf/<repo-id>* -name *modules.yaml.gz) -c > modules.yaml # modifyrepo modules.yaml repodata/ ###Find and add the security data # gunzip $(find /var/cache/dnf/<repo-id>* -name *updateinfo.xml.gz) -c > updateinfo.xml # modifyrepo updateinfo.xml repodata/