In Yum repository configuration, the baseurl
and mirrorlist
directives serve distinct purposes for package retrieval. The baseurl
specifies an exact repository location, while mirrorlist
provides a dynamic list of potential mirrors.
When using baseurl
, Yum connects directly to a single repository source. This approach offers stability but lacks redundancy:
[base] name=CentOS-$releasever - Base baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
The mirrorlist
points to a URL containing multiple mirror locations. Yum's metalink system automatically selects the optimal mirror:
[base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Mirrorlists typically offer better performance through:
- Geographic proximity selection
- Automatic failover during outages
- Load distribution across mirrors
To test mirror response times:
yum --disablerepo="*" --enablerepo="base" list available --showduplicates yum clean all yum makecache
For production environments:
- Use mirrorlist for general cases
- Specify baseurl when requiring specific version pinning
- Combine with fastestmirror plugin for optimal performance
A complete repository file might include both directives:
[base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os baseurl=http://fallback.mirror/centos/$releasever/os/$basearch/ gpgcheck=1 enabled=1
Note: Yum prioritizes mirrorlist when both are present unless mirrorlist_expire
indicates outdated data.
When configuring YUM repositories in CentOS/RHEL systems, two primary methods exist for specifying package sources:
[base]
name=CentOS-$releasever - Base
# Method 1: Direct base URL
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
# Method 2: Mirror list
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
The baseurl points directly to a single repository location, while mirrorlist contains a dynamic list of mirrors that YUM evaluates:
# How YUM processes mirrorlist internally:
1. Fetch XML from mirrorlist URL
2. Parse available mirrors
3. Test connection speed to each
4. Select fastest available mirror
5. Cache results for subsequent requests
When to use baseurl:
- Internal corporate repositories where you control the single source
- Testing environments requiring deterministic package sources
- Air-gapped systems without internet access
When to use mirrorlist:
- Public repositories with global mirror networks
- Environments needing automatic failover between mirrors
- Geographically distributed deployments
The mirrorlist approach introduces additional latency during the initial resolution phase, but provides better long-term reliability:
# Benchmark example (typical results):
# baseurl (direct):
Transaction time: 12.7 seconds
# mirrorlist (first run):
Mirror resolution: 2.1 seconds
Transaction time: 10.8 seconds
Subsequent runs: ~11.2 seconds
Combine both approaches for fallback scenarios:
[base]
name=CentOS-$releasever - Base
baseurl=http://local-mirror.example.com/centos/$releasever/os/$basearch/
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
failovermethod=priority
The failovermethod
parameter (priority/roundrobin) determines behavior when both baseurl and mirrorlist are specified.
For mirrorlist problems, check metadata freshness:
# Force metadata refresh
sudo yum clean all
sudo yum makecache
# Debug mirror selection
sudo yum --verbose --noplugins repolist