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' に置き換え

使用例

問題点