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は依存性解決についてのレビューを完了し、古いAPT-RPM（英語版）を置き換えるためZYppとそのツールを選択したことをアナウンスし、Ark Linuxが最初にZypperを採用したLinuxディストリビューションとなった。ZypperはMeeGo、Sailfish OS、およびTizenといったモバイルLinuxディストリビューションの一部でもある。 ノベルは2003年にXimianとSuSE GmbHとの連続買収に続き、これまでノベルで使用されていた2つのパッケージ管理システムである、YaSTパッケージマネージャとRed Carpet（英語版）とを接近させるための最善の手段として、これら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に提供したが、速度性能を大きく制限してしまう実装のため、いくつかの欠点に悩まされた。 Libzyppが改善を必要とした部分は、依存解決策の速度であった。libsolvは修正BSDライセンスの下で書かれてリリースされている。 Optimal Package Install/Uninstall Manager (OPIUM) やMANCOOSIなどのプロジェクトは、SAT解決策で依存関係の問題を解決しようとしていた。Advanced Packaging Tool (APT) などの伝統的な解決策では、時に容認できない欠陥が明らかになる。ZYppスタックにSATアルゴリズムと統合することが決定した。使われる解決アルゴリズムは有名なMinisatの解決策を基本にしたものであった。openSUSE 11.0で見えたSAT解決の実装は2つのメジャーではあるが独立したブロックを基本としている: パッケージや依存情報を保存して取り出すためにデータ辞書アプローチを使う。新しいsolv形式が作成され、これはリポジトリを文字列辞書、関係辞書、そして全てのパッケージ依存物として貯蔵する。複数のsolvリポジトリを読み込んでマージするための所要時間はわずか数ミリ秒である。 パッケージ依存の算出に充足可能性を利用する。充足可能性問題はよく研究された問題であり利用可能な多くの模範解決策がある。パッケージ解決策の複雑さは、SAT解決策を利用する他の領域よりもはるかに単純であるため、模範パッケージ解決策はとても高速である。さらにそれは複雑なアルゴリズムを必要としないため、問題解決が不可能な理由の証明を導いて理解可能な提案を提供できる。 数ヶ月の作業の後、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 ポータル FLOSS openSUSE YaST Dandified Yum (DNF) - ZYppのために開発されたlibsolvを依存性解決に使用 ^ “libzypp.changes”. GitHub. 2019年10月21日閲覧。 ^ “Releases”. GitHub. 2020年6月5日閲覧。 ^ “Libzypp documentation”. 2017年11月19日閲覧。 ^ “Libzypp project homepage”. 2017年11月19日閲覧。 ^ “Another look at Linux packaging systems”. 2017年11月19日閲覧。 ^ “Michael Schroeder, History of satsolver”. 2017年11月19日閲覧。 ^ “libsolv on github”. 2017年11月19日閲覧。 ^ Tucker, Chris; Shuffelton, David; Jhala, Ranjit; Lerner, Sorin (2007), “OPIUM: OPtimal Package Install/Uninstall Manager”, 29th International Conference on Software Engineering (ICSE'07), http://www.cs.ucsd.edu/~lerner/papers/opium.pdf.  ^ EDOS Project Workpackage 2 Team (March 2006), “Report on formal management of software dependencies”, EDOS Project Deliverable Work Package 2 (Deliverable 2), http://www.edos-project.org/xwiki/bin/Main/Deliverables.  ^ Le Berre, Daniel; Parrain, Anne (2008), “On SAT Technologies for dependency management and beyond”, ASPL 2008 (Limerick): Mancoosi.org, http://www.mancoosi.org/papers/leberre-sat-beyond.pdf.  ^ “Minisat.se”. 2017年11月19日閲覧。 ^ “yum and ZYpp speed / memory usage” (16 May 2008). 23 October 2008閲覧。 ^ “Sneak Peeks at openSUSE 11.0: Package Management, with Duncan Mac-Vicar” (6 June 2008). 15 October 2017閲覧。 ^ a b “SDB:Zypper usage”. openSUSE project. 2018年8月23日閲覧。 公式ウェブサイト （日本語） Sneak peeks at openSUSE new package management Distrowatch.com