Using the Yum modules to ease systems and distro maintenance Talk Structure: - Intro - Credits - stop me if I'm talking too fast - please interrupt with questions - History - yup - 1.x/2.0.x - 2.2 - 2.4 - State of the Yum - where used - who is involved - me - menno - jeremy - paul - gijs - panu - jack - ryan - luke - michael - icon - thanks to: - greg knaddison - helps users - maintains the faq - jim perrin - answers users' questions with so much patience - jeff pittman - built packages of yum + all its deps for all the platforms I can think of and handles many user questions - getting the latest yum from cvs: - Plugins - reason - describe major parts - hooks/slots config init predownload postdownload prereposetup postreposetup exclude preresolve postresolve pretrans posttrans close - conduits - changes based on the slot you're in. Defined in yum/plugins.py - plugin type definition - CORE - INTERFACE - blurb about them needing to be interactive - where to put them .py files: /usr/lib/yum-plugins or wherever is specified as pluginpath under [main] in yum.conf config files: /etc/yum/pluginconf.d - example - goal: - disable nscd before certain things are installed (useradd) - version 1 - simple - always disable it - version 2 - disable only if something requires useradd - version 3 - add cli option to allow enabling this - version 4 - add the ability to stop everything if the nscd shutdown fails - version 5 - make all the strings definable in the plugin config file - ideas for plugins - external triggers - warnings - avoiding problems. - Q&A Break - Modules - exceptions - YumBaseError - base classes - yumbase - base class which everything else comes out from - packageobject - package object for available or installed package - explain package tuples and when they're used - package sack - searching by all sorts of things - removing/adding packages to the sack - repos - searching the list of repos and setting them up - modifying any of the config about repos - repo - downloading items from a repo - tracking all the repo metadata - config - all config data (duh) - rpmdb - local rpmdb representation - TransactionData - stores all the info on what yum SHOULD do - generic setup - doConfigSetup() - (define the cache) - conditionals: - doTsSetup() - set up a transaction set object - doRpmDBSetup() - read in the packages from your rpmdb - doRepoSetup() - setup your repos - doSackSetup() - read in the package lists into sacks - doUpdateSetup() - create the update object and populate the list - doGroupSetup() - search repos for groups and define them. - examples - list pkgs - available - installed - query pkgs - available - installed NOTE - mention what a nevra is. NOTE - mention what prco is. - list updates - repotrack example - setup - depsolving (of a sort) - download pkgs - other code to look at (brief blurb about each) - yum-utils - pirut - yumex - 2.5 specific things install() remove() update() - Future directions - api goals - goals for 2.5 - api cleanup - get rid of the need to download the headers - make common processes easier (need some feedback on this) - Q&A