What – To create a local repository from the existing running Rocky Linux server
When – To ignore similar multiple downloads from the internet for server OS update and to save the bandwidth
How – Follow the Steps
Install Web server
dnf install nginx && systemctl enable nginx –now
Install Yum-utils package
dnf install yum-utils
Create Repo Directory
- mkdir /usr/share/nginx/html/repos
- mkdir -p /usr/share/nginx/html/repos/{baseos,appstream}
Sync Repo
- dnf reposync -g –delete -p /usr/share/nginx/html/repos/ –repoid=baseos –download-metadata
- dnf reposync -g –delete -p /usr/share/nginx/html/repos/ –repoid=appstream –download-metadata
Note: reposync is used to synchronize repositories to the local directories, it will few hours to sync all the packages from the default repo which depends on your internet speed. You can add –newest-only to download only the latest packages.
- -g : to remove packages that fail GPG signature checking after downloading.
- –delete : delete local packages no longer present in the repository.
- -p : root path under which the downloaded repositories are stored
- –newest-only : download only newest packages per-repo.
- –download-metadata : Download all repository metadata.
Add to Cronjob
#!/bin/bash
/bin/dnf reposync -g –delete -p /usr/share/nginx/html/repos/ –repoid=baseos –download-metadata
/bin/dnf reposync -g –delete -p /usr/share/nginx/html/repos/ –repoid=appstream –download-metadata
Configure Nginx and Start the service
# vi /etc/nginx/conf.d/repos.conf
server {
listen 80;
server_name reposerver.linuxraja.com;
root /usr/share/nginx/html/repos;
index index.html;
location / {
autoindex on;
}
}
systemctl restart nginx
Convert local directory as a local repository
- yum install createrepo
- createrepo /usr/share/nginx/html/repos/ – First time
- createrepo –update /usr/share/nginx/html/repos/ – After first time for the updated packages.
- Add this to Cronjob after every repo sync job.