torutkのブログ

ソフトウェア・エンジニアのブログ

パッケージ管理yumでグループ作成

CentOSでは、パッケージ管理にyumを使用していますが、yumには個々のRPMパッケージをリポジトリから取得するほか、複数のRPMパッケージをグループとしてまとめてリポジトリから取得してインストールすることができます。

# yum groupinstall "GNOME Desktop Environment"

自分で作成しているyumリポジトリでグループを作るには、createrepoコマンドでyumリポジトリの情報(repodata)を構築するときに、あらかじめグループ定義XMLファイルを作成しておき、これを指定します。

# createrepo -g /path/to/mygroups.xml /path/to/repository

このグループ定義XMLファイルは、以下のような定義です。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE comps PUBLIC "-//CentOS//DTD Comps info//EN" "comps.dtd">
<comps>
 <group>
  <id>development-libs</id>
  <name>Development Libraries</name>
  <description>The package in this group are core libraries needed to develop
applications.</description>
  <default>false</default>
  <uservisible>true</uservisible>
  <packagelist>
    <packagereq type="mandatory">glibc-devel</packagereq>
    <packagereq type="default">xmlsec1</packagereq>
    <packagereq type="optional">perl-Content-ASN1</packagereq>
      : (中略)
  </packagelist>
 </group>
      : <group></group>の繰返し
 <category>
  <id>development</id>
  <name>Development</name>
  <description>Packages which provide functionality for developing and
building applications.</description>
  <display-order>70</displayorder>
  <grouplist>
   <groupid>development-libs</groupid>
   <groupid>gnome-software-development</groupid>
       :
  </grouplist>
 </category>
</comps>

このようにXMLで逐一記述していくのは、かなり難儀なことです。
yum-utils-1.1.16以降では、yum-group-managerコマンドが追加され、コマンドでこのyumのグループ情報XMLファイルを作成することができるようになっています。

yum-groups-managerコマンドの簡単な使い方

  • 新規にXMLファイルを生成
yum-groups-manager -n グループ名 --id グループID --save XMLファイル名
 --description 'グループの説明' --mandatory pkg1 pkg2 ... pkgN
 --default pkgA pkgB ... pkgN --optional pkgW pkgX ... pkgZ

グループが1つしか指定できませんが、複数のグループを作成したいときは、続いて各グループごとにコマンドで追記していきます。

  • 既存のXMLファイルにグループを追加
yum-groups-manager -n グループ名 --id グループID --merge XMLファイル名
 --description 'グループの説明' --mandatory pkg1 pkg2 ... pkgN
 --default pkgA pkgB ... pkgN --optional pkgW pkgX ... pkgZ