SDB:Zypper の使い方

移動先: 案内, 検索
この記事では Zypper と呼ばれる、 Libzypp ライブラリを利用したコマンドラインによるパッケージ管理ツールの使い方を説明しています。この記事は Zypper の マニュアルページ (man zypper コマンドで表示することができます) の補足となる資料で、ここで必要な情報が得られない場合は、マニュアルページをお読みください。
バージョン: 13.2この記事は openSUSE 13.2 に搭載されている zypper 1.11.23 に関する記事です。他のバージョンについて、詳しくは Zypper バージョン をお読みください。

目次

クイックリファレンス

下記に示すコマンドが最もよく使われるコマンドでしょう。

zypper                 # 利用可能なグローバルオプションとコマンドの一覧を表示する
zypper help search     # search コマンドに対するヘルプを表示する
zypper lp              # 適用する必要がある修正の一覧で表示する
zypper patch           # 必要な修正を適用する
zypper se sqlite       # sqlite を検索する
zypper rm sqlite2      # sqlite2 を削除する
zypper in sqlite3      # sqlite3 をインストールする
zypper in yast*        # 'yast*' に該当するすべてのパッケージをインストールする
zypper up              # インストール済みのすべてのパッケージを、可能な限り最新のものに更新する

apt, yum, emerge などのパッケージマネージャをお使いになったことがある場合は、 このリンク先 にある記事をお読みのうえ、それらと zypper との比較や違いを知っておくことをお勧めします。

チートシート

このページの記事には様々な説明や情報が書かれていますが、これをチートシートとして 2 枚にまとめたものが下記になります。 英語で書かれた資料ではありますが、 、本資料の一部はマニュアルページ内からも抜粋しているため、コマンドを忘れてしまった場合に見るべきものとして、お手元に置いておくことをお勧めします。

A4 用紙用 (1 ページ目).
A4 用紙用 (2 ページ目).
レターサイズ用 (1 ページ目).
レターサイズ用 (2 ページ目).

一般的な使い方

zypper の一般的な書式は下記の通りです:

# zypper [グローバルオプション] コマンド [コマンドオプション] [パラメータ] ...

[] で括られた個所は必ずしも指定する必要はない項目を示しています。そのため、 zypper で最もシンプルな使い方は、 zypper の後にコマンドだけを記述する方法です。たとえばシステムに対して必要な修正をインストールするには、下記のように入力して実行します:

# zypper patch

patch コマンドに対するヘルプを表示するには、下記のように入力します:

# zypper help patch

グローバルオプション はコマンドの前に指定することができる項目で、たとえば下記のように入力して実行します (問い合わせメッセージを表示しないようにするグローバルオプションです):

# zypper --non-interactive patch

コマンドに対して固有のオプション (コマンドオプション) を指定する場合は、コマンドの後に指定します (ライセンス同意の表示と問い合わせを省略するコマンドオプションです):

# zypper patch --auto-agree-with-licenses

コマンドによっては、 1 つ以上のパラメータを指定しなければならないものもあります (mplayer パッケージをインストールまたは更新しようとしています):

# zypper install mplayer

また、オプション類にも追加のパラメータを指定しなければならないものがあります (パターンを検索するように指定しています):

# zypper search -t pattern

これらを組み合わせると、たとえば下記のようになります (mplayer と amarok を factory リポジトリからインストールし、その状況をより冗長に出力しようとしています):

# zypper -v install --repo factory mplayer amarok

ユーザへの問い合わせ

zypper では、何らかの入力を必要とした場合、問い合わせメッセージの後ろに [] で選択肢を表示します。既定値は () 内に表示され、何も入力せずに <enter> を押すと、既定値を選択したものとみなされます。また、問い合わせによってはヘルプを利用することができるものもあります。この場合、 '?' を入力するとヘルプを表示することができます。また、問い合わせを表示させず、既定値を入力したものとして扱わせたい場合は、 --non-interactive グローバルオプションを指定してください。


用語説明

  • リポジトリ - パッケージそのもののほか、パッケージの情報 (メタデータと呼びます) を含んでいるローカルまたはリモートのディレクトリのことを指します。従来のバージョンでは、リポジトリを インストールソース, サービス, カタログ などと呼んでいました。
  • 別名 - リポジトリの別名とはリポジトリに対して設定する短い名前のことで、 removerepo コマンドや --repo オプションで利用することができます。
  • パッケージ - 一般的にはソフトウエアパッケージ (RPM パッケージ、ソースパッケージ) を意味します。修正、パターン、製品などは、それぞれ別々の種類の パッケージ であり、ソフトウエアパッケージとは区別して扱います。
  • 修正 - 更新 (主にバグ修正) をインストールする際に必要な、 1 つまたはそれ以上の数のパッケージを指します。
  • パターン - 複数のパッケージをまとめたグループを意味します。たとえば Http サーバ パターンは HTTP サーバを動作させるのに必要なパッケージを集めたもので、パターンをインストールすることで、そこに設定された依存関係が必要なパッケージを引き出す仕組みになっています。
  • 製品 - 製品全体を指します (たとえば 'openSUSE 12.2' など) 。

コマンド

zypper には様々なコマンドが用意されています。分類すると下記のとおりです:

  • リポジトリの管理
    refresh, repos, addrepo, removerepo, modifyrepo, namerepo
    refresh-services, services, addservice, removeservice, modifyservice
  • パッケージの管理
    install, remove, source-install
  • 更新の管理
    patch, list-patches, patch-check, patches, update, list-updates, dist-upgrade
  • 問い合わせ
    search, info, what-provides, list-updates, patch-check, patches, packages, patterns, products
  • ロック (施錠)
    locks, addlock, removelock, cleanlocks
  • ユーティリティ
    verify, install-new-recommends
  • その他
    help, licenses, versioncmp, targetos

ヘルプの表示

コマンドを使う際には、まずヘルプの表示方法を覚えておくとよいでしょう。一般的なヘルプ (コマンドとグローバルオプションの一覧) を表示するには、何もパラメータを指定せずに zypper を実行します。特定のコマンドに対してヘルプを表示するには、下記のように実行します:

# zypper help [コマンド]

また、下記のように指定することもできます:

# zypper [コマンド] --help

なお、 --help の代わりに短縮形として -h を使用することもできます。

リポジトリの管理

リポジトリを指定するには、 zypper lr で表示される番号のほか、別名や URI で指定することもできます。番号で指定する際は、事前に必ず zypper lr でご確認ください。リポジトリに対して何らかの変更を実施すると、番号がずれたりする場合があるためです。

設定済みのリポジトリの表示

repos または lr コマンドを指定します。

出力例:

celebi:~ # zypper lr
#  | 別名                             | 名前                               | 有効       | 更新
---+----------------------------------+------------------------------------+------------+----------
 1 | Mewtwo:KDE:Extra                 | KDE:Extra                          | はい (Y)   | はい (Y)
 2 | Mewtwo:repo-ati                  | repo-ati                           | はい (Y)   | はい (Y)
 3 | Mewtwo:repo-debug                | openSUSE-12.2-Debug                | いいえ (N) | はい (Y)
 4 | Mewtwo:repo-debug-update         | openSUSE-12.2-Update-Debug         | いいえ (N) | はい (Y)
 5 | Mewtwo:repo-debug-update-non-oss | openSUSE-12.2-Update-Debug-Non-Oss | いいえ (N) | はい (Y)
 6 | Mewtwo:repo-libdvdcss            | repo-libdvdcss                     | はい (Y)   | はい (Y)
 7 | Mewtwo:repo-non-oss              | openSUSE 12.2 Oss                  | いいえ (N) | はい (Y)
 8 | Mewtwo:repo-oss                  | openSUSE-12.2-Oss                  | はい (Y)   | はい (Y)
 9 | Mewtwo:repo-packman              | packman                            | はい (Y)   | はい (Y)
10 | Mewtwo:repo-source               | openSUSE-12.2-Source               | はい (Y)   | はい (Y)
11 | Mewtwo:repo-update               | openSUSE-12.2-Update               | はい (Y)   | はい (Y)
12 | Mewtwo:repo-update-non-oss       | openSUSE-12.2-Update-Non-Oss       | はい (Y)   | はい (Y)
13 | Mewtwo:security                  | security                           | はい (Y)   | はい (Y)
celebi:~ # zypper lr 5 4
別名               : Mewtwo:repo-debug-update-non-oss
名前               : openSUSE-12.2-Update-Debug-Non-Oss
URI                : http://download.opensuse.org/debug/update/12.2-non-oss/
有効               : いいえ (N)
優先順位           : 99
自動更新           : オン
パッケージを維持   : オフ
種類               : rpm-md
GPG チェック       : オン
GPG 鍵 URI         :
パスプレフィックス :
親サービス         : Mewtwo
MD キャッシュパス  : /var/cache/zypp/raw/Mewtwo:repo-debug-update-non-oss

別名               : Mewtwo:repo-debug-update
名前               : openSUSE-12.2-Update-Debug
URI                : http://download.opensuse.org/debug/update/12.2/
有効               : いいえ (N)
優先順位           : 99
自動更新           : オン
パッケージを維持   : オフ
種類               : rpm-md
GPG チェック       : オン
GPG 鍵 URI         :
パスプレフィックス :
親サービス         : Mewtwo
MD キャッシュパス  : /var/cache/zypp/raw/Mewtwo:repo-debug-update

その他の例:

zypper lr -u       # 表内にリポジトリの URI を含めるようにする
zypper lr -d       # 表内にその他のリポジトリ属性情報を含めるようにする
zypper lr -P       # 表内にリポジトリの優先順位を含めるようにし、優先順位順に表示する
zypper lr -e my    # すべてのリポジトリ設定を 'my.repo' というファイル名のファイルに出力する

リポジトリの追加

addrepo または ar コマンドを指定します。

パッケージをインストールできるようにするには、 1 つ以上の リポジトリ を設定しなければなりません。リポジトリを追加するには、 addrepo コマンドを使用します:

出力例:

リポジトリ 'vlc' を追加しています ........................................[完了]
リポジトリ 'vlc' を正常に追加しました
有効: はい (Y)
自動更新: いいえ (N)
GPG チェック: はい (Y)
URI: http://download.videolan.org/pub/vlc/SuSE/11.1

その他の例:

zypper ar http://download.opensuse.org/repositories/X11:/XGL/openSUSE_11.1/X11:XGL.repo  # .repo ファイルを利用してリポジトリを追加する
zypper ar -c ftp://some.download.site myalias   # 追加時にリポジトリの存在を確認します
zypper ar my/dir/with/rpms local                # rpm ファイルのあるローカルのディレクトリをリポジトリとして追加します

対応するメディアの種類と URI について、詳しくは Libzypp をお読みください。

リポジトリの更新

refresh または ref コマンドを指定します。

リポジトリを追加した後や、リポジトリを更新してから日時が経過した場合は、 更新 (refresh) 作業を実施する必要があります。更新作業とは、パッケージのメタデータをダウンロードして解釈し、あとから素早く読み出せるように .solv キャッシュを作成する作業のことを言います。

# zypper refresh
リポジトリ 'Packman 11.1' のメタデータを取り出しています... ......[完了]
リポジトリ 'Packman 11.1' のキャッシュを構築しています ...........[完了]
リポジトリ 'Updates for 11.1' のメタデータを取り出しています... ......[完了]
リポジトリ 'Updates for 11.1' のキャッシュを構築しています ...........[完了]
リポジトリ 'openSUSE-11.1-Oss' は最新の状態に更新済みです。
全てのリポジトリを更新しました。

なお、リポジトリに対して autorefresh (自動更新) のオプションが設定されている場合は、自動的に更新処理が動作するため、更新処理について気にする必要はありません。ただし、更新処理を自分で制御したい場合 (たとえば単純に 'zypper info krusader' を実行したいだけなのに、更新処理が動作してしまい、完了までに時間がかかってしまうような問題を避けたい場合) は、自動更新を無効化してください。詳しくは man zypper をお読みください。

その他の例:

zypper ref packman main  # 特定のリポジトリ ('packman', 'main') だけを更新する
zypper ref -f upd        # 特定のリポジトリ ('upd') だけを強制的に更新する

リポジトリの削除

removerepo または rr コマンドを指定します。

# zypper rr vlc 1 23 foo
リポジトリ '23' は別名/番号/URI のいずれでも見つかりません。
リポジトリ 'foo' は別名/番号/URI のいずれでも見つかりません。
リポジトリ 'repo-debug' を削除しています ........................................[完了]
リポジトリ 'repo-debug' を削除しました。
リポジトリ 'vlc' を削除しています ........................................[完了]
リポジトリ 'vlc' を削除しました。


リポジトリの変更

modifyrepo または mr コマンドを指定します。

リポジトリ #6 を無効化するには、下記の通りに実行します:

# zypper mr -d 6
リポジトリ 'repo-non-oss' を無効に設定しました。

'packman' リポジトリに対して、自動更新と RPM ファイルのキャッシュを有効にし、優先順位を 70 に設定するには、下記の通りに実行します:

# zypper mr -rk -p 70 packman
リポジトリ 'packman' の自動更新を有効に設定しました。
リポジトリ 'packman' の RPM ファイルキャッシュ設定を有効にしました。
リポジトリ 'packman' の優先順位を 70 に設定しました。

すべてのリポジトリに対して、 RPM ファイルのキャッシュを無効にするには、下記の通りに実行します:

# zypper mr -Ka
リポジトリy 'local' に対して変更することは何もありません。
リポジトリ 'packman' の RPM ファイルキャッシュ設定を無効にしました。
リポジトリ 'fate' に対して変更することは何もありません。
リポジトリ 'upd' に対して変更することは何もありません。
リポジトリ 'repo-oss' に対して変更することは何もありません。
リポジトリ 'repo-non-oss' に対して変更することは何もありません。

