Friday, September 2, 2011

Adding Several Repositories with a Single Installation URL

This is a simple but quite powerful feature of installation. By using a modified installation repository you can add several other repositories automatically (or let user decide which repositories to add). The only thing you need to do is to create an add_on_products.xml file describing all the additional repositories and add it either to root of the installation repository or root of the installation system.

Installation repository can be easily modified just by adding the file there, installation system (inst-sys) can be easily extended by Linuxrc DriverUpdate.

Let's see the add_on_products.xml file format:
<?xml version="1.0"?>
<add_on_products xmlns="http://www.suse.com/1.0/yast2ns"
xmlns:config="http://www.suse.com/1.0/configns">
<product_items config:type="list">
<product_item>
<!-- Mandatory -->
<url>http://download.opensuse.org/repositories/devel:/languages:/ruby/openSUSE_11.4/</url>
<!-- Mandatory, use "/" if you don't know -->
<path>/</path>
<!-- Optional, default => empty list -->
<install_products config:type="list">
<product>Product-ID-From-Repository</product>
</install_products>
<!-- Optional, default => do not ask -->
<ask_user config:type="boolean">true</ask_user>
<!-- Optional, recommended if ask_user == true -->
<name>Add-on Name to Display</name>
<!-- Optional, default => selected -->
<selected config:type="boolean">true</selected>
<!-- Optional, default => none, set by packager -->
<priority config:type="integer">20</priority>
</product_item>
<product_item>
...
</product_item>
</product_items>
</add_on_products>

Items Description:
  • url - Definitely mandatory ;) Defines the URL of additional repository to add.
  • path - Mandatory by design, defines additional relative path to a product at URL. Use "/" if you don't know.
  • install_products / product - Optionally defines which products should be selected for installation from that URL.
  • ask_user - Should be user asked whether to add this repository? Default is false and repository is just automatically added.
  • name - Name of the repository used in dialog while asking user whether to add that repository.
  • selected - Defines the default status of repository while asking user...
  • priority - Optional item defining the priority of repository to add (an integer value between 0 - the highest priority; and 200 - the lowest priority), since yast2-packager-2.21.12
Although this feature works only during [auto]installation, I believe YaST could be enhanced to provide the same functionality while managing repositories on a running system too if needed.

0 comments: