Red Hat provides an utility which named “reposync” that you can use to download the packages from RHN. Before start to download package your system must be registered to RHN and system should be subscribed to that channel that you want to install repo packages. If you don’t have any subscribe it’s not possible to download packages from RHN. You should have at least one subscribe to create a local repos and share it for other servers.
For this purpose there is a solution which named “Satellite”. But you need to take license for Satellite. It’s not a free platform. At this post I ‘ll show you how to download a Repository packages to local and share it for other systems.
Issues:
- How to register your server to RHN?
- How to use reposync?
- How to download RHN package for specific repo-id?
- How to create a local repo with Red Hat updated packages?
- How to share it for other Red Hat systems which is not connected and not registered to RHN?
Environment:
- Red Hat Enterprise Linux 7
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 5
- Red Hat Network (RHN)
- reposync
Let’s Start:
Step 1: First register Red Hat Server to RHN
You should install and configure one server which’ll directly connect to RHN and registered to Red Hat repository. This is the server which you ‘ll use to download packages and share it over HTTP for other linux servers. So before start operation be sure your server has internet access over proxy or directly to connected internet.
After server installation check proxy configuration from rhn up2date file which is located under “/etc/sysconfig/rhn/up2date”
# cat /etc/sysconfig/rhn/up2date|grep httpProxy httpProxy[comment]=HTTP proxy in host:port format, e.g. squid.redhat.com:3128 httpProxy=10.10.10.60:8080
If your proxy server needs to an authentication so add your username and password to “up2date” file.
# cat /etc/sysconfig/rhn/up2date|egrep 'Passw|User' proxyPassword[comment]=The password to use for an authenticated proxy proxyPassword= proxyUser[comment]=The username for an authenticated proxy proxyUser=
Step 2: Run rhn_register
After define proxy information then you should register your server to Red Hat. First run “rhn_register” and follow to instructions from the link which I added below.
RHN Register Link From Red Hat Platform
If you don’t have a GUI access, don’t worry about this. Connect over SSH and run command then use “arrow, space and enter” to pass between screens.
You should have a RHN username and password which is subscribed the repository which you need to download.
There is another way to run only one command set to register server.
rhn_register --nox --proxy=<PROXYSERVERIP>:<PORT>
OR
# rhnreg_ks --proxy=<PROXYSERVERIP>:<PORT> --username=<RHN or Satellite login> --password=<RHN or Satellite password> --force
And also you can use this command to register server and assign an available subscribe. This command will register server and attach any available subscribe with this server.
# subscription-manager register --username <username> --password <password> --auto-attach
You can check available subscription with this command.
#subscription-manager list --available --all
Attach any available subscribe which is suitable with this system.
# subscription-manager attach --auto
Check This Link for more details about Subscribtion.
Check if server gets a subscribe properly.
# subscription-manager list
+-------------------------------------------+
Installed Product Status
+-------------------------------------------+
Product Name: Red Hat Enterprise Linux Server
Product ID: 69
Version: 6.5
Arch: x86_64
Status: Subscribed
Status Details:
Starts: 03/09/2015
Ends: 03/09/2018
Step 3: Create A repository area
Check if you have 50GB free area for only one repository. For example; in my case I’ll download RHEL6-Server repository. I used “xampp” for sharing repository over HTTP. But you don’t need to install “xampp” . You can create a directory which named “/var/www/html/rhnrepo”. It’s easy way to add this folder under httpd.conf and restart HTTPD service. I’ll explain how to do it at next steps.
# df -h /opt/lampp/htdocs/rhnrepo
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vgrepo-lvrepo 59G 30G 27G 53% /opt/lampp/htdocs/rhnrepo
Also don’t forget to import RPM key.
#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Step 4: Start to download
Now you can start to download packages from RHN. First check your repository ID and also install yum-utils, createrepo.
#yum install yum-utils createrepo
Repo-ID: rhel-x86_64-server-6
# yum repolist
Loaded plugins: product-id, rhnplugin, security, subscription-manager
This system is receiving updates from Red Hat Subscription Management.
This system is receiving updates from RHN Classic or RHN Satellite.
repo id repo name status
dvd-source RHEL 6.5 dvd repo 16,506
rhel-x86_64-server-6 Red Hat Enterprise Linux Server (v. 6 for 64-bit x86_64) 16,506
repolist: 33,012
# reposync –gpgcheck -l –repoid=Repo-ID –download_path=/download/path
Example: Don’t forget to change download directory as you wish. This command ‘ll take 15-20 hours depends on your network bandwith.
# reposync --gpgcheck -l --repoid=rhel-x86_64-server-6 --download_path=/opt/lampp/htdocs/rhnrepo After It finishes then create a repository with “createrepo” command #createrepo -v /opt/lampp/htdocs/rhnrepo/rhel-x86_64-server-6/getPackage/
Step 5:Update and Create repo with metadata
Use “reposync” command to download comps and metadata. This to option’ll allow to use variety options like yum-security and groupinstall.
#reposync --gpgcheck -l --repoid=rhel-x86_64-server-6 --download_path=/opt/lampp/htdocs/rhnrepo --downloadcomps --download-metadata
After it finishes then re-run “createrepo” command with comps.xml
# cd /opt/lampp/htdocs/rhnrepo/rhel-x86_64-server-6
# createrepo -v /opt/lampp/htdocs/rhnrepo/rhel-x86_64-server-6/ -g /opt/lampp/htdocs/rhnrepo/rhel-x86_64-server-6/comps.xml
Step 6:HTTP configuration and Updateinfo.xml files
If you pass all steps you are ready to share your local repository to other system. First you need to share repository directory over HTTP.
You should edit httpd.conf file which is located under “/etc/httpd/conf/”. If your repository directory installed under /var/www/html/rhnrepo then add or edit your configuration files like this ;
<Directory /var/www/html/rhnrepo >
Order allow,deny
Allow from all
</Directory>
Restart HTTPD services;
#service httpd restart
Use any explorer to check if everything works fine.
http:/IPADDR/rhnrepo
Now everything is fine . Last step we’ll share updateinfo.xml file with clients . So they can check security updates with this updateinfo.xml. Otherwise they can’t check if there is a updated package. This file ‘ll be used by client.
Redirect under repository download directory.
#cd /opt/lampp/htdocs/rhnrepo/rhel-x86_64-server-6/
Take backup.
#cp 59a8bc1ddec36f240f691f8a3da9633e9db70d93bb83-updateinfo.xml.gz /root/
#cd /opt/lampp/htdocs/rhnrepo/rhel-x86_64-server-6/
Extract updateinfo file under repodata.
#gunzip -c 59a8bc1ddec36f2db5cf36c2b84864fc6a440f691f8a3da9633e9db70d93bb83-updateinfo.xml.gz >> /opt/lampp/htdocs/rhnrepo/rhel-x86_64-server-6/updateinfo.xml
Remove updateinfo.xml.gz
#rm -rf /opt/lampp/htdocs/rhnrepo/rhel-x86_64-server-6/59a8bc1ddec36f2db5cf36c2b84864fc6a440f691f8a3da9633e9db70d93bb83-updateinfo.xml.gz
Last step run modifyrepo.
# modifyrepo /opt/lampp/htdocs/rhnrepo/rhel-x86_64-server-6/updateinfo.xml /opt/lampp/htdocs/rhnrepo/rhel-x86_64-server-6/repodata/
Step 7: Create yum.repos file on client side
# cat /etc/yum.repos.d/server.repo [redhat6_repo] name=redhat6_repo baseurl=http://REPO_SERVER_IP/rhnrepo/rhel-x86_64-server-6/ enabled=1 gpgcheck=0