Tags:
create new tag
view all tags

lcfg-yummy

lcfg-yummy is strictly speaking not a component - rather it is a tool for generating packagelists.

Introduction

Usage

lcfg-yummy takes a list of packages, calculates the dependencies (using yum), and generates a 'traditional' .rpms packagelist. An example .yummy file:

#ifdef LCFG_OPTIONS_WIRESHARK
wireshark
#endif /* LCFG_OPTIONS_WIRESHARK */

This, once processed by yummy, will generate a .rpms packagelist:

#ifdef LCFG_OPTIONS_WIRESHARK
wireshark-1.2.15-2.el6_2.1 /* repoid=sl6-distro */
/* dependencies */
libsmi-0.4.8-4.el6 /* repoid=sl6-distro */
#endif /* LCFG_OPTIONS_WIRESHARK */

You can then add this particular package to your clients by making sure you are including the .rpms file:

!profile.packages_options mEXTRA(@yummy.rpms)

And then include the relevant packages by setting the following on the client:

!profile.pkgcppopts mADD(-DLCFG_OPTIONS_WIRESHARK)

Installation

You will be using this tool on an LCFG client where you have svn access to be able to check in yummy packagelists and resulting .rpms packagelists.

Add the following to the client profile:

#include <mdp/options/yummy.h>

Then on the client run the following to install the lcfg-yummy tools:

om updaterpms run

This will install lcfg-yummy, and a set of custom yum configuration, pointing at the appropriate vendor, epel, lcfg and devolved repositories

Usage

Make sure you know the path where you have checked out your package lists.

Generate the .yummy file you require (you can copy and paste the wireshark example above to test). In this example, it is /tmp/see_packagelists/see-sl6-options.yummy

Run lcfg-yummy against this packagelist to generate a .rpms file (here it's /tmp/see_packagelists/see-sl6-options.rpms):

lcfg-yummy --root=/usr/lib/yummy/sl63_64-mdpstable --outfile=/tmp/see_packagelists/see-sl6-options.rpms /tmp/see_packagelists/see-sl6-options.yummy

(The full options for lcfg-yummy can be gained by running lcfg-yummy --help).

In the above example we are using a root based on sl63_64 - make sure this is changed to the appropriate release as required.

You can now look at the generated .rpms file to check it looks correct. If it is, check both the .yummy and .rpms file into svn. Any clients using this packagelist will now be updated.

Further Configuration

You can optionally create a custom configuration file for lcfg-yummy - /etc/sysconf/yummy.conf, saving you typing all the options on each run:

[yummy]
installroot=/usr/lib/yummy/sl63_64-mdpstable
reorder_groups=0

To set the above via LCFG using the inifile component (sourced from geos):

#include <mdp/options/inifile.h>
!inifile.files mADD(yummycfg)
inifile.file_yummycfg /etc/sysconfig/yummy.conf
inifile.comment_yummycfg \
# LCFG automatically generated file - do not edit\n\

#define YUMMY_SETOPT(tag,var,value)  \
!inifile.vars mADD(yummycfg_v_/**/tag/**/_/**/var)  \
!inifile.vars_yummycfg_/**/tag mADD(yummycfg_v_/**/tag/**/_/**/var)  \
!inifile.var_yummycfg_v_/**/tag/**/_/**/var mSET(var)  \
!inifile.val_yummycfg_v_/**/tag/**/_/**/var mSET(value)

!inifile.sections mADD(yummycfg_yummy)
!inifile.sections_yummycfg mADD(yummycfg_yummy)
!inifile.section_yummycfg_yummy mSET(yummy)
YUMMY_SETOPT(yummy,installroot,/usr/lib/yummy/sl63_64-mdpstable)
YUMMY_SETOPT(yummy,reorder_groups,0)

At present, the repositories used, and their priorities, are delivered by an rpm.

You can optionally choose to configure the priority of each repository used to find packages and their dependencies. For example, you might want to set the LCFG and your own devolved repository first, with other school repositories last. School repositories are disabled by default. As an example, to enable the see devolved repo, and change it's priority):

!file.files mADD(extrarepos)
file.file_extrarepos /usr/lib/yummy/sl63_64-mdpstable/etc/yum.repos.d/see_extra.repo
file.type_extrarepos    literal:mkdir
file.tmpl_extrarepos \
[devolved-see]\n\
name=IS "see" Devolved Bucket\n\
baseurl=http://master.packages.lcfg.ucs.ed.ac.uk/pkgs/devolved/see/sl6_64/rpms\n\
gpgcheck=false\n\
metadata_expire=300\n\
enabled=1\n\
priority=10\n

Tips

  • You can specify a full package version if you want, e.g. foo-1.2.3-1.el6
  • You can specify a package as foo/i686 for an architecture -specific version.
  • lcfg-yummy understands the LCFG updaterpms flags, such as :br, but you must also give it an architecture until bug 893 is fixed.
  • If there are packages from different repos available only the package from the repo with highest priority is considered and the others are dropped. This might lead to a problem when you request a rpm with a specific version which is only available from one of the lower priority repos. To solve this you will need to push the rpms into a top priotity repo.
  • You can create 'meta-packages' by using #define statements to include other blocks wrapped with an #ifdef. For example, you could combine blocks for OFFICE, MULTIMEDIA and BROWSERS into a meta-package called DESKTOP.

#ifdef FOO_PKGS_DESKTOP
#define FOO_PKGS_OFFICE
#define FOO_PKGS_MULTIMEDIA
#define FOO_PKGS_BROWSERS
#endif /* FOO_PKGS_DESKTOP */

Questions, Bugs, Feature Requests

Please direct any bugs you find with this component to mhagdorn in Geos, or kenny in MDP.

-- Main.mrichardsonedacuk - 2013-03-05

Topic revision: r7 - 2015-09-02 - kenny
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback