
yum (Yellow dog Updater Modified) is a package manager for RPM compatible Linux systems such as CentOS, Fedora core and latest Redhat Enterprise Linux.
So how do you use yum to update / install packages from an ISO of CentOS / FC / RHEL CD?
Creation of yum repositories is handled by a separate tool called createrepo, which generates the necessary XML metadata. If you have a slow internet connection or collection of all downloaded ISO images, use this hack to install rpms from iso images.
Step # 1: Mount an ISO file
Type the following command (replace iso file name with the actual iso file):
# yum install createrepo
# mkdir -p /mnt/iso/{1,2,3}
# mount -o loop /path/to/centos1.iso /mnt/iso/1
Step # 2: Create a repository
Use createrepo to generate the necessary XML metadata. Type the following commands:
# cd /mnt/iso
# createrepo .
Clean repo, enter:
# yum clean all
Step # 3: Create config file
You need to create a repo config file in /etc/yum.repos.d/ directory.
# vi /etc/yum.repos.d/iso.repo
Append following text:
[My ISO Repository]
baseurl=file:///mnt/iso
enabled=1
Save and close the changes.
Now use yum command to install packages from ISO images:
# yum install package-name
Featured Articles:
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins

- My 10 UNIX Command Line Mistakes
- 25 PHP Security Best Practices For Sys Admins
- The Novice Guide To Buying A Linux Laptop
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- Top 20 OpenSSH Server Best Security Practices
- Top 10 Open Source Web-Based Project Management Software
Facebook it - Tweet it - Print it -
We're here to help you make the most of sysadmin work. So, subscribe!

{ 41 comments… read them below or add one }
thanks for the thismanual,can u tell me how to install update and coresponsding dependancies from a url like rpm.pbone.net
it is not working for me.
hi all,
yes right, when yum is configured locally it is working. how to do that on the client machine.
client is nfs client. how will i configure yum repository now.
becos it is giving error if i configured in the same way. problem is it is unable to read /mnt/iso/1 directory.
error downloading packages kernel-headers-2.6.18-194: failure: 1/Server/kernel-headers…rpm from my_iso_repository: errno 256 no more mirrors to try.
yum may not be able to install ‘createrepo’ as it may need a repository to find it – you know, the one you try to create ;-)..
This can be resolved by installing it ‘by hand’, e.g.
# rpm -i /mnt/iso/4/Server/createrepo-0.4.4-2.fc6.noarch.rpm
Thanks for the article, keep it up!
Henk,
Thanks for pointing out this issue
Thanks for the tip. Seems to work great for the most part.
I used it to create a local repo for FC7 with the original fc7 isos and an Everything snapshot as of ~Jan ’08. Most of the packages are fine, but some of them (openoffice.org-pyuno in particular) are prepending a “1:” to the version number so it’s failing the dependency check.
–> Package openoffice.org-pyuno.i386 1:2.2.0-14.8 set to be updated
–> Processing Dependency: openoffice.org-core = 1:2.2.0-14.8 for package:openoffice.org-pyuno
–> Finished Dependency Resolution
Error: Missing Dependency: openoffice.org-core = 1:2.2.0-14.8 is needed by package openoffice.org-pyuno
But I’ve got openoffice.org-2.2.0-14.8 installed!
Looking through yum list available shows a subset of packages with the “1:” prepended to the version number.
Any thoughts on how I can get around this?
Thanks in advance.
Use /etc/yum.repos.d/CentOS-Media.repo
so I’ve gone through this process, and have all 7 of rhel 5.3 iso’s (cd files) mounted and as the location for the repo, however it doesn’t want to complete without the public key. do I have to generate and import a key?
You have to import all the gpg keys for the packages.
rpm –import /mnt/iso/{1,2,3}/RPM-GPG-KEY
Take a look here:
http://www.linuxquestions.org/questions/fedora-35/public-key-not-installed-468615/
Hi thanks this workes grate
Error : Repository ‘MY ISO Repository’ is missing name in configuration, using id
Fix :
# vi /etc/yum.repos.d/iso.repo
[My ISO Repository]
name=ISO
baseurl=file:///mnt/iso
enabled=1
I am wondering how you createrepo within an ISO image
That needs a trick to mount writable as it does not on its own.
Please share this trick….
Thanks for Howto, for some reason when this implemented for RHEL 5.4 in case there is name of repository in iso.repo set up as
[My ISO Repository]
it will complain with error
bad id for repo
and will not index files …
workaround
[MyISORepository] ….no spaces in repsitory name.
Regards,
Thanks for this fix!
Hey elvir, thanks for the tipc. I had the exact problem ;)
Hi and thank you for the tips, they are great. I will be using the following entry, which should work I believe.
[MyUpdateRepository]
name=updater
baseurl=file:///repo_update/updaterepos
enabled=1
Looks good to you? I will be doing this in about two weeks and will let you know how it goes. Any suggestions?
Thanks again for the assist.
Hi,
When iam trying the second step that is :
# cd /mnt/iso
# createrepo .
am getting an error as follows:
Directory /mnt/iso/. must be writable.
Please help……
Sarath M.
Nice answer, but when I did all that step I got this error:
Bad id for repo: My ISO Repository, byte=2
I were searching in internet only I found one answer and don’t resolve my problem.
Could you help me, please? I can’t download from internet, so my only way to install something in federo is in you way.
Thank
For “Bad id repo” problem the solution is that the repository ID should not have a spaces
IT should be [My-ISO-Repository]
Sharath,
Awesome !!! That worked for me.Thanks.
Thank you very much!!! Now it is working perfectly.
Sarath,
what you need to do is to use another directory for the repository data :
# mkdir /tmp/repo
# cd /mnt/iso
# createrepo -o /tmp/repo .
Then use /tmp/repo as the repository directory instead of /mnt/iso
What about errors like this one when I tried “yum install expect”
Public key for expect-5.43.0-5.1.i386.rpm is not installed
I know I can force but is there a way to clear it up?
Greg:
It’s probably because the package is signed, and you don’t have the gpg key.
To bypass this, type:
yum install expect –nogpg
It didn’t work for me.
I had to type:
yum install package-name –nogpgcheck
with 2 dashes – -
when you type 2 dashes they appear as one long one
I am trying to create the local repository but getting errors: below ism y setup
/data/iso/dvd
mount -o loop CentOS-5.5-i386-bin-DVD.iso /data/iso/dvd
cd /data/dvd
createrepo .
vi /etc/yum.repository.d/iso.repo
[My-ISO-Repositary]
baseurl=file:///data/iso
enabled=1
when I tried to install the software thorugh
yum –enablerepo=iso.repo install bind
[root@server ~]# yum –enablerepo=iso.repo install bind
Loaded plugins: fastestmirror
Repository ‘My-ISO-Repositary’ is missing name in configuration, using id
Error getting repository data for iso.repo, repository not found
[root@server ~]#
Kinldly help me solve this problem
Are you drunken?
setting up a software-repro by using yum and a software-repro? Well man, I don’t know what you are smoking, but I like to ask you if you mind to share it …
hope that I was drunk.
let me refine my question.
I want to setup yum repository
I copied the cd/DVD file into /var/www/html/centos
vim /etc/yum.repos.d/server.repo
[Server]
name=server repository
file:///var/www/html/centos
enable=1
when I tried to install the software through
yum –enablerepo=server install package name
me receiving the same mentioned above error.
Still error, I can’t install from ISO image.
Please help.
you couldn’t createrepo on read only media.. you should use symlink tricks :D
[root@rhel6 ~]# cd /mnt/cdrom/Packages/ [root@rhel6 Packages]# mkdir /mnt/repo [root@rhel6 Packages]# find . -name "*.rpm" -exec ln -s `pwd`/{} /mnt/repo/{} \; [root@rhel6 Packages]# cd /mnt/repo/ [root@rhel6 repo]# createrepo . 2865/2865 - pcsc-lite-libs-1.5.2-3.1.el6.i686.rpm Saving Primary metadata Saving file lists metadata Saving other metadata [root@rhel6 repo]# cat /etc/yum.repos.d/rhel-beta.repo [rhel-beta-6] name=Red Hat Enterprise Linux Beta baseurl=file:///mnt/repo/ enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta-2 [root@rhel6 repo]# yum update Loaded plugins: rhnplugin This system is not registered with RHN. RHN support will be disabled. rhel-beta-6 | 1.3 kB 00:00 ... rhel-beta-6/primary | 1.3 MB 00:00 ... rhel-beta-6 2865/2865 Setting up Update Process No Packages marked for Update [root@rhel6 repo]# yum list | grep mysql-server This system is not registered with RHN. RHN support will be disabled. mysql-server.i686 5.1.42-4.el6 rhel-beta-6 [root@rhel6 repo]# [root@rhel6 repo]# yum install mysql-server.i686 Loaded plugins: rhnplugin This system is not registered with RHN. RHN support will be disabled. Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package mysql-server.i686 0:5.1.42-4.el6 set to be updated --> Processing Dependency: mysql = 5.1.42-4.el6 for package: mysql-server-5.1.42-4.el6.i686 --> Processing Dependency: perl-DBD-MySQL for package: mysql-server-5.1.42-4.el6.i686 --> Running transaction check ---> Package mysql.i686 0:5.1.42-4.el6 set to be updated ---> Package perl-DBD-MySQL.i686 0:4.013-3.el6 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mysql-server i686 5.1.42-4.el6 rhel-beta-6 8.6 M Installing for dependencies: mysql i686 5.1.42-4.el6 rhel-beta-6 3.8 M perl-DBD-MySQL i686 4.013-3.el6 rhel-beta-6 134 k Transaction Summary ================================================================================ Install 3 Package(s) Upgrade 0 Package(s) Total download size: 13 M Installed size: 30 M Is this ok [y/N]: y Downloading Packages: -------------------------------------------------------------------------------- Total 19 MB/s | 13 MB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : mysql-5.1.42-4.el6.i686 1/3 Installing : perl-DBD-MySQL-4.013-3.el6.i686 2/3 Installing : mysql-server-5.1.42-4.el6.i686 3/3 Installed: mysql-server.i686 0:5.1.42-4.el6 Dependency Installed: mysql.i686 0:5.1.42-4.el6 perl-DBD-MySQL.i686 0:4.013-3.el6 Complete! [root@rhel6 repo]#gud lak.. ;)
software to play the video in linux
I have Oracle EL5.5 installed in virtualbox 4.0.4.
ISO mounted automatically in virtual dvd drive in /media/Enterprise Linux dvd 20100405.
Created dvd.repo in /etc/yum.repos.d.
Content of file:
[el5 dvd]
name=Enterprise Linux dvd 20100405
baseurl=file:///media/”Enterprise Linux dvd 20100405″/Server
enabled=1
gpgcheck=1
gpgkey=file:///media/Enterprise Linux dvd 20100405/RPM-GPG-KEY file:///media/Enterprise Linux dvd 20100405/RPM-GPG-KEY-oracle
yum clean all results:
[root@primedbs Enterprise Linux dvd 20100405]# yum clean all
Loaded plugins: security
Bad id for repo: el5 dvd, byte = 3
If I remove the space in repository ID as [el5dvd]
yum clean all results:
[root@primedbs Enterprise Linux dvd 20100405]# yum clean all
Loaded plugins: security
Options Error: Error parsing ‘file:///media/Enterprise Linux dvd 20100405/RPM-GPG-KEY file:///media/Enterprise Linux dvd 20100405/RPM-GPG-KEY-oracle’: URL must be http, ftp, file or https not “”
Please help.
gpgcheck=1
you have 2 option:
1. make sure your gpg is right.
2. disable gpg check with gpgcheck=0
@Swaminathan:
Created dvd.repo in /etc/yum.repos.d.
Content of file:
[el5 dvd] => [el5-dvd]
name=Enterprise Linux dvd 20100405
yum grouplist does not work with this method
I am getting the following error. please help me.
Loaded plugins: rhnplugin
Config Error: File contains no section headers.
file: file://///etc/yum.repos.d/iso.repo, line: 1
‘baseurl=file:///mnt\n’
Just a note about the suggested command to install createrepo manually:
> # rpm -i /mnt/iso/4/Server/createrepo-0.4.4-2.fc6.noarch.rpm
unless you have a “full” OS installation (which is likely not the case, as you are missing createrepo), the installation of the individual package is surely going to drag you into the hell of resolution of the dependencies before it can be actually installed.
Not that I have a solution for the above issue, but is worth underlying that it is better to make sure createrepo is installed since the beginning.
Thanks that was good one!!!!
Was really helpful!! Thanks a ton guys!!!
without working “yum” how we execute the command “yum install createrepo” in step 1 ?