Zypper/Usage/11.1

< Zypper‎ | Usage
移動先: 案内, 検索
Geeko この記事は、 Libzypp ライブラリを使ったコマンドライン・パッケージ・マネージャであるZypper の使い方紹介を目的としています。この記事に含まれるのは Zypper のマニュアル・ページ(man zypper)の補完情報です。ここには記載されていない情報がマニュアル・ページで見つけられるかもしれませんし、逆にマニュアル・ページにはない情報がここに記載されているかもしれません。



Susemini.png
バージョン:
11.1
この記事は openSUSE 11.1 で採用された zypper 1.0.2 についてのものです。他のバージョンについてはZypper/Versionsを参照してください。


目次

クイック・レファレンス


以下の例は、おそらくあなたが最も頻繁に使うであろう使用例です。

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              # 可能なら、全てのインストール済みパッケージを新しいバージョンにアップデートします


一般的な用法


zypper の一般的な構文は以下の通りです:

zypper [global-options] command [command-options] [arguments] ...

[ ]で囲まれた要素は必須ではありませんから、zypper を実行する最も単純な方法は zypper に続けてコマンドを指定するだけです。例えば、システムに必要なパッチを適用するには、以下のように打ち込みます。

zypper patch

加えて、グローバル・オプションの中から一つもしくは複数を選択し、command の前に配置することができます(以下の例では、「私には何も質問しないで、自動で判断して command を実行しなさい」というグローバル・オプションが使われています)。

zypper --non-interactive patch

ある特定の command に特化された option を使う場合は、command に続けて打ち込んでください(以下の例では、「ライセンスについては既に全て読んでいるので、いちいち確認を求めずに、システムに必要なパッチを適用してください」というオプションが使われています)。

zypper patch --auto-agree-with-licenses

いくつかの command は一つもしくは複数の argument(引数)を必要とします(以下の例では、「mplayer パッケージのインストールもしくはアップデート」を指定しています)。

zypper install mplayer

いくつかの option も argument(引数)を必要とします(以下の例では、「パターンで検索」と指定しています)。

zypper search -t pattern

上記は全て組み合わせることができます(以下の例では、「mplayer と amarokを、factory リポジトリのみを使って、詳細を表示しつつインストールしなさい」と指定しています)。

zypper -v install --repo factory mplayer amarok 


ユーザ・プロンプト

zypper があなたからの入力を必要とするときは、プロンプトテキストの後に、括弧つきで回答候補を表示してくれます。既定の回答を選択する時は単に <enter> を叩いてください(既定の回答は、大文字で表示されます(ASCII 以外の文字列の場合は例外となります))。いくつかのプロンプトからはヘルプを呼び出すこともでき、その場合は表示される回答候補にクエスチョン・マーク '?' がリストアップされます。いちいち回答を求められずに全て既定の回答で zypper を使いたい時には --non-interactive というグローバル・オプションを使ってください。


用語


  • repository(リポジトリ) - パッケージと様々なパッケージ情報(パッケージ・メタデータ)が配置されたローカルもしくはリモートのディレクトリ。リポジトリはこれまでインストール・ソースサービスあるいはカタログと呼ばれていたものです。
  • alias(エイリアス) - リポジトリのエイリアスとは、removerepo あるいは --repoといった、リポジトリを扱うコマンドやオプションで用いられる、リポジトリ名を短くしたものです。
  • package(パッケージ) - ソフトウェア・パッケージ(RPM パッケージ、ソース・パッケージ)。パッチ、パターン、プロダクトも通常は異なるタイプのパッケージとして扱われます。
  • patch(パッチ) - (多くの場合、バグ・フィックス)アップデートをインストールするために必要となるパッケージまたはパッケージのグループのことです。
  • pattern(パターン) - パッケージのグループのことです。例えばHttp サーバというパターンは、依存関係が明確化されていて、このパターンをインストールすることにより http サーバを起動し、管理するのに必要となる全てのパッケージが自動的にインストールされます。
  • product(プロダクト) - 製品全体のことです(例: 'openSUSE 11.1')。


コマンド


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 [command]

zypper -h [command] 及び zypper [command] -h といった簡略化された構文も使用することができます。

リポジトリ管理

登録済みリポジトリは、zypper lr でリスト表示されるナンバー、エイリアス、URL で指定することができます。もしナンバーを使うなら、リポジトリに対して何らかの変更を加えた後ナンバーが変わってしまっている可能性がありますので、毎回まず最初に zypper lr を実行してナンバーを確認してください。


設定されたリポジトリをリストアップする

repos もしくは lr

結果表示例:

# zypper lr
# | Alias                 | Name                  | Enabled | Refresh
--+-----------------------+-----------------------+---------+--------
1 | packman               | Packman 11.1          | Yes     | No
2 | fate                  | fate                  | No      | No
3 | openSUSE-11.0-Updates | Updates for 11.1      | Yes     | Yes
4 | repo-oss              | openSUSE-11.1-Oss     | Yes     | No
5 | repo-non-oss          | openSUSE-11.1-Non-Oss | Yes     | No
6 | repo-debug            | openSUSE-11.1-Debug   | No      | No

その他の例:

zypper lr -u       # リポジトリの URI もテーブルに含める
zypper lr -d       # いくつかの他のリポジトリの詳細についてもテーブルに含める
zypper lr -P       # リポジトリの優先順位も含め、その順にソートしてリスト表示する
zypper lr -e my    # 'my.repo'という名前のファイルに全てのリポジトリ設定をエクスポートする


リポジトリの追加

addrepo もしくは ar

何かパッケージをインストールする前に、少なくとも一つはリポジトリが設定されていなければなりません。リポジトリを追加するには addrepo コマンドを使います。

結果表示例:

# zypper ar http://download.videolan.org/pub/vlc/SuSE/11.1 vlc
Adding repository 'vlc' [done]
Repository 'vlc' successfully added
Enabled: Yes
Autorefresh: No
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/URI を参照してください。


リポジトリの更新

refresh もしくは ref

リポジトリの追加後、またはリポジトリが古くなってしまった場合などは、更新する必要があります。これによってそのリポジトリからパッケージのメタデータをダウンロードし、素早い読み込みのための予備的処理としてデータを .solv のキャッシュに保存します。

# zypper refresh
Downloading repository 'Packman 11.1' metadata [done]
Building repository 'Packman 11.1' cache [done]
Downloading repository 'Updates for 11.1' metadata [done]
Building repository 'Updates for 11.1' cache [done]
Repository 'openSUSE-11.1-Oss' is up to date.
All repositories have been refreshed.

もしリポジトリに対する autorefresh が有効になっているなら、必要に応じて自動的に更新されますので、気にする必要はありません。とはいえ、更新の実行をコントロールしたい場合(例えば、単に 'zypper info krusader' の結果を見たいだけの時に、全ての更新の完了を待つのを避けたい場合など)もあるでしょうから、自動更新を無効化することもできます。詳しくは man zypper を参照してください。

その他の例:

zypper ref packman main  # どのリポジトリを更新するか指定することもできます
zypper ref -f upd        # 'upd' リポジトリを強制的に更新します


リポジトリの削除

removerepo もしくは rr

# zypper rr vlc 1 23 foo
Repository 23 not found by alias, number or URI.
Repository foo not found by alias, number or URI.
Removing repository 'repo-debug' [done]
Repository 'repo-debug' has been removed.
Removing repository 'vlc' [done]
Repository 'vlc' has been removed.


リポジトリの修正

modifyrepo もしくは mr

ナンバーが 6 のリポジトリを無効化する:

# zypper mr -d 6
Repository 'repo-non-oss' has been sucessfully disabled.

自動更新と 'packman' リポジトリにある rpm ファイルのキャッシュを有効化し、その優先度を 70 に設定する:

# zypper mr -rk -p 70 packman
Autorefresh has been enabled for repository 'packman'.
RPM files caching has been enabled for repository 'packman'.
Repository 'packman' priority has been set to 70.

全てのリポジトリで RPM ファイルのキャッシュを無効化する:

# zypper mr -Ka
Nothing to change for repository 'local'.
RPM files caching has been disabled for repository 'packman'.
Nothing to change for repository 'fate'.
Nothing to change for repository 'upd'.
Nothing to change for repository 'repo-oss'.
Nothing to change for repository 'repo-non-oss'.

全てのリポジトリで RPM ファイルのキャッシュを有効化する:

# zypper mr -ka
RPM files caching has been enabled for repository 'repo-non-oss'.
RPM files caching has been enabled for repository 'Main Repository (OSS)'.
RPM files caching has been enabled for repository 'Main Repository (NON-OSS)'.
RPM files caching has been enabled for repository 'openSUSE-11.0-Updates'.


リポジトリの名前変更

namerepo もしくは nr

# zypper nr 3 upd
Repository 'openSUSE-11.1-Updates' renamed to 'upd'.

このコマンドで変更できるのは、現状では単にリポジトリのエイリアスだけです。もしリポジトリの表示名を変更したいなら、 mr コマンドの項を参照してください。

エイリアスは短くシンプルにして、コマンドや --repo オプションの引数に指定するとき簡単に使えるようにしましょう。リポジトリを指定する場合、ナンバーで指定するよりエイリアスで指定する方が安全ですし(ナンバーは変わってしまうこともあり、間違ってしてしまいやすいため)、URI で指定するより簡単です(URI は長く、コピー & ペーストする必要があるため)。


リポジトリのエクスポート/インポート

repos --export もしくは lr -e

完全なリポジトリのリストをファイルにエクスポートしたり、そのファイルから別のマシンにインポートすることもできます。

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


サービス管理

<追記予定>


パッケージ管理

Selecting Packages

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

  • 機能名でe
    zypper in eclipse
    zypper in qt
  • 機能名とアーキテクチャー、バージョンなどとの組み合わせで
    zypper in 'zypper<0.12.10'
    zypper in zypper.i586=0.12.11
  • 正確なパッケージ名で (--name)
    zypper in -n ftp
  • 正確なパッケージ名およびリポジトリを指定 (implies --name)
    zypper in factory:zypper
  • ワイルドカードを使ったパッケージ名指定で
    zypper in yast*ftp*
  • インストールする .rpm パッケージを指定して


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

install もしくは in

名前を指定して、パッケージをインストールすることができます。

# zypper install git
Reading installed packages...

The following NEW packages are going to be installed:
  subversion-perl sqlite3 perl-DBD-SQLite git-svn git-cvs git


Overall download size: 1.1 M. After the operation, additional 4.6 M will be used.
Continue? [YES/no]:
Downloading package subversion-perl-1.5.0-96.1.x86_64 (1/6), 950.0 K (4.1 M unpacked)
Downloading: subversion-perl-1.5.0-96.1.x86_64.rpm [done]
Installing: subversion-perl-1.5.0-96.1 [done]
Downloading package sqlite3-3.5.7-17.1.x86_64 (2/6), 30.0 K (40.0 K unpacked)
Downloading: sqlite3-3.5.7-17.1.x86_64.rpm [done]
Installing: sqlite3-3.5.7-17.1 [done]
Downloading package perl-DBD-SQLite-1.14-41.1.x86_64 (3/6), 44.0 K (103.0 K unpacked)
Downloading: perl-DBD-SQLite-1.14-41.1.x86_64.rpm [done]
Installing: perl-DBD-SQLite-1.14-41.1 [done]
Downloading package git-svn-1.5.4.5-26.1.x86_64 (4/6), 66.0 K (195.0 K unpacked)
Downloading: git-svn-1.5.4.5-26.1.x86_64.rpm [done]
Installing: git-svn-1.5.4.5-26.1 [done]
Downloading package git-cvs-1.5.4.5-26.1.x86_64 (5/6), 63.0 K (205.0 K unpacked)
Downloading: git-cvs-1.5.4.5-26.1.x86_64.rpm [done]
Installing: git-cvs-1.5.4.5-26.1 [done]
Downloading package git-1.5.4.5-26.1.x86_64 (6/6), 10.0 K (3.0 K unpacked)
Downloading: git-1.5.4.5-26.1.x86_64.rpm [done]
Installing: git-1.5.4.5-26.1 [done]

...提供される機能を指定した場合。

# zypper in MozillaFirefox \< 3
Reading installed packages...
'MozillaFirefox' providing 'MozillaFirefox<3' is already installed.
Nothing to do.
# zypper in MozillaFirefox \>= 3
Reading installed packages...

The following packages are going to be upgraded:
  mozilla-xulrunner190-translations MozillaFirefox mozilla-xulrunner190-gnomevfs
mozilla-xulrunner190 MozillaFirefox-translations


The following package is going to be REMOVED:
  mozilla-xulrunner190-lang


Overall download size: 11.0 M. After the operation, 12.9 M will be freed.
Continue? [Y/n/p/?]:
# zypper in 'libqtiff.so()(64bit)'
Reading installed packages...
'libqt4-x11' providing 'libqtiff.so()(64bit)' is already installed.
Nothing to do.

その他の例:

zypper in yast*                     # 全ての yast モジュールをインストール
zypper in -t pattern lamp_server    # lamp_server のパターン(LAMP サーバのために必要とされる複数のパッケージ)をインストール
zypper in vim -emacs                # vim のインストールと emacs の削除をいっぺんに指定
zypper in amarok packman:libxine1   # libxine1 を packman から、amarok をリポジトリを指定せずにインストール
zypper in bitchx-1.1-81.x86_64.rpm  # ローカルディレクトリから bitchx rpm をインストール
zypper in -f subversion             # 強制的に subversion を再インストール


パッケージの削除

remove もしくは rm

remove コマンドの使い方は、その効果が逆になることを除いて、install コマンドの使い方と非常によく似ています。 :O)

# zypper remove sqlite
Reading installed packages...

The following packages are going to be REMOVED:
  sqlite3 perl-DBD-SQLite git-cvs git


After the operation, 351.0 K will be freed.
Continue? [YES/no]: n


ソースパッケージとビルド依存関係

source-install もしくは si

# zypper si zypper
Reading installed packages...

The following NEW packages are going to be installed:
  libzypp-devel libsatsolver-devel


The following source package is going to be installed:
  zypper


Overall download size: 1.5 M. After the operation, additional 6.7 M will be used.
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 コマンドはタイプ、ステータスあるいはリポジトリのいずれかに指定した文字列を含む名前がないかを探します(大文字小文字は区別されません)。

# zypper se sqlite
Reading installed packages...

S | Name                     | Summary                                                        | Type
--+--------------------------+----------------------------------------------------------------+--------
  | libapr-util1-dbd-sqlite3 | DBD driver for SQLite 3                                        | package
i | libgda-3_0-sqlite        | Sqlite Provider for GNU Data Access (GDA)                      | package
  | libqt4-sql-sqlite        | Qt 4 sqlite plugin                                             | package
i | libsqlite3-0             | Shared libraries for the Embeddable SQL Database Engine        | package
  | libsqlite3-0-32bit       | Shared libraries for the Embeddable SQL Database Engine        | package
  | mediatomb-sqlite         | UPnP AV MediaServer                                            | package
i | mono-data-sqlite         | Database connectivity for Mono                                 | package
  | pdns-backend-sqlite2     | SQLite 2 backend for pdns                                      | package
  | pdns-backend-sqlite3     | SQLite 3 backend for pdns                                      | package
i | perl-DBD-SQLite          | The DBD::SQLite is a self contained RDBMS in a DBI driver      | package
i | php5-sqlite              | PHP5 Extension Module                                          | package
  | python-sqlite2           | Python bindings for sqlite 2                                   | package
  | qt3-sqlite               | SQLite Database Plug-In for Qt                                 | package
  | rekall-sqlite            | Rekall sqlite Database Backend                                 | package
  | rubygem-sqlite3          | A Ruby interface for the SQLite3 database engine               | package
i | sqlite2                  | Embeddable SQL Database Engine                                 | package
  | sqlite2-32bit            | Embeddable SQL Database Engine                                 | package
  | sqlite2-devel            | Embeddable SQL Database Engine                                 | package
i | sqlite3                  | Embeddable SQL Database Engine                                 | package
  | sqlite3-devel            | Embeddable SQL Database Engine                                 | package
  | sqlite3-tcl              | Tcl binding for SQLite                                         | package
  | tntdb1-sqlite            | Tntdb is a c++-class-library for easy database-access - sqlite | package
  | ulogd-sqlite             | SQLite output plugin for ulogd                                 | package

最初の列にあるi は、そのパッケージが既にインストールされていることを示しています。該当するパッケージの全ての可能なバージョンを見るためには --details/-s オプションを使ってください。

# zypper search -s --match-exact virtualbox-ose
Reading installed packages...

S | Name           | Type    | Version    | Arch   | Repository
--+----------------+---------+------------+--------+------------------------------------
v | virtualbox-ose | package | 1.6.2-2.1  | x86_64 | VirtualBox OSE
i | virtualbox-ose | package | 1.5.6-33.1 | x86_64 | openSUSE-11.1-Oss
v | virtualbox-ose | package | 1.5.6-20.5 | x86_64 | VirtualBox OSE (
v | virtualbox-ose | package | 1.6.2-2.1  | i586   | VirtualBox OSE
v | virtualbox-ose | package | 1.5.6-33.1 | i586   | openSUSE-11.1-Oss
v | virtualbox-ose | package | 1.5.6-20.3 | i586   | VirtualBox OSE

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

# zypper info amarok
Reading installed packages...


Information for package amarok:

Repository: Packman 11.1
Name: amarok
Version: 1.4.9.1-103.pm.1
Arch: x86_64
Vendor: packman.links2linux.de
Installed: Yes
Status: up-to-date
Installed Size: 12.1 M
Summary: Media Player for KDE
Description:
Amarok is a media player for all kinds of media, supported by aRts, GStreamer
or Xine (depending on the packages you install). This includes MP3, Ogg
Vorbis, audio CDs and streams.
It also supports audio effects of all kinds that are provided by aRts.
Playlists can be stored in .m3u or .pls files.

Amarok also provides audio file collection management, by using either an
embedded sqlite3, a MySQL or a PostgreSQL database.

このコマンドは、'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

特定の機能について全ての供給元をリスト表示するには、以下を実行してください。

# zypper wp firefox
Reading installed packages...
S | Name           | Type    | Version     | Arch   | Repository
--+----------------+---------+-------------+--------+------------------
i | MozillaFirefox | package | 3.0-0.1     | x86_64 | Updates for 11.1
v | MozillaFirefox | package | 2.9.95-25.1 | x86_64 | openSUSE-11.1-Oss
v | MozillaFirefox | package | 3.0-0.1     | i586   | Updates for 11.1
v | MozillaFirefox | package | 2.9.95-25.1 | i586   | openSUSE-11.1-Oss

このコマンドは rpm -q --whatprovides firefox と同じものとして使えますが、rpm では RPM のデータベース(インストール済みパッケージのデータベース)をクエリーすることしかできません。一方、zypper を使えば、インストール済みのものだけでなく、いずれかのリポジトリに同じ機能を供給するものがあればその情報を知ることもできます。


その他のクエリー

patchespackagespatterns、及び products コマンドは、対応するパッケージタイプに特化されたいくつかの追加情報を表示することを除いて search -s -t [patch,package,pattern,product] と同じ意味になります。例えば、patches はパッチの(Needed/Security/Not Applicable)というステータスも合わせて表示します。

list-updatespatch-check コマンドについてはアップデート管理で議論されています。


パッケージのロック

locks もしくは ll addlock もしくは al removelock もしくは rl cleanlocks もしくは cl

パッケージのロックが必要となるのは、システム上のパッケージが変更されないようにしておきたい場合です。ロックがかかっているパッケージについては、インストール状態が変更されることはありません。つまり、インストールされているものが削除されたりアップグレードされたりすることはありませんし、まだインストールされていないパッケージならば勝手にインストールされてしまうこともありません。

'yast2' から始まる全てのパッケージにロックをかけるには、以下を実行します。

# zypper al 'yast2*'
Reading installed packages...
Specified lock has been successfully added.

ここでも、シェル拡張に注意し、yast* がワーキングディレクトリ内のファイルやディレクトリにマッチする可能性がある場合は ' ' で囲んでください。

現在かかっているロックをリスト表示するには、以下を実行します:

# zypper ll
# | Name             | Type    | Repository
--+------------------+---------+-----------
1 | libpoppler3      | package | (any)
2 | libpoppler-glib3 | package | (any)
3 | yast*            | package | (any)

ロックを解除するには、以下を実行します:

# zypper rl yast2-packager
Reading installed packages...
The following query locks some of the objects you want to unlock:

type: package
match_type: glob
case_sensitive: on
solvable_name: yast2*

Do you want remove this lock? [YES/no]: y
Lock count has been succesfully decreased by: 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
Reading installed packages...
Some of the dependencies of installed packages are broken. In order to fix these dependencies, the following actions need to be taken:

The following NEW package is going to be installed:
  mozilla-xulrunner190


Overall download size: 6.5 M. After the operation, additional 23.5 M will be used.
Continue? [YES/no]: y


新規推奨パッケージのインストール

install-new-recommends もしくは inr

このコマンドは、あなたが既にインストールしているパッケージに対する推奨パッケージが新規に追加されていないか探し出し、インストールするためのものです。これによってお使いのソフトウェア用の新しい言語バンドルや新しく追加したハードウェア用ドライバなどの入手が簡単になります。

# zypper inr
Reading installed packages...

The following NEW packages are going to be installed:
  kdebase4-openSUSE-lang bundle-lang-common-cs


Overall download size: 534.0 K. After the operation, additional 1.9 M will be used.
Continue? [YES/no]:


アップデート管理

お使いのシステムを最新状態に保つためには、2通りのアプローチがあります。その一つはパッチによるアプローチで、もう一つはパッケージによるアプローチです。

パッチによるアプローチは、安定版を使っていて、オンライン・アップデート・リポジトリを通じてリリースされたパッチでシステムをアップデートしたいと考える人たちにとっては特に役に立ちます(パッケージのアップデートについてはパッケージのアップデートをご覧ください)。既定では、アップデートリポジトリはインストールもしくはシステムのアップグレードの過程で追加されますし、YaST コントロールセンターのソフトウェアタブにあるオンラインアップデートの設定から、あるいはzypperを使って手動で追加することもできます。使用可能な openSUSE のアップデートリポジトリのリストをご覧ください。

YaST 内でこの機能に相当するのは オンライン・アップデートモジュールです。

二番目のパッケージによるアップデートについてはパッケージのアップデートセクションで説明されていて、更新されたバージョンのあるリポジトリがあれば、そこからのパッケージ使って普通にアップデートすることになります。

必要なパッチのリスト表示

list-patches もしくは lp

すべての必要なアップデート・パッチを表示するには、以下を実行します:

# zypper lp
Reading installed packages...
Patches

Repository       | Name               | Version | Category    | Status
-----------------+--------------------+---------+-------------+-------
Updates for 11.1 | KDE4-fixes         | 38      | recommended | Needed
Updates for 11.1 | MozillaFirefox     | 50      | recommended | Needed
Updates for 11.1 | NetworkManager-kde | 49      | recommended | Needed

時としてパッケージマネジメントに関するアップデートのみがリスト表示される場合がありますが、これは、まずそれらが先に適用されるべきものだからです。それらを適用してしまえば、残りの可能なアップデートもこのコマンドでリスト表示することができるようになります。

このコマンドは、zypper の過去のバージョンで zypper up -t patch としたときと同じものです。全てのアップデート・パッケージをリスト表示するには、以下を実行します。

zypper lu -t package


パッチの適用

patch

必要なパッチを適用するには、以下を実行します:

# zypper patch
Reading installed packages...

The following packages are going to be upgraded:
  NetworkManager-kde mozilla-nss mozilla-nspr kde4-korganizer


The following NEW patches are going to be installed:
  NetworkManager-kde MozillaFirefox KDE4-fixes


Overall download size: 2.9 M. After the operation, additional 283.0 K will be used.
Continue? [YES/no]:


すべてのパッチのリスト表示

patches

list-updates コマンドは、必要なパッチのみをリストアップします。すべての使用可能なパッチをリストアップするには、以下を実行してください。

# zypper patches
Reading installed packages...
Catalog          | Name               | Version | Category    | Status
-----------------+--------------------+---------+-------------+---------------
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 もしくは pchk

このコマンドで、お使いのシステムに適用できる重要なパッチがあるかどうか、また、その数を知ることができます。

# zypper pchk
Reading installed packages...
0 patches needed (0 security patches)

パッチについての情報を取得する

patch-info
info -t patch

# zypper info -t patch MozillaFirefox
Reading installed packages...


Information for patch MozillaFirefox:

Name: MozillaFirefox
Version: 50
Arch: noarch
Vendor: maint-coord@suse.de
Status: Installed
Category: recommended
Created On: Thu 01 Jan 1970 01:00:00 AM CET
Reboot Required: No
Package Manager Restart Required: No
Interactive: No
Summary: Mozilla Firefox 3.0
Description:
This patch updates Mozilla Firefox to the final 3.0 version.

The dependend libraries mozilla-xulrunner190, mozilla-nspr
and mozilla-nss were also brought to their release version.

パッケージのアップデート

list-updates or lu
update or up

インストールされているパッケージを使用可能な新しいバージョンにアップデートするだけなら、以下を実行します:

zypper up

以下で適用可能なアップデートをリストアップすることもできます:

zypper lu

上記のコマンドは、依存関係で問題の発生していないパッケージのみをリストアップしたりアップデートしたりします。インストールされているパッケージに対するすべての更新バージョンを表示するには、以下を実行します。

zypper lu -a

このコマンドは、インストール可能か否かに関わらず、また、問題解決のためにユーザとの対話操作が必要となるか否かに関わらず、全てのアップデート候補を表示します。

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

dist-upgrade もしくは dup

このコマンドは、ディストリビューション・アップグレードのアルゴリズムを使用し、パッケージの分岐やメンテナンスが終了したパッケージなどといったものを処理します。異なるディストリビューションのバージョンへ切り替える際に使用してください。

dist-upgrade を実行する間は、ディストリビューションのメイン・リポジトリと、使用している重要なリポジトリ(それらのバージョンを現状のメイン・リポジトリに対応したものにできれば尚可)のみを有効にしておくようお薦めします。'zypper mr -da を使ってまず古いリポジトリを無効化し、新たなリポジトリを zypper ar で追加し、zypper dup を実行することでこれをアーカイブ化しておくことができます。また、 --repo オプションを使うことで、使用するリポジトリを特定することも可能です: zypper dup -r repo1 -r repo2 ....

zypper をスクリプトあるいはアプリケーション内で使用する


zypper は、スクリプトのような自動実行されるプロセス内で使い易いように、いくつかのグローバルオプションをサポートしています。更に、zypper のマニュアル・ページにリストアップされているいくつかの異なる停止コードを使うことで、自動実行されるプロセス内で zypper を使う際にいろいろなチェックをすることができるようになります。


非対話モード

--non-interactive

このモードを使うと、zypper はユーザからの回答を求めず、既定の答えを使って処理を進めます。このオプションを使った際は、標準入力からの回答入力待ち、あるいはエンドレスなループによって zypper がハングすることはなくなります。

例えば、確認なしで自動的にお使いのシステムをアップデートしたい場合などは、以下のようにしてください。

# zypper --non-interactive update

このコマンドを使えば、アップデートを進めるにあたってユーザからの確認を求められることがなくなりますし、追加確認が必要な全ての対話的パッチの摘要にあたり確認を省略したり、その他あらゆるプロンプトに対して自動的に答えることができます。


GPG チェック無効モード

--no-gpg-checks

このオプションを使うと、例えばリポジトリのファイルが署名されているべきなのに署名されていない、ファイルは署名されているがチェックに失敗したなど、仮になんらかの gpg チェックに失敗しても、zypper は常に継続を選択します。


ライセンスに対する自動承諾

--auto-agree-with-licenses

これは、インストール、削除及びアップデートのコマンド用の特別なオプションです。これを使うことにより、インストールにあたってユーザがライセンス条項に対する明示的な同意を求められた際、zypper はライセンス確認プロンプトに対して自動的に 'yes' と回答します。これは、同じパッケージのセットを複数のマシンに(自動化して)インストールしようと考え、既にライセンス条項には全て目を通しているような人たちには便利なものです。


出力させない

--quiet

進行状況など冗長なテキストは表示させず、操作の結果とエラーメッセージのみ表示させたいときに使います。


XML 出力

--xmlout

このオプションを指定すると、zypper は XML による出力を行います。これにより、zypper を使おうとしているスクリプト、グラフィカルなフロントエンドやその他のタイプのアプリケーションへ zypper からの出力を整理された、標準的な形で渡すことができるようになります。zypper の XML 出力についての RNC スキーマについてはこちら/usr/share/zypper/xml/xmlout.rnc から参照が可能です。

現時点ではまだすべての出力を XML 化できるわけではありません(ほとんどは可能です)が、全てを XML で出力できるようにすることを目標としています。


プロンプト

以下は、zypper がユーザからの対話的回答を求める際に、非対話モードで用いられるケースの完全リストです。ここで記述されている全ての追加オプションは、--non-interactive オプションよりも高い優先度を持つもので、使われる際は、--non-interactive オプションが使われていない場合であっても同じ意味を含む回答が自動的に返されます。


GPG に関連したプロンプト

--no-gpg-checks が適用されている場合、メッセージが表示されるか、warning が標準エラーとして出力され、ログに書き込まれます。

プロンプト 既定の回答 --no-gpgp-checks の有無 付記
accept unsigned file?(未署名のファイルを認めるか) N Y
accept new key(鍵を受け入れる)(reject the key(鍵を拒否する)、trust temporarily(今だけ信頼する)、あるいは trust always(常に信頼する)? [r/t/a]) R R 新しい鍵は対話的モードでのみ信頼したりインポートすることができます
accept unknown key?(未知の鍵を受け入れるか) N Y
trust key?(鍵を信頼するか) N Y
verification of signed file failed, continue?(署名済みファイルの検証に失敗したが、そのまま続けるか) N Y
no digest for a file, continue?(ファイルには要約がないが、そのまま続けるか) N Y
accept unknown digest?(未知の要約を認めるか) N Y

その他のプロンプト

プロンプト 既定の回答 その他の回答 付記
proceed with installation/removal/update?(インストール/削除/アップデートを続行するか) Y 更に、グローバルに --non-interactive を指定しないでも install/remove/update とともに --no-confirm オプションを使うこともできます
confirm 3rd party license(サード・パーティーのライセンスに同意する) N Y --auto-agree-with-licenses が使われている場合 更に、zypper update 用には --skip-interactive オプションを使ってインストールすべきリストから対話的なパッチをスキップすることができます(rug より受け継がれた機能)
confirm a patch message(パッチのメッセージに同意する) Y
problem while installing/removing a resolvable, Abort/Retry/Ignore?(インストール/削除の途中で問題発生 中断/再度試す/無視する?) ABORT これはあまり適切ではないので将来的には改良されるかもしれません
problem while downloading a package, Abort/Retry/Ignore?(ダウンロードの途中で問題発生 中断/再度試す/無視する?) ABORT これもあまり適切ではないので将来的には何らかの機能改善が行われるかもしれません
dependency conflict(依存関係のコンフリクト) #/s/r/c (solution number(解決提案ナンバー)、skip(スキップ)、retry(再度試す)、cancel(キャンセル)) c 常にキャンセル 依存関係の解決にはユーザの判断が必要
media change request(メディア交換のリクエスト) ABORT
remove problematic lock?(問題を起こしているロックの解除) Y


XML 形式の出力では、プロンプトは <prompt> タグにより id 属性を伴って示されます。全ての既知の id の一覧表は prompt.h で見ることができ、zypper とともにパッケージされたインクルード・ファイルは (/usr/include/zypper/prompt.h) で参照できます。

Rug との互換性

zypper の構文は rug のものと似ていますが、コマンドとオプションのセットは出力と振る舞いのみならず rug に比べて多様化しています。しかし、zypper は rug 互換モードでも動かせ、ほとんどの rug のコマンドをサポートしています。詳細については man zypper の COMPATIBILITY WITH RUG セクションを参照してください。