すべてのリポジトリに対して、 RPM ファイルのキャッシュを有効にするには、下記の通りに実行します:

# zypper mr -ka
リポジトリ 'repo-non-oss' の RPM ファイルキャッシュ設定を有効にしました。
リポジトリ 'Main Repository (OSS)' の RPM ファイルキャッシュ設定を有効にしました。
リポジトリ 'Main Repository (NON-OSS)' の RPM ファイルキャッシュ設定を有効にしました。
リポジトリ 'openSUSE-11.1-Updates' の RPM ファイルキャッシュ設定を有効にしました。


リポジトリの名前変更

renamerepo または nr コマンドを指定します。

# zypper nr 3 upd
リポジトリ 'openSUSE-11.1-Updates' は 'upd' に名前を変更しました。

このコマンドは、現時点ではリポジトリの 別名 のみを変更することができます。リポジトリの 表示名 を変更したい場合は、 mr コマンドをご利用ください。

なお、リポジトリの別名は後から --repo オプションで指定することから、入力しやすい名前を指定することをお勧めします。また、リポジトリを番号で指定するよりは、別名で指定するほうが安全です (リポジトリの番号は、様々な操作で入れ替わってしまう場合があるためです) し、 URI で指定するよりは短くて済みます (コピー&ペーストができるものの、一般的に URI は長いためです) 。

リポジトリのエクスポート (ファイル出力) とインポート (ファイルからの取り込み)

repos --export または lr -e コマンドを指定します。

すべての設定を含むリポジトリの一覧をファイルに出力し、それを後から (もしくは別のマシンに) 取り込むことができます。

# zypper lr --export backups/repos/foo.repo
# zypper ar backups/repos/foo.repo

サービスの管理

サービスはリポジトリの上位に位置するもので、リポジトリを管理するために使用されるものです。 libzypp では リポジトリインデックスサービス (RIS) と呼ばれるサービスタイプにのみ対応しています。

サービスの追加

addservice または as コマンドを指定します。

サービスを追加するには、 addservice コマンドを指定します。

例:

celebi:~ # zypper as -t RIS http://mewtwo.domain/ Mewtwo
サービス 'Mewtwo' は正常に追加されました。

サービスの更新

refresh-services または refs コマンドを指定します。

サービスを追加した後は、サービスを更新して提供されるリポジトリを設定する必要があります:

celebi:~ # zypper refs
サービス 'Mewtwo' を更新しています。
リポジトリ 'KDE:Extra' を追加しています .......................................[完了]
リポジトリ 'repo-ati' を追加しています ........................................[完了]
リポジトリ 'openSUSE-12.2-Debug' を追加しています .............................[完了]
リポジトリ 'openSUSE-12.2-Update-Debug' を追加しています ......................[完了]
リポジトリ 'openSUSE-12.2-Update-Debug-Non-Oss' を追加しています ..............[完了]
リポジトリ 'repo-libdvdcss' を追加しています ..................................[完了]
リポジトリ 'openSUSE-12.2-Oss' を追加しています ...............................[完了]
リポジトリ 'packman' を追加しています .........................................[完了]
リポジトリ 'openSUSE-12.2-Source' を追加しています ............................[完了]
リポジトリ 'openSUSE-12.2-Update' を追加しています ............................[完了]
リポジトリ 'openSUSE-12.2-Update-Non-Oss' を追加しています ....................[完了]
リポジトリ 'security' を追加しています ........................................[完了]
全てのサービスを更新しました。

サービスをはじめて更新した後は、 zypper mr -e -a コマンドでリポジトリを有効にしなければなりません。

サービスの削除

removeservice または rs コマンドを指定します。

サービスは rs コマンドで削除することができます。

例:

celebi:~ # zypper rs Mewtwo
サービス 'Mewtwo' を削除しています:
Eliminado el repositorio 'KDE:Extra' を削除しています .........................[完了]
Eliminado el repositorio 'repo-ati' を削除しています ..........................[完了]
Eliminado el repositorio 'openSUSE-12.2-Debug' を削除しています ...............[完了]
Eliminado el repositorio 'openSUSE-12.2-Update-Debug' を削除しています ........[完了]
Eliminado el repositorio 'openSUSE-12.2-Update-Debug-Non-Oss' を削除しています [完了]
Eliminado el repositorio 'repo-libdvdcss' を削除しています ....................[完了]
Eliminado el repositorio 'openSUSE-12.2-Oss' を削除しています .................[完了]
Eliminado el repositorio 'packman' を削除しています ...........................[完了]
Eliminado el repositorio 'openSUSE-12.2-Source' を削除しています ..............[完了]
Eliminado el repositorio 'openSUSE-12.2-Update' を削除しています ..............[完了]
Eliminado el repositorio 'openSUSE-12.2-Update-Non-Oss' を削除しています ......[完了]
Eliminado el repositorio 'security' を削除しています ..........................[完了]
サービス 'Mewtwo' を削除しました。

パッケージの管理

パッケージの選択

パッケージをインストールしたり削除したりする際、パッケージの選択にはいくつかの方法があります。

  • 機能名による指定
    zypper in eclipse
    zypper in qt
  • 機能名とアーキテクチャ、バージョン番号による指定
    zypper in 'zypper<0.12.10'
    zypper in zypper.i586=0.12.11
  • 正確なパッケージ名による指定 (--name)
    zypper in -n ftp
  • 正確なパッケージ名とリポジトリによる指定 (--name を含む)
    zypper in factory:zypper
  • ワイルドカードによるパッケージ名の指定
    zypper in yast*ftp*
  • .rpm パッケージファイル名による指定。相対パスまたは絶対パスのいずれかで指定することができます
  •  zypper in foo.rpm  # 相対パス
    
     zypper in /path/to/somewhere/foo.rpm  # 絶対パス
    

パッケージのインストール

install または in コマンドを指定します。

名前でパッケージを指定してインストールするには、下記のように実行します:

# zypper install git
インストール済みのパッケージを読み込んでいます...

下記の新しいパッケージをインストールします:
  subversion-perl sqlite3 perl-DBD-SQLite git-svn git-cvs git


全ダウンロードサイズ: 1.1 M 。この操作を行なうと、追加で 4.6 M の容量を使用します。
続行しますか? [y/n/? 全てのオプションを表示] (y):
パッケージ subversion-perl-1.5.0-96.1.x86_64 を取得しています (1/6), 950.0 K (展開後 4.1 M)
取得しています: subversion-perl-1.5.0-96.1.x86_64.rpm [完了]
インストールしています: subversion-perl-1.5.0-96.1 [完了]
パッケージ sqlite3-3.5.7-17.1.x86_64 を取得しています (2/6), 30.0 K (展開後 40.0 K)
取得しています: sqlite3-3.5.7-17.1.x86_64.rpm [完了]
インストールしています: sqlite3-3.5.7-17.1 [完了]
パッケージ package perl-DBD-SQLite-1.14-41.1.x86_64 を取得しています (3/6), 44.0 K (展開後 103.0 K)
取得しています: perl-DBD-SQLite-1.14-41.1.x86_64.rpm [完了]
インストールしています: perl-DBD-SQLite-1.14-41.1 [完了]
パッケージ git-svn-1.5.4.5-26.1.x86_64 を取得しています (4/6), 66.0 K (展開後 195.0 K)
取得しています: git-svn-1.5.4.5-26.1.x86_64.rpm [完了]
インストールしています: git-svn-1.5.4.5-26.1 [完了]
パッケージ git-cvs-1.5.4.5-26.1.x86_64 を取得しています (5/6), 63.0 K (展開後 205.0 K)
取得しています: git-cvs-1.5.4.5-26.1.x86_64.rpm [完了]
インストールしています: git-cvs-1.5.4.5-26.1 [完了]
パッケージ git-1.5.4.5-26.1.x86_64 を取得しています (6/6), 10.0 K (展開後 3.0 K)
取得しています: git-1.5.4.5-26.1.x86_64.rpm [完了]
インストールしています: git-1.5.4.5-26.1 [完了]

提供する機能名を指定してインストールすることもできます:

# zypper in MozillaFirefox \< 3
インストール済みのパッケージを読み込んでいます...
'MozillaFirefox<3' を提供する 'MozillaFirefox' は既にインストール済みです。
何もすることがありません。
# zypper in MozillaFirefox \>= 3
インストール済みのパッケージを読み込んでいます...

下記のパッケージをアップグレードします:
  mozilla-xulrunner190-translations MozillaFirefox mozilla-xulrunner190-gnomevfs
mozilla-xulrunner190 MozillaFirefox-translations


下記のパッケージを削除します:
  mozilla-xulrunner190-lang


全ダウンロードサイズ: 11.0 M 。この操作を行なうと、 12.9 M の容量が解放されます。
続行しますか? [y/n/p/? 全てのオプションを表示] (y):
# zypper in 'libqtiff.so()(64bit)'
インストール済みのパッケージを読み込んでいます...
'libqtiff.so()(64bit)' を提供する 'libqt4-x11' は既にインストール済みです。
何もすることがありません。

その他の例:

zypper in yast*                     # すべての yast モジュールをインストールする
zypper in -t pattern lamp_server    # lamp_server パターン (LAMP サーバを動作させるのに必要なパッケージ類) をインストールする
zypper in emacs pattern:lamp_server # emacs パッケージと lamp_server パターンをインストールする
zypper in vim -emacs                # vim をインストールして emacs を削除するまでを一括で行なう
zypper in amarok packman:libxine1   # packman から libxine1 をインストールし、 amarok を任意のリポジトリからインストールする
zypper in bitchx-1.1-81.x86_64.rpm  # ローカルのディレクトリにある bitchx rpm をインストールする
zypper in -f subversion             # subversion の強制再インストールを実施する

パッケージの削除

remove または rm コマンドを指定します。

remove コマンドは install コマンドとは全く逆の動作をするコマンドですが、非常によく似ています。

# zypper remove sqlite
インストール済みのパッケージを読み込んでいます...

下記のパッケージを削除します:
  sqlite3 perl-DBD-SQLite git-cvs git


この操作を行なうと、 351.0 K の容量が開放されます。
続行しますか? [y/n/p/? 全てのオプションを表示] (y): n


ソースパッケージと構築に必要なパッケージのインストール

source-install または si コマンドを指定します。

# zypper si zypper
インストール済みのパッケージを読み込んでいます...

下記の新しいパッケージをインストールします:
  libzypp-devel libsatsolver-devel


下記のソースパッケージをインストールします:
  zypper


全ダウンロードサイズ: 1.5 M. この操作を行なうと、追加で 6.7 M の容量を使用します。
Continue? [YES/no]:

ソースパッケージのみ、もしくは構築に必要なパッケージのみをインストールすることもできます:

zypper si -D zypper    # ソースパッケージのみをインストールする (構築に必要なパッケージはインストールしない)
zypper si -d zypper    # 構築に必要なパッケージのみをインストールする (ソースパッケージはインストールしない)

パッケージの更新

update または up コマンドを指定します。

下記のコマンドは、パッケージを利用可能な新しいバージョンに更新します。 更新の管理 についてもお読みください。

zypper up                           # インストール済みのすべてのパッケージを、できるだけ新しいバージョンに更新する
zypper up libzypp zypper            # libzypp と zypper のみを更新する
zypper in sqlite3                   # sqlite3 がインストールされている場合は更新し、インストールされていない場合はインストールする

問い合わせ

パッケージの検索

search または se コマンドを指定します。

既定では、 search コマンドは種類やステータス、リポジトリに関係なく検索を行ない、名前が指定した文字列に該当するものを表示します (大文字と小文字の区別も行ないません):

celebi:~ # zypper se sqlite
リポジトリのデータを読み込んでいます...
インストール済みのパッケージを読み込んでいます...

S | 名前                        | 概要                                                           | 種類      
--+-----------------------------+----------------------------------------------------------------+-----------
  | dovecot21-backend-sqlite    | SQLite support for Dovecot                                     | パッケージ
  | go-gosqlite                 | Trivial SQLite binding for Go                                  | パッケージ   
  | go-gosqlite                 | Trivial SQLite binding for Go                                  | ソースパッケージ
  | go-gosqlite-doc             | API documenation                                               | パッケージ
  | libapr-util1-dbd-sqlite3    | DBD driver for SQLite 3                                        | パッケージ
  | libdbi-drivers-dbd-sqlite3  | SQLite3 driver for libdbi                                      | パッケージ
  | libgda-3_0-sqlite           | Sqlite Provider for GNU Data Access (GDA)                      | パッケージ
  | libgda-5_0-sqlite           | Sqlite Provider for GNU Data Access (GDA)                      | パッケージ
i | libqt4-sql-sqlite           | Qt 4 sqlite plugin                                             | パッケージ
i | libqt4-sql-sqlite-32bit     | Qt 4 sqlite plugin                                             | パッケージ
i | libsqlite3-0                | Shared libraries for the Embeddable SQL Database Engine        | パッケージ
i | libsqlite3-0-32bit          | Shared libraries for the Embeddable SQL Database Engine        | パッケージ
  | mono-data-sqlite            | Database connectivity for Mono                                 | パッケージ
  | pdns-backend-sqlite2        | SQLite 2 backend for pdns                                      | パッケージ
i | perl-DBD-SQLite             | Self-contained RDBMS in a DBI Driver                           | パッケージ
  | perl-DBD-SQLite             | Self-contained RDBMS in a DBI Driver                           | ソースパッケージ
  | perl-DBD-SQLite-devel       | Development files for perl-DBD-SQLite                          | パッケージ
i | php5-sqlite                 | PHP5 Extension Module                                          | パッケージ
  | proftpd-sqlite              | SQLite Module for ProFTPD                                      | パッケージ
  | python-pysqlite             | DB-API 2.0 interface for SQLite 3.x                            | パッケージ
  | python-pysqlite             | DB-API 2.0 interface for SQLite 3.x                            | ソースパッケージ
  | python-pysqlite-debuginfo   | Debug information for package python-pysqlite                  | パッケージ
  | python-pysqlite-debugsource | Debug sources for package python-pysqlite                      | パッケージ
  | qt3-sqlite                  | SQLite Database Plug-In for Qt                                 | パッケージ
  | rubygem-sqlite3             | A Ruby interface for the SQLite3 database engine               | パッケージ
  | rubygem-sqlite3             | A Ruby interface for the SQLite3 database engine               | ソースパッケージ
  | rubygem-sqlite3-doc         | RDoc documentation for sqlite3                                 | パッケージ
  | rubygem-sqlite3-testsuite   | Test suite for sqlite3                                         | パッケージ
i | sqlite2                     | Embeddable SQL Database Engine                                 | パッケージ
  | sqlite2                     | Embeddable SQL Database Engine                                 | ソースパッケージ
  | sqlite2-32bit               | Embeddable SQL Database Engine                                 | パッケージ
  | sqlite2-devel               | Embeddable SQL Database Engine                                 | パッケージ
  | sqlite3                     | Embeddable SQL Database Engine                                 | パッケージ
  | sqlite3                     | Embeddable SQL Database Engine                                 | ソースパッケージ
i | sqlite3-devel               | Embeddable SQL Database Engine                                 | パッケージ
  | sqlite3-tcl                 | Tcl binding for SQLite                                         | パッケージ
  | strongswan-sqlite           | OpenSource IPsec-based VPN Solution                            | パッケージ
  | tntdb3-sqlite               | Tntdb is a c++-class-library for easy database-access - sqlite | パッケージ
  | tntdb3-sqlite-debuginfo     | Debug information for package tntdb3-sqlite                    | パッケージ
  | ulogd2-sqlite3              | SQLite3 output target for ulogd2                               | パッケージ

最初の列に文字 "i" が記されている場合は、そのソフトウエアがローカルマシンにインストールされていることを示しています。該当するパッケージに対して、利用可能なすべてのバージョンを表示するには、 "--details/-s" オプションを使用します:

celebi:~ # zypper search -s --match-exact VirtualBox
リポジトリのデータを読み込んでいます...
インストール済みのパッケージを読み込んでいます...

S | 名前       | 種類             | バージョン   | アーキテクチャ | リポジトリ
--+------------+------------------+--------------+----------------+---------------------
  | virtualbox | パッケージ       | 4.1.18-1.3.1 | x86_64         | openSUSE-12.2-Oss   
  | virtualbox | パッケージ       | 4.1.18-1.3.1 | i586           | openSUSE-12.2-Oss   
  | virtualbox | ソースパッケージ | 4.1.18-1.3.1 | noarch         | openSUSE-12.2-Source

最初の列に文字 "i" が記されている場合は、そのソフトウエアがローカルマシンにインストールされていることを示しています。また、最初の列に文字 "v" が書かれている場合は、そのソフトウエアがローカルマシンにインストールされているものの、異なるバージョンのものがリポジトリ上に存在していることを示しています。

その他の例:

zypper se -dC --match-words RSI   # ''RSI'' という名前に完全に一致する (大文字と小文字も区別する) ものを検索する。このとき、検索対象には概要と説明を含める
zypper se 'yast*'                 # 'yast' で始まるすべてのパッケージを表示する (シェルの展開機能が存在することに注意! よくわからない場合は必ず ' ' で括っておくこと!)
zypper se -r packman              # 'packman' リポジトリが提供するすべてのパッケージを表示する
zypper se -i sqlite               # 名前に 'sqlite' を含むすべてのインストール済みパッケージを表示する
zypper se -t pattern -r repo-oss  # 'repo-oss' リポジトリ内に存在するすべてのパターンを表示する
zypper se -t product              # 利用可能なすべての製品を一覧表示する

パッケージに関する情報の取得

info または if コマンドを指定します。

celebi:~ # zypper info amarok
リポジトリのデータを読み込んでいます...
インストール済みのパッケージを読み込んでいます...


パッケージ amarok に関する情報:

リポジトリ: packman
名前: amarok
バージョン: 2.6.0-7.3
アーキテクチャ: x86_64
製造元: http://packman.links2linux.de
インストール済み: はい (Y)
状態: 期限切れ (バージョン 2.6.0-6.9 がインストールされています)
インストール後のサイズ: 31.0 MiB
概要: Media Player for KDE
説明: 
Amarok is a media player for all kinds of media. This includes MP3, Ogg
Vorbis, audio CDs, podcasts and streams. Play lists can be stored in
.m3u or .pls files.

このコマンドは、パッケージ名 'amarok' に関する詳細な情報を表示します。

その他の例:

zypper info -t patch MozillaFirefox    # 'MozillaFirefox' の修正に関する情報を表示する
zypper patch-info MozillaFirefox       # 上と同じ
zypper info -t pattern lamp_server     # 'lamp_server' パターンに関する情報を表示する
zypper info -t product openSUSE-FTP    # 指定した製品に関する情報を表示する

依存関係

what-provides または wp コマンドを指定します。

指定した機能を提供するものをすべて表示したい場合は、下記のように実行します:

celebi:~ # zypper wp firefox
リポジトリのデータを読み込んでいます...
インストール済みのパッケージを読み込んでいます...

S | 名前           | 種類       | バージョン    | アーキテクチャ | リポジトリ
--+----------------+------------+---------------+----------------+---------------------
i | MozillaFirefox | パッケージ | 15.0.1-2.11.1 | x86_64         | openSUSE-12.2-Update
v | MozillaFirefox | パッケージ | 15.0-2.7.1    | x86_64         | openSUSE-12.2-Update
v | MozillaFirefox | パッケージ | 14.0.1-2.4.1  | x86_64         | openSUSE-12.2-Oss   
v | MozillaFirefox | パッケージ | 15.0.1-2.11.1 | i586           | openSUSE-12.2-Update
v | MozillaFirefox | パッケージ | 15.0-2.7.1    | i586           | openSUSE-12.2-Update
v | MozillaFirefox | パッケージ | 14.0.1-2.4.1  | i586           | openSUSE-12.2-Oss   

このコマンドは rpm -q --whatprovides firefox と似ていますが、 rpm は RPM データベース (インストール済みのパッケージに関するデータベース) のみに対して問い合わせを行なうことができるのに対して、 zypper はインストール済みのパッケージのほか、任意のリポジトリが提供する機能名の提供元などを調べることもできます。

その他の問い合わせ

それぞれ patches, packages, patterns, products のコマンドは、 search -s -t [patch,package,pattern,product] と似ていますが、パッケージの種類ごとに固有の情報をいくつか表示する点が異なっています。たとえば patches では、修正の状態 (必要/セキュリティ/不要) も表示されます。

なお、 list-updatespatch-check については、 更新の管理 をお読みください。

パッケージのロック (施錠)

locks または ll コマンド、 addlock または al コマンド、 removelock または rl コマンド、 cleanlocks または cl コマンドのいずれかを使用します。

パッケージのロック (施錠) を実施すると、システム内でパッケージを変更しないようにすることができます。有効に設定されたロックが存在していて、特定のパッケージがそれに該当すると、インストール状態を変更することができなくなります。インストール済みのパッケージであれば、そのパッケージは削除やアップグレードができなくなりますし、インストールされていないパッケージであれば、インストールができなくなります。

'yast2' で始まるすべてのパッケージにロックを設定するには、下記のように実行します:

celebi:~ # zypper al 'yast2*'
指定したパッケージロックを設定しました。

なお、指定にあたってはシェルの展開機能に注意してください。作業中のディレクトリ内に yast2* に該当するファイルが存在すると、該当するファイルやディレクトリに展開されてしまいます。必ず ' ' で括って指定してください。

現在有効なロックを表示するには、下記のように実行します:

celebi:~ # zypper ll
#  | 名前                          | 種類    | リポジトリ
---+-------------------------------+---------+-----------
1  | PackageKit-gstreamer-plugin   | package | (どれでも)
2  | PackageKit-backend-zypp       | package | (どれでも)
3  | PackageKit-branding-openSUSE  | package | (どれでも)
4  | apper                         | package | (どれでも)
5  | PackageKit-browser-plugin     | package | (どれでも)
6  | libpackagekit-glib2-14        | package | (どれでも)
7  | PackageKit-gtk3-module        | package | (どれでも)
8  | libpackagekit-qt2-2           | package | (どれでも)
9  | pk-update-icon                | package | (どれでも)
10 | libpackagekit-qt2-2-32bit     | package | (どれでも)
11 | libpackagekit-qt2-devel-32bit | package | (どれでも)
12 | gnome-packagekit              | package | (どれでも)
13 | libpackagekit-qt2-devel       | package | (どれでも)
14 | PackageKit                    | package | (どれでも)

ロックを削除するには、下記のように実行します:

# zypper rl 'yast2*'
1 個のパッケージロックを解除しました。

その他の例:

zypper al zypper                   # 'zypper' に対するロック (正確一致)
zypper al -r repo-oss virtualbox*  # ロックを 'repo-oss' リポジトリに限定する (他のリポジトリからのものに対してはロックを行なわない)
zypper rl 3                        # 番号でロックを削除する

ロックファイル を直接編集することで、ロックを操作することもできます。

ユーティリティ

依存関係の検証

verify または ve コマンドを指定します。

何らかの理由でシステムを壊してしまった場合、パッケージの依存関係も壊れてしまうことがあります。アプリケーションの起動時に、何らかのコンポーネントが不足している旨のメッセージが表示された場合は、 zypper を利用して下記のようにチェックを行なってください:

$ rpm -e --nodeps mozilla-xulrunner190 $ firefox
Could not find compatible GRE between version 1.9.0 and 1.9.0.
# zypper ve
インストール済みのパッケージを読み込んでいます...
インストール済みのパッケージのうち、いくつかの依存関係が壊れています。依存関係を修復するには、以下の作業を実行する必要があります:

下記の新しいパッケージをインストールします:
  mozilla-xulrunner190


全ダウンロードサイズ: 6.5 M. この操作を行なうと、追加で 23.5 M の容量を使用します。
続行しますか? [y/n/? 全てのオプションを表示] (y): y


新しく推奨されるようになったパッケージのインストール

install-new-recommends または inr コマンドを指定します。

このコマンドは、既にインストールされているパッケージが新たに推奨するようになったパッケージをインストールします。これにより、お使いのソフトウエアに対する新しい言語バンドルをインストールしたり、新しく追加したハードウエアに対するドライバをインストールしたりすることができます。

# zypper inr
インストール済みのパッケージを読み込んでいます...

下記の新しいパッケージをインストールします:
  kdebase4-openSUSE-lang bundle-lang-common-cs


全ダウンロードサイズ: 534.0 K. この操作を行なうと、追加で 1.9 M の容量を使用します。
続行しますか? [y/n/? 全てのオプションを表示] (y):

プロセスの確認

ps コマンドを指定します。

このコマンドは、直近のパッケージ更新や削除によって発生した、削除済みのファイルを使用しているプロセスを表示します。

最近のアップグレードにより削除されたファイルについて、これらを使用している可能性のある実行中プログラムがあります。ご確認の上、これらを再起動してください。 'zypper ps' と入力すると、プログラムの一覧を表示することができます。
celebi:~ # zypper ps
以下の実行中プロセスが削除済みのファイルを使用しています:

PID   | PPID | UID  | ログイン | コマンド                      | サービス | ファイル
------+------+------+----------+-------------------------------+----------+-----------------------------
1     | 0    | 0    | root     | systemd                       |          | /lib64/libudev.so.0.13.1    
759   | 1    | 0    | root     | systemd-logind                |          | /lib64/libudev.so.0.13.1    
1827  | 1696 | 0    | root     | Xorg                          |          | /lib64/libudev.so.0.13.1   

これらのプロセスを再起動する必要があります。
上記の表内にある値の意味については、 'man zypper' をご覧ください。

更新の管理

お使いのシステムを最新の状態に保つための方法としては、 2 つのアプローチが存在します。 1 つは patch-wise (修正を基準にする方法) と呼ばれるもの、もう 1 つは package-wise (パッケージを基準にする方法) と呼ばれるものです。

patch-wise のアプローチは、特に安定したリリースを利用したいユーザに適切な方法で、オンライン更新のリポジトリを介して公開される修正のみを適用する方法です。更新リポジトリは、システムをインストールしたりアップグレードしたりすることで、何もしなくても追加されます。なお、 YaST コントロールセンター から オンライン更新の設定 を利用したり、 zypper を利用して後から追加したりすることもできます。利用可能な openSUSE 更新リポジトリは こちら に一覧があります。

同様の機能を持つ YaST モジュールは オンライン更新モジュール です。

もう 1 つのアプローチである package-wise による更新は、 パッケージの更新 のセクションで説明しています。この場合も、任意のリポジトリ内にある新しいバージョンのパッケージをインストールすることができます。

必要な修正の一覧表示

list-patches または lp コマンドを指定します。

必要なすべての修正を一覧表示するには、下記の通りに実行します:

celebi:~ # zypper lp
リポジトリのデータを読み込んでいます...
インストール済みのパッケージを読み込んでいます...

リポジトリ           | 名前              | バージョン | カテゴリ    | 状態   | 概要
---------------------+-------------------+------------+-------------+--------+---------------------------------------------------------------------
openSUSE-12.2-Update | openSUSE-2012-651 | 1          | recommended | needed | udev: create /dev/root symlink with dynamic rule for systemd
openSUSE-12.2-Update | openSUSE-2012-655 | 1          | recommended | needed | clamav: update to version 0.97.6
openSUSE-12.2-Update | openSUSE-2012-657 | 1          | recommended | needed | NetworkManager: Several Bug fixes
openSUSE-12.2-Update | openSUSE-2012-659 | 1          | recommended | needed | timezone: update to 2012f
openSUSE-12.2-Update | openSUSE-2012-660 | 1          | security    | needed | security update for tor
openSUSE-12.2-Update | openSUSE-2012-662 | 1          | recommended | needed | coreutils: re-enable multithreaded sort(1) if OMP_NUM_THREADS is set
openSUSE-12.2-Update | openSUSE-2012-663 | 1          | recommended | needed | suspend: Fixed double suspend issue
openSUSE-12.2-Update | openSUSE-2012-665 | 1          | recommended | needed | mdadm update for openSUSE 12.2
openSUSE-12.2-Update | openSUSE-2012-666 | 1          | recommended | needed | module-init-tools: Fix modprobe when /usr/local is managed by AutoFS

場合によってはパッケージ管理システムに影響のある修正を優先してインストールしなければならないことから、これらの修正のみが表示される場合があります。このような場合は、それらを適用した後に残りの更新が表示されるようになっています。

このコマンドは、古いバージョンの zypper でも用意されている zypper up -t patch コマンドと同じです。すべてのパッケージ更新を表示したい場合は、下記のように実行します:

celebi:~ # zypper lu

修正の適用

patch コマンドを指定します。

必要な修正を適用するには、下記の通りに実行します:

celebi:~ # zypper patch
リポジトリのデータを読み込んでいます...
インストール済みのパッケージを読み込んでいます...
パッケージの依存関係を解決しています...

下記の新しい修正をインストールします:
  openSUSE-2012-651 openSUSE-2012-655 openSUSE-2012-657 openSUSE-2012-659 openSUSE-2012-660 openSUSE-2012-662 openSUSE-2012-663 openSUSE-2012-665 openSUSE-2012-666 

下記のパッケージをアップグレードします:
  NetworkManager NetworkManager-devel clamav coreutils libgudev-1_0-0 libnm-glib-vpn1 libnm-glib4 libnm-util2 libudev-devel libudev0 mdadm module-init-tools suspend timezone timezone-java tor typelib-1_0-NMClient-1_0 
  typelib-1_0-NetworkManager-1_0 udev 

19 個のパッケージをアップグレードします。
全ダウンロードサイズ: 9.2 MiB. この操作を行なうと、追加で 4.3 KiB の容量を使用します。
続行しますか? [y/n/? 全てのオプションを表示] (y):

すべての修正の表示

patches コマンドを指定します。

list-updates コマンドは必要な修正のみを表示します。利用可能なすべての修正を一覧で表示するには、下記の通りに実行します:

# zypper patches
インストール済みのパッケージを読み込んでいます...
リポジトリ       | 名前               | バージョン | カテゴリ    | 状態
-----------------+--------------------+------------+-------------+---------------
Updates for 11.1 | KDE4-fixes         | 38         | recommended | Installed
Updates for 11.1 | MozillaFirefox     | 50         | recommended | Installed
Updates for 11.1 | NetworkManager-kde | 49         | recommended | Installed
Updates for 11.1 | autoyast2          | 37         | recommended | Installed
Updates for 11.1 | courier-authlib    | 42         | security    | Not Applicable
Updates for 11.1 | insserv            | 47         | recommended | Installed
Updates for 11.1 | opera              | 43         | security    | Installed


修正の確認

patch-check コマンドを指定します。

このコマンドは、お使いのシステムに適用する必要のある重要な更新が存在するかどうかと、その数を表示します:

celebi:~ # zypper pchk
リポジトリのデータを読み込んでいます...
インストール済みのパッケージを読み込んでいます...
9 個の修正が必要です (1 個のセキュリティ修正)

修正に関する情報の取得

patch-info または
info -t patch コマンドを指定します。

celebi:~ # zypper info -t patch openSUSE-2012-651
リポジトリのデータを読み込んでいます...
インストール済みのパッケージを読み込んでいます...


修正 openSUSE-2012-651 に関する情報:

名前: openSUSE-2012-651
バージョン: 1
アーキテクチャ: noarch
製造元: maint-coord@suse.de
状態: インストール済み
カテゴリ: recommended
作成日: Wed Sep 19 14:03:20 2012
システム再起動: いいえ (N)
管理ツール再起動: いいえ (N)
対話性の有無: いいえ (N)
概要: udev: create /dev/root symlink with dynamic rule for systemd
説明: 
This update fixes the following issue for udev:
- bnc#776882: create /dev/root symlink with dynamic rule for systemd
Provides:
patch:openSUSE-2012-651 == 1

Conflicts:
libgudev-1_0-0.i586 < 182-4.17.1
libgudev-1_0-0-32bit.x86_64 < 182-4.17.1
libgudev-1_0-0-debuginfo.i586 < 182-4.17.1
libgudev-1_0-0-debuginfo-32bit.x86_64 < 182-4.17.1
libgudev-1_0-devel.i586 < 182-4.17.1
libudev-devel.i586 < 182-4.17.1
libudev0.i586 < 182-4.17.1
libudev0-32bit.x86_64 < 182-4.17.1
libudev0-debuginfo.i586 < 182-4.17.1
libudev0-debuginfo-32bit.x86_64 < 182-4.17.1
typelib-1_0-GUdev-1_0.i586 < 182-4.17.1
udev.i586 < 182-4.17.1
srcpackage:udev < 182-4.17.1
udev-debuginfo.i586 < 182-4.17.1
udev-debugsource.i586 < 182-4.17.1
libgudev-1_0-0.x86_64 < 182-4.17.1
libgudev-1_0-0-debuginfo.x86_64 < 182-4.17.1
libgudev-1_0-devel.x86_64 < 182-4.17.1
libudev-devel.x86_64 < 182-4.17.1
libudev0.x86_64 < 182-4.17.1
libudev0-debuginfo.x86_64 < 182-4.17.1
typelib-1_0-GUdev-1_0.x86_64 < 182-4.17.1
udev.x86_64 < 182-4.17.1
udev-debuginfo.x86_64 < 182-4.17.1
udev-debugsource.x86_64 < 182-4.17.1

パッケージの更新

list-updates または lu および
update または up コマンドを指定します。

インストール済みのパッケージに対して、それらを純粋に新しいバージョンに更新したい場合は、下記の通りに実行します:

# zypper up

利用可能な更新を一覧表示したい場合は、下記の通りに実行します:

# zypper lu

上記のコマンドはいずれも、依存関係の問題がないものだけを表示または更新します。依存関係の問題を無視して、新しいバージョンの存在するパッケージをすべての表示したい場合は、下記の通りに実行します:

# zypper lu -a

上記のように実行することで、インストール可能かどうか、および何らかの問題を解決するのにユーザの操作が必要となるかどうかに関係なく、すべての更新候補を表示するようになります。

ディストリビューションのアップグレード

dist-upgrade または dup コマンドを指定します。

このコマンドは、ディストリビューションのアップグレードで使用するアルゴリズムを採用していて、パッケージの分割やメンテナンスされなくなったパッケージ、類似パッケージの処理などを行ないます。これにより、異なるディストリビューションのリリースに移行することができるようになっています。

# zypper dup

dist-upgrade コマンドを実行する際は、インストールしたいディストリビューションのメインリポジトリと、使用しているごく少数の主要なリポジトリ (メインリポジトリのバージョンに適合しているもの) のみを有効化しておくことをお勧めします。これを行なうには、すべてのリポジトリをいったん無効化するコマンド zypper mr -da や、新しいリポジトリを追加するコマンド zypper ar をお使いください。それらの作業が終わった後で zypper dup を実行すると、適切なアップグレードを実施することができます。なお、 --repo オプションを指定することで、特定のリポジトリのみを使用してアップグレードすることもできます: zypper dup -r repo1 -r repo2 ...

Q: "zypper up" では、もともとインストールされているパッケージと同じリポジトリ内に、新しいバージョンが存在している場合にのみ、アップグレードを行ないますが、 "zypper dup" では新しいパッケージがどのリポジトリに存在しているかに関係なく、すべてのものをアップグレードする、というのは本当でしょうか?

A: "zypper up" は新しいバージョンが利用できる場合にアップグレードを行ないますが、その製造元は変更しません (注意: 現時点では Build Service 全体で同じ製造元になっています) 。 "zypper dup" は、有効化されているすべてのリポジトリを利用して、インストール済みのパッケージを新しくしようとします。これにより、インストール済みのバージョンがリポジトリ内で提供されているものより新しいものであった場合には、ダウングレードが行なわれます。


スクリプトやアプリケーションから zypper を使用する場合の注意事項

Zypper には、スクリプトなどで自動的に動作させるためのグローバルオプションが用意されています。また、 zypper のマニュアルページには、 zypper を自動化した場合に利用すべき終了コードについても説明が書かれています。


非対話モード

--non-interactive オプションを指定します。

このモードでは、 zypper はユーザに対して何も問い合わせメッセージを表示せず、既定値を回答したものとみなします。このオプションを使用すると、 zypper が問い合わせに対する標準入力からの回答を待って、停止してしまうような事態を防ぐことができます。

たとえば、何も確認メッセージを表示せずに自動的にシステムを更新するには、下記のように実行します:

# zypper --non-interactive update

このコマンドを実行すると、更新に際してユーザへの確認メッセージは表示されず、追加の確認が必要なすべての対話的な修正が飛ばされ、その他の問い合わせに対してはそれぞれ自動的に回答したことになります。


GPG チェック無効化モード

--no-gpg-checks オプションを指定します。

このオプションを使用すると、 zypper は gpg のチェックが失敗した場合にも処理を続行するようになります。このチェックの失敗には、 gpg の署名がない場合や、 gpg の署名があるものの正しくない場合が含まれます。


ライセンスの自動同意

--auto-agree-with-licenses オプションを指定します。

これはインストールや削除、更新コマンドで使用することのできる特別なオプションです。このオプションを指定すると、ユーザはインストールの際に必要なライセンス同意に自動的に同意したものとみなされ、 zypper 側で自動的に 'はい' を回答したものとして処理が続けられます。これは特に、複数のマシンに同じ種類の (ライセンス同意もすでに読んでいる) パッケージをインストールしたりするような場合に有用です。


出力の抑制

--quiet オプションを指定します。

処理の進捗状況に関するテキスト情報の表示を抑制し、捜査結果とエラーメッセージのみを表示するようになります。


XML での出力

--xmlout オプションを指定します。

このオプションを指定すると、 zypper が XML で出力するようになります。これはスクリプトやグラフィカルなフロントエンドなどのアプリケーションから zypper を利用し、その結果をそれぞれの方法で整形することができるようになります。 zypper の XML 出力は RNC のスキーマで規定されていて、 こちら/usr/share/zypper/xml/xmlout.rnc に定義が書かれています。

なお、現時点では必ずしもすべての出力が XML に対応しているわけではありません (ほとんどは対応済みです); 今後のバージョンですべての出力を XML に対応させることを目指しています。


問い合わせ

下記に示す表は、 zypper がユーザ操作を必要とするタイミングと、非対話モードにおける既定の回答を示しています。ここで示されているオプションは --non-interactive よりも優先して働くため、指定した場合は --non-interactive を使用しなかった場合でも、自動的にその回答が使用されます。


GPG 関連の問い合わせ

--no-gpg-checks オプションを指定すると、メッセージが表示されるほか、警告は標準エラーとログの両方に出力されます。

問い合わせ 既定の回答 --no-gpg-checks を指定した場合の回答 注意
署名のないファイルを受け入れますか? N Y
accept new key (鍵を拒否しますか (R)? 一時的に信頼しますか (T)? それとも今後ずっと信頼しますか (A)?) R R 対話モードの場合にのみ、鍵の信頼または取り込みを行なうことができます
不明な鍵を受け入れますか? N Y
ファイルの署名の検証が失敗しました。続行しますか? N Y
ファイルに対するダイジェストがありません。続行しますか? N Y
不明なダイジェストを受け入れますか? N Y

その他の問い合わせ

問い合わせ 既定の回答 その他の回答 注意
インストール/削除/更新を続けますか? Y これに加えて、 --no-confirm オプションを指定することで、 --non-interactive グローバルオプション無しでもインストールや削除、更新を行なうことができます
サードパーティ製ライセンスの確認 N Y (--auto-agree-with-licenses を指定した場合) これに加えて、 zypper update に対しては --skip-interactive を指定することで、対話処理の必要な修正を飛ばすことができます (rug に存在していた機能の移植です)
修正に対するメッセージの確認 Y
解決方法のインストール/削除中に問題が発生しました。中止(A), 再試行(R), 無視(I)? ABORT わかりにくいメッセージであるため、将来は改善される予定です
パッケージのダウンロード中に問題が発生しました。中止(A), 再試行(R), 無視(I)? ABORT こちらもわかりにくいメッセージであるため、将来はより詳しく表示する予定です
依存関係の矛盾, #/s/r/c (解決番号, 飛ばす, 再試行, キャンセル) c 依存関係を解決するにはユーザ操作が必要であるため、常にキャンセルされます
メディアの変更要求 ABORT
問題のあるロック (施錠) を削除しますか? Y

XML の出力では、問い合わせは <prompt> タグ内に id 属性付きで示されます。すべての既知の ID は prompt.h インクルードファイル内 (zypper パッケージ内) に書かれています。


Rug との互換性

zypper の書式は rug に似た構造ですが、コマンドとオプションのセット、および出力と動作は rug より拡張されています。


参照情報