Createrepo

From Notes_Wiki

Home > CentOS > CentOS 6.x > System administration tools > Package management tools > createrepo

A local yum repository server can be setup to allow caching of packages locally for various clients. To configure local repository server following steps can be used:

  • Install rpmfusion, rpmforge and epel repositories
  • Install createrepo package using 'yum -y install createrepo'
  • Edit '/etc/yum.conf' as follows:
    • Configure yum to keepcache for current server by making 'keepcache="1"'
    • Configure yum to store cache in /var/www/html by making 'cachedir=/var/www/html/$basearch/$releasever'
  • For each folder in /var/www/html/x86_64/6 such as base, epel, etc. do following:
    • Go to /var/www/html/x86_64/6/<folder_name>/packages
    • Run 'createrepo -c cache_dir --update .'
  • Create repository configuration file 'local.repo' with following contents:
[local-base]
name=RHEL  - repo.<organization>.com - base
baseurl = http://repo.<organization>.com/x86_64/6/base/packages/
enabled = 1
gpgcheck = 0
keepcache = 0
metadata_expire = 0

[local-epel]
name=RHEL  - repo.<organization>.com - epel
baseurl = http://repo.<organization>.com/x86_64/6/epel/packages/
enabled = 1
gpgcheck = 0
keepcache = 0
metadata_expire = 0

[local-extras]
name=RHEL  - repo.<organization>.com - extras
baseurl = http://repo.<organization>.com/x86_64/6/extras/packages/
enabled = 0
gpgcheck = 0
keepcache = 0
metadata_expire = 0

[local-rpmforge]
name=RHEL  - repo.<organization>.com - rpmforge
baseurl = http://repo.<organization>.com/x86_64/6/rpmforge/packages/
enabled = 1
gpgcheck = 0
keepcache = 0
metadata_expire = 0

[local-rpmfusion-free-updates]
name=RHEL  - repo.<organization>.com - rpmfusion-free-updates
baseurl = http://repo.<organization>.com/x86_64/6/rpmfusion-free-updates/packages/
enabled = 1
gpgcheck = 0
keepcache = 0
metadata_expire = 0

[local-rpmfusion-nonfree-updates]
name=RHEL  - repo.<organization>.com - rpmfusion-nonfree-updates
baseurl = http://repo.<organization>.com/x86_64/6/rpmfusion-nonfree-updates/packages/
enabled = 1
gpgcheck = 0
keepcache = 0
metadata_expire = 0

[local-updates]
name=RHEL  - repo.<organization>.com - updates
baseurl = http://repo.<organization>.com/x86_64/6/updates/packages/
enabled = 1
gpgcheck = 0
keepcache = 0
metadata_expire = 0
  • Replace <organization> with organization name everywhere. Ensure that repo.<organization>.com points to repository server being configured using /etc/hosts or DNS
  • Copy local.repo file to some other machine at /etc/yum.repos.d/ Do not use the repository on same machine else /var/cache/yum of this machine would have additional folders for the same machines repository.
  • Try to use yum and verify that local repository is visible

The purpose of various options in repository configuration file is:

name
This is used to give a description name to repository
baseurl
Location where repository is located
enabled
Use this repository for yum updates. Hence enabled=1.
gpgcheck
Check signature on packages. Since all packages have been signed using different keys and already been verified when they are downloaded on repository machine using yum, we do not need to check signatures again. Hence gpgcheck=0
metadata_expire
How long to wait before reconnecting to repository server to get fresh list of packages. For local repository it can be set to 0 so that for every yum update fresh metadata is used.

To install package only using local repository use:

yum -y install <package> --disablerepo='*'  --enablerepo='local*'


Updating repository with new packages

For all new packages following steps can be used:

  • yum -y install <package> on repository server
  • For each folder in /var/www/html/x86_64/6 such as base, epel, etc. do following:
    • Go to /var/www/html/x86_64/6/<folder_name>/packages
    • Run 'createrepo -c cache_dir --update .'

Securing setup using HTTPS

The setup can be secured by using HTTPS certificates and by change baseurl to https://. For self-signed certificates refer to easy-rsa to learn how to create certificates and also to learn how to add certificate to host so that yum can use it.


Home > CentOS > CentOS 6.x > System administration tools > Package management tools > createrepo