Libzypp
出典: openSUSE
目次 |
パッケージ管理と依存関係の解決
SUSE Linux はパッケージ形式にrpmを使用しています。基本的なツールとしてはRPM (RPM Package manager) があり、インストールや削除、パッケージの問い合わせなどの操作ができます。
RPM は、パッケージの要求物が満たされているかどうかをチェックします。例えば、もしパッケージ X が libY を必要としていて、libY のない状態でパッケージ X をインストールしようとしても、rpm はパッケージ X のインストールを拒否し、libY が見つからないという警告を表示します。ただし、RPM は libY を含むパッケージを自動的にインストール機能は備えていません。
以下に示すような利用ケースを、使いやすいユーザーインターフェースで提供するために、rpm(やその他のパッケージ形式)を利用するさまざまなプログラムがあります:
- あるパッケージと、そのパッケージが依存関係にあるすべてのパッケージを自動的にインストールする
- パッケージをリモートサーバやローカルメディアからダウンロードする
- パッケージを削除する
- パッケージを最新のバージョンに更新する
上記の目的のために、SUSE Linux 10.0 は以下のようなプログラムを提供していました:
- YOU - YaST online update (アップデート機能のみ)
- yast package manager ("yast sw_single") - インストールと削除 (アップデートは不可)
- apt-rpm - yast や YOU の代替ソフトウェア
SUSE Linux 10.1 において、SUSE は新しいパッケージ管理/依存関係解決のためのライブラリ、"libzypp" を開発しました。
libzypp は、SUSE の YaST2 パッケージマネージャーとXimian の libredcarpet を統合したものです。Novell では、これまで2つのソリューション――Red Carpet と YaST package manager ――を利用していましたが、もっともよいかたちでそれらを統合することに決めました。
SUSE Linux にとってのそれらの利点は:
- これまでよりも改良されたリゾルバ(依存関係の解決機能)
- パッケージがインストールされている理由、あるいは解決法が見つからない場合における、より豊富な情報
- 何年にもわたってパッケージマネージャーに追加されてきたあらゆる機能のよりよい統合
- コマンドライン・インタフェース("rug")
- パッケージ「と」パッチを同じように取り扱う
- アップデートパッケージの依存関係の処理
- 選択したパッケージを取り扱うよりよい方法(これをパターン、"patterns" と呼ぶ)
- リモート管理(SUSE Linux 10.1 では未導入)
- インストール中のリポジトリの追加
- 異なるリポジトリのより柔軟な取り扱い。例えば各リポジトリに対してパターンを追加できる
- 使用言語(フォント、翻訳文など)やハードウェア(ドライバ)に基づく追加の依存関係
カタログ
カタログ(Catalog)は外部リポジトリに使われる名前です。多くの異なるカタログのタイプがサポートされています:
- YUM メタデータ
- YaST ソース
- Zenworks Server
- OpenCarpet Server
- Red Carpet Enterprise Server
これらのカタログはローカルファイルとしても、ftpやhttpのようなリモートプロトコルを使ったネットワーク経由でも、アクセスできます。
新しいライブラリは、YaST パッケージマネージャー ("yast sw_single") や zenプログラムが利用します。
Zen プログラム
これらのプログラムを利用するには、zmd がデーモンとして起動している必要があります。zmd は、ローカルおよびリモートからのシステム管理操作を許可します。そして、zmd は libzypp ライブラリを利用します。
以下のプログラムが zmd とやり取り(連携)します:
- rug: コマンドラインのクライアント
- zen-updater: シンプルなアップデートツール
- zen-remover: パッケージ削除ツール
- zen-installer: パッケージ追加ツール
新しいパッケージマネージャーにより置き換えられたプログラム
既存のプログラム(SUSE Linux 10.0 に含まれていたもの)で変更されたものは:
- susewatcher は zen-updater に置き換え
- YOU (Yast Online Update) は libzypp と連携するように変更
- 自動アップデート (yast2 online_update in cron) は 'rug' に置き換え

