Create Yum Repository PDF Print E-mail
Written by Administrator   
Sunday, 15 March 2009 01:49
   1 


   2 




   3 
   4 



   5 
   6 

   7 
   8 
   9 

  10 
  11 
  12 
  13 
  14 
  15 

  16 
  17 
  18 
  19 
  20 
  21 
  22 

  23 
  24 
  25 
  26 
  27 
  28 
  29 
  30 
  31 
  32 
  33 
  34 
  35 
  36 
  37 
  38 
  39 
  40 


  41 
  42 
  43 
  44 
  45 
  46 
  47 
  48 


  49 
  50 
  51 
  52 
  53 
  54 
  55 
  56 
  57 
  58 
  59 
  60 
  61 


  62 
  63 
  64 
  65 
  66 

  67 
  68 
  69 
  70 
  71 
  72 
  73 
  74 
  75 
  76 
  77 
  78 
  79 
  80 
  81 
  82 
  83 
  84 
  85 
  86 
  87 
  88 
  89 
  90 
  91 
  92 
  93 
  94 
  95 
  96 
  97 
  98 
  99 
 100 
 101 
 102 
 103 
 104 
 105 
 106 
 107 
 108 
 109 

 110 
 111 
 112 
 113 


 114 
 115 

 116 
 117 

 118 
 119 
 120 
 121 
 122 
 123 

 124 
 125 

 126 
 127 
 128 
 129 

 130 
 131 
Yum is a powerful tool that greatly improves package handling on RPM-based Linux distributions. This tutorial 
  explains how to create a local yum repository, configure your machine to use this repository, and customise a yum
  RPM to automatically use this repository. 
Package management has always been a sore point for Linux, and particularly for RPM-based distros. "Dependency 
  hell" is the term commonly used for the pain involved in installing a piece of software with a package management
  utility. Debian made things easier with its Advanced Packaging Tool (APT), but that's no comfort to Red Hat and 
  Fedora users. Connectiva Linux created APT-RPM, which brings most of the benefits of APT to RPM-based distros, 
  but early versions bent some rules to get results. 

Yum (Yellow Dog Updater, Modified) was created to address both the perceived deficiences in APT-RPM at the time, 
  and restrictions of the Red Hat up2date package management tool. Yum handles dependencies gracefully and supports
  multiple repositories, as does APT-RPM. It also supports groups -- tell a machine to process an application group
  and it will install all of those applications. This greatly simplifies managing multiple machines.

Why use yum instead of APT-RPM? Well, apart from the groups support, yum is distributed with Fedora Core, and 
  APT-RPM is an add-on.

Creating the base repository 
To create local yum repository, you need a Web server. I'll be using the default Apache configuration you get with 
  Fedora Core 2.

The DocumentRoot for Apache on Fedora Core is set to /var/www/html. Create a yum folder below this:

$ mkdir /var/www/html/yum 

The base install RPMs for FC2 come to approximately 1.9GB in total, so ensure you have enough room. If you don't, 
  create the yum folder somewhere else, and create a softlink:

$ mkdir /home/yum
$ ln -s /home/yum /var/www/html/yum 

You need to ensure that Apache is configured to follow links.

Now you can create a structure to store the files in. Yum supports multiple repositories, so you can serve files 
  for both Fedora Core 1 and 2 from the same server. We're going to store our files in the following structure:

yum
|-Fedora
  |-Core
    |-2
      |-base
Creating this is simple:

$ mkdir -p /var/www/html/yum/Fedora/Core/2/base


To get the source files for the repository, run the following commands for each of the FC2 binary CDs:

$ mount /mnt/cdrom
$ cp /mnt/cdrom/Fedora/RPMS/*.rpm /var/www/html/yum/Fedora/Core/2/base/
$ umount /mnt/cdrom 

Yum works by parsing the RPM headers. To save us from downloading each RPM to read its header, yum's developers 
  provide a tool called yum-arch to extract the headers into their own (much smaller) files. To create your 
  headers, run the commands:

$ cd /var/www/html/yum/Fedora/Core/2/base/
$ yum-arch . 

This creates a headers folder, and turns your collection of files into a repository.

Creating the updates repository 
Having your own base repository is all well and good for installing software, but you can derive far more benefit 
  from having your own Updates repository. Creating one is as straightforward as creating the base was. 
  Conceptually, the Updates repository fits into our structure thusly:

yum
|-Fedora
  |-Core
    |-2
      |-base
      | |-headers
      |-updates
Creating it is simple:

$ mkdir -p /var/www/html/yum/Fedora/Core/2/updates 

Next, get a copy of the updates, which can be found on the Fedora Download Server or your friendly neighbourhood 
  mirror. Simply grab them with your favourite download tool and place them in the updates folder, then run 
  yum-arch again.

Make sure you keep this repository up-to-date, or you'll lose the benefit of having it!

Configuring your machine 
Now that you've got your repositories, you need to set your machine up to talk to them. This is controlled by the 
  file /etc/yum.conf.

Here's the default contents of the file:

[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
retries=20

[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/>

[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/$releasever/$basearch/

#[updates-testing]
#name=Fedora Core $releasever - $basearch - Unreleased Updates
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/testing/$releasever/$basearch/

#[development]
#name=Fedora Core $releasever - Development Tree
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/development/$basearch/
...and here are the changes we'll make:

[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=http://servername/Fedora/Core/$releasever/$basearch/base/

[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://servername/Fedora/Core/$releasever/$basearch/updates/
$releasever and $basearch will get expanded by yum to point to the current folder structure.

Now it's a simple matter of running yum update to see what needs updating.

Lather, rinse, repeat 
Suppose you have 100 machines you want to keep updated. Editing the yum.conf file for each machine is possible, but
  I'm sure you've got better things to do. There's got to be a better way, right?

There is. You can alter the stock Fedora yum RPM to automatically point your machines at the repository.

Get the source RPM (SRPM) from either your CD or the Fedora Download Server (or your friendly neighbourhood mirror,
  of course). The package you want is yum-2.0.7-1.1.src.rpm. As root, install this package with the command rpm -i 
  yum-2.0.7-1.1.src.rpm.

RPM sources are kept in the /usr/src/redhat folder, with the source files in SOURCES and the spec files in SPECS. 
  You need to edit both the default yum.conf file and the yum.spec file.

First, edit /usr/src/redhat/SOURCES/yum.conf.fedora as in the "Configuring your machine" section above. Next, edit 
  /usr/src/redhat/SPECS/yum.spec, changing the line:

Release: 1.1
to:

Release: 1.2
This change gives our customised RPM precedence over the stock one. Now you can build the RPM with the command 
  rpmbuild -ba /usr/src/redhat/SPECS/yum.spec.

The resultant RPM is stored in /usr/src/redhat/RPMS/noarch, and can be installed with the command rpm -U 
  /usr/src/redhat/RPMS/noarch/yum-2.0.7-1.2.noarch.rpm.

Note: if you've already edited your /etc/yum.conf file, you can create the customised one as /etc/yum.conf.rpmnew.

There you have it -- a local yum repository complete with a customised yum package to take the strain out of 
  maintaining your machines.



Last Updated on Friday, 24 April 2009 21:59
 
Valid XHTML & CSS | Template Design ah-68 | Copyright © 2009 by Firma