In this article, you will learn how you can locally set up a DNF or YUM repository on your CentOS 8 system using an ISO or an installation DVD.
CentOS 8 ships with 2 repositories: BaseOS and AppStream (Application Stream) – So what’s the difference between the two repositories?
The BaseOS repository consists of the requisite packages required for the existence of a minimal operating system. On the other hand, AppStream comprises the remaining software packages, dependencies, and databases.
Related Read: How to Create Local HTTP Yum/DNF Repository on RHEL 8
Now let’s roll up our sleeves and set up a local YUM/DNF repository in CentOS 8.
Step 1: Mount CentOS 8 DVD Installation ISO File
Begin by mounting the ISO file to a directory of your choice. Here, we have mounted in on /opt
directory.
# mount CentOS-8-x86_64-1905-dvd1.iso /opt # cd /opt # ls

Step 2: Create a CentOS 8 Local Yum Repository
In the mounted directory where your ISO is mounted, copy the media.repo
file to the /etc/yum.repos.d/ directory as shown.
# cp -v /opt/media.repo /etc/yum.repos.d/centos8.repo

Next, assign file permissions as shown to prevent modification or alteration by other users.
# chmod 644 /etc/yum.repos.d/centos8.repo # ls -l /etc/yum.repos.d/centos8.repo

We need to configure the default repository file residing on the system. To check the configurations, use the cat command as shown.
# cat etc/yum.repos.d/centos8.repo

We need to modify the configuration lines using a text editor of your choice.
# vim etc/yum.repos.d/centos8.repo
Delete all the configuration, and copy & paste the configuration below.
[InstallMedia-BaseOS] name=CentOS Linux 8 - BaseOS metadata_expire=-1 gpgcheck=1 enabled=1 baseurl=file:///opt/BaseOS/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [InstallMedia-AppStream] name=CentOS Linux 8 - AppStream metadata_expire=-1 gpgcheck=1 enabled=1 baseurl=file:///opt/AppStream/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Save the repo file and exit the editor.
After modifying the repository file with new entries, proceed and clear the DNF / YUM cache as shown.
# dnf clean all OR # yum clean all
To confirm that the system will get packages from the locally defined repositories, run the command:
# dnf repolist OR # yum repolist

Now set ‘enabled’
parameter from 1
to 0
in CentOS-AppStream.repo and CentOS-Base.repo files.
Step 3: Install Packages Using Local DNF or Yum Repository
Now, let’s give it a try and install any package. In this example, we are going to install NodeJS on the system.
# dnf install nodejs OR # yum install nodejs

And this is a clear indicator that we have successfully set up a local DNF/YUM repository on CentOS 8.
Hi, great article but in our case, it’s missing the last few steps. I want this local server to act as a repo server for all other Centos 8 servers on my network. How can I enable that? Thanks
I have this problem, please help me…
CentOS-8 – AppStream 0.0 B / s | 0 B 00:30
Metadata for “AppStream” repository failed to load
Error: Failed to load metadata for “AppStream” repository
Hey Saber, try the commands below:
I have the same problem as Robert. I’m working with a system that has NO internet access. I only have access to the DVD media (running on Qemu behind a corporate firewall. DHCP not working). Previously on some versions of CentOS, I could run a
yum install
command with:yum --disablerepo=\* --enablerepo=c8-media install mysql
But this doesn’t work on Centos 8 and I don’t know why.
The solution (for CentOS 8) is to look at the file /etc/yum.repos.d/CentOS-Media.repo.
First, mount the DVD. I used /media/CentOS.
As documented in the file use:
yum --disablerepo=\* --enablerepo=c8-media-BaseOS (or) c8-media-AppStream
Previously c5-media, c6-media, etc would work.
Thanks for the post.
Unfortunately I get an error message for the command.
Error: Failed to download metadata for repo ‘AppStream’. I have no idea what to do about this. The AppStream and BaseOS directories are located at /mnt/usb/ on a usbstick
Won’t “Now set ‘enabled’ parameter from
1
to0
in CentOS-AppStream.repo and CentOS-Base.repo files disable repositories” disable created repos and install command will ignore them?How to configure local repo to central repo to get any updated library behind a proxy.
@Nagaraju,
Do you mean sync new updated packages between central repo and local repo?