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