ZYpp

ZYpp（またはLibzypp、ジップ）はopenSUSEやSUSE Linux Enterprise用のYaST、ZypperおよびPackageKit実装などのLinuxアプリケーションの動力源となるパッケージ管理システムエンジンである。ZYppは、ZYppよりも基礎的なパッケージ管理システムと違い、パッケージ依存を計算して充足可能性の解決策を提供する。ZYppはノベルがスポンサーとなっているフリーでオープンソースなソフトウェアプロジェクトであり、GNU General Public License v2以降の条項に基づいてライセンスされている。ZYppはその大部分がC++により実装されている。
Zypper（ジッパー）はローカルメディアや（ネットワーク接続された）リモートメディアにより提供されるソフトウェアパッケージのインストール、削除、更新および検索を行うための、ZYppのネイティブコマンドラインインタフェースである。Zypperと等価なグラフィカルツールはYaSTパッケージ管理モジュールである。openSUSEではバージョン10.2 beta1からZypperを利用している。openSUSE 11.1でZypperはバージョン1.0となった。2009年6月2日、Ark Linuxは依存性解決についてのレビューを完了し、古いを置き換えるためZYppとそのツールを選択したことをアナウンスし、Ark Linuxが最初にZypperを採用したLinuxディストリビューションとなった。ZypperはMeeGo、Sailfish OS、およびTizenといったモバイルLinuxディストリビューションの一部でもある。
歴史.
目的.
ノベルは2003年にXimianとSuSE GmbHとの連続買収に続き、これまでノベルで使用されていた2つのパッケージ管理システムである、YaSTパッケージマネージャととを接近させるための最善の手段として、これら2つの統合を決定した。2005年以前における既存のオープンソースツールとその成熟度を見たところ、どのツールも要求を満たしていないだけではなく、XimianやSUSEが開発した既存のLinux管理インフラソフトウェアでスムーズに動作させることが不可能であった。このため、既存のツールから最善のアイデアを得て新しい実装に取り組むことが決定された。この結果として生み出されたLibzyppを、SUSE Linuxや、Novell ZENworks管理スイートにおけるLinux管理コンポーネントのソフトウェア管理エンジンとするよう計画された。
初期.
Libzyppの解決策は、インストールされたシステムのパッケージを更新するために書かれたRed Carpetの解決策からの移植であった。完全なインストールプロセスのためにRed Carpetの解決策を使用すると限界に達してしまうだけではなく、弱い依存関係やパッチサポートなどの拡張機能をその解決策に追加してしまうと、壊れやすく予測不可能となってしまった。このZYppの解決策における最初のバージョンは満足な処理を行ったが、2006年5月に登場したopenSUSE 10.1リリースではZMDデーモンを結合した企業向けエンタープライズ製品においてシステムパッケージが期待通りに動作しなかった。2006年12月のopenSUSE 10.2リリースでは再び訪れたZYpp v2を使うことで、それ以前のリリースの欠陥をいくつか修正した。その後ZMDは10.3リリースから削除され、企業向けエンタープライズ製品用のみ残された。ZYpp v3は同等な他の既存のパッケージマネージャと比べても優れた機能をopenSUSEに提供したが、速度性能を大きく制限してしまう実装のため、いくつかの欠点に悩まされた。
SAT解決策の統合.
Libzyppが改善を必要とした部分は、依存解決策の速度であった。libsolvは修正BSDライセンスの下で書かれてリリースされている。
Optimal Package Install/Uninstall Manager (OPIUM) やMANCOOSIなどのプロジェクトは、SAT解決策で依存関係の問題を解決しようとしていた。Advanced Packaging Tool (APT) などの伝統的な解決策では、時に容認できない欠陥が明らかになる。ZYppスタックにSATアルゴリズムと統合することが決定した。使われる解決アルゴリズムは有名なMinisatの解決策を基本にしたものであった。openSUSE 11.0で見えたSAT解決の実装は2つのメジャーではあるが独立したブロックを基本としている:
数ヶ月の作業の後、SAT解決策と統合されたこの4代目ZYppバージョンのベンチマーク結果は期待以上のものであり、YaSTやZypperは他のRPMベースのパッケージマネージャよりもスピードやサイズが勝った状態で動作する。
使用方法.
Zypperの使用方法を以下に記す。なお、括弧内はコマンドの省略形となっている。
リポジトリ管理.
zypper repos（lr）
zypper refresh（ref）
ソフトウエア管理.
zypper install（in） パッケージ名
zypper remove（rm） パッケージ名
zypper remove（rm） --clean-deps パッケージ名
更新管理.
パッケージを個別に更新する方法と、修正（パッチ）によって更新する方法が存在する。
zypper update（up）
zypper list-updates（lu）
zypper patch
zypper list-patches（lp）
問い合わせ.
zypper search（se） パッケージ名
zypper info（if） パッケージ名
イースター・エッグ.
zypper moo