コマンドラインツールによるソフトウェアの管理

目次

4.1. Zypperの使用
4.2. RPM—パッケージマネージャ

概要

この章では、ソフトウェア管理の2つのコマンドラインツールとして、ZypperとRPMについて説明します。

Zypperの使用

Zypperは、パッケージのインストール、更新、削除、およびリポジトリの管理を行うためのコマンドラインパッケージマネージャです。zypperの構文はrugに類似しています。rugとは対照的に、zypperではzmdデーモンが背後で実行している必要はありません。rugの互換性の詳細は、man zypperCOMPATIBILITY WITH RUGの項を参照してください。 これは特に、リモートソフトウェア管理タスクの実行、またはシェルスクリプトからのソフトウェアの管理で役立ちます。

コマンドラインからのソフトウェア管理の詳細については、「zypper help」または「zypper help command」と入力するか、zypper(8)のマニュアルページを参照してください。

一般的な使用方法

Zypperの一般的な構文は次のとおりです。

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

ブラケットで囲まれたコンポーネントは必須ではありません。Zypperを実行する最も簡単な方法は、その名前の後にコマンドを入力することです。たとえば、システムタイプに必要なすべてのパッチを適用するには、次のようにします。

zypper patch

さらに、グローバルオプションをコマンドの直前に入力することによって、1つ以上のグローバルオプションから選択することができます。たとえば--non-interactiveでは、何も入力を求められることなく、コマンドを実行できます(自動的にデフォルトの解答が適用されます)。

zypper --non-interactive patch

特定のコマンドに固有のオプションを使用する場合は、コマンドの直後にそのオプションを入力します。たとえば、--auto-agree-with-licensesは、ライセンスの確認を求めることなく、システムで必要なすべてのパッチを適用します(自動的に受け入れられます)。

zypper patch --auto-agree-with-licenses

一部のコマンドでは、1つ以上の引数が必要です。たとえば、インストールコマンドを使用する場合、インストールするパッケージを指定する必要があります。

zypper install mplayer

また一部のオプションでは、引数が必要です。次のコマンドでは、すべての既知のパターンが表示されます。

zypper search -t pattern

上記のすべてを結合できます。たとえば、次のコマンドは、factoryリポジトリのみを使用してmplayeramarokパッケージをインストールし、バーボスの場合には、次のようになります。

zypper -v install --repo factory mplayer amarok

ほとんどのZypperコマンドには、指定のコマンドのシミュレーションを行うdry-runオプションがあります。このオプションは、テストの目的で使用できます。

zypper remove --dry-run MozillaFirefox

Zypperを使ったソフトウェアのインストールと削除

パッケージをインストールまたは削除するには、次のコマンドを使用します。

zypper install package
zypper remove package

Zypperでは、インストールコマンドおよび削除コマンドでパッケージを指定するために、次のようなさまざまな方法が可能です。

正確なパッケージ名を指定します
zypper in MozillaFirefox
リポジトリエイリアスおよびパッケージ名を指定します
zypper in mozilla:MozillaFirefox

ここでmozillaは、インストールするリポジトリのエイリアスです。

ワイルドカードを使用してパッケージ名を指定します

次のコマンドでは、名前の先頭にMozが付くすべてのパッケージがインストールされます。特にパッケージを削除する場合には、慎重に行うことが必要です。

zypper in Moz*
機能によって指定します

たとえば、パッケージの名前を把握しないでperlモジュールをインストールする場合に、その機能を利用できます。

zypper in 'perl(Time::ParseDate)'
機能、アーキテクチャ、および(または)バージョンを指定します

機能とともに、アーキテクチャ(i586またはx86_64など)、および(または)バージョンを指定できます。バージョンの前には演算子、< (未満)、<= (以下)、= (等しい)、=>(以上)、または>(より大きい)を指定する必要があります:

zypper in 'firefox.x86_64'
zypper in 'firefox>=3.5.3'
zypper in 'firefox.x86_64>=3.5.3'
パスを指定します。

また、パッケージに対するローカルパスまたはリモートパスを指定できます。

zypper in /tmp/install/MozillaFirefox.rpm
zypper in http://download.opensuse.org/repositories/mozilla/SUSE_Factory/x86_64/MozillaFirefox-3.5.3-1.3.x86_64.rpm

パッケージのインストールおよび削除を同時に行うには、+/-修飾子を使用します。emacsのインストールとvimの削除を同時に行うには、次のコマンドを使用します。

zypper install emacs -vim

emacsの削除とvimのインストールを同時に行うには、次のコマンドを使用します。

zypper remove emacs +vim

名前の先頭に-が付くパッケージ名がコマンドオプションとして解釈されないようにするには、常に第2引数としてその名前を使用します。これが可能でない場合は、名前の前に--を付けます。

zypper install -emacs +vim       # Wrong
zypper install vim -emacs        # Correct
zypper install -- -emacs +vim    # same as above
zypper remove emacs +vim         # same as above

Zypperではデフォルトで、選択したパッケージのインストールまたは削除の前に、あるいは問題が発生した際には、確認が求められます。この動作は、--non-interactiveオプションを使用することで上書きされます。このオプションは、次のように実際のコマンド(インストール、削除、パッチ)の前に指定する必要があります:

zypper --non-interactive install package_name

このオプションは、スクリプトおよびcronジョブでZypperを使用できます。

[Warning]必須システムパッケージは削除しないでください。

glibczypperkernelなどのパッケージは削除しないでください。これらのパッケージはシステムで必須であり、削除するとシステムが不安定になったり、すべての動作が停止したりする場合があります。

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

パッケージの対応するソースパッケージをインストールする場合は、次を使用します。

zypper source-install package_name
   

このコマンドにより、指定したパッケージの構築依存もインストールされます。この処理が必要でない場合は、次のようにスイッチ-Dを追加します。ビルドの依存関係のみをインストールするには、-dを使用します。

zypper source-install -d package_name # source package only
    zypper source-install -D package_name # build dependencies only

もちろん、リポジトリリストで有効にしたソースパッケージを含むリポジトリが存在する場合にのみ動作します(ソースパッケージはデフォルトで追加されますが、有効にはなりません)。リポジトリの管理の詳細については、4.1.4項 「Zypperによるリポジトリの管理」を参照してください。

リポジトリで使用可能なすべてのソースパッケージのリストは、次のコマンドで参照できます。

zypper search -t srcpackage

ユーティリティ

すべての依存関係が依然として満たされていることを確認し、欠如する依存関係を修復するには、次のコマンドを使用します。

zypper verify

必要とされる依存関係に加えて、一部のパッケージでは他のパッケージが推奨されます。これらの推奨パッケージは、実際に使用可能な場合にのみインストールされます。(追加パッケージにより)推奨パッケージがインストールされた後、推奨パッケージが使用可能になった場合は、次のコマンドを使用します。

zypper install-new-recommends

Zypperによるソフトウェアの更新

Zypperを使用してソフトウェアを更新するには3つの方法があります。パッチをインストールする、パッケージの新しいバージョンをインストールする、または配布全体を更新する方法です。最後の方法は、項 「zypperによるディストリビューションアップグレード」 (第7章 SUSE Linux Enterpriseのアップデート, ↑導入ガイド)で説明されているzypper dist-upgradeコマンドで行うことができます。

パッチのインストール

正式にリリースされたすべてのパッチをインストールしてシステムに適用するには、次のコマンドを実行するだけです。

zypper patch

この場合、リポジトリで利用可能なすべてのパッチが関連性についてチェックされ、必要に応じてインストールされます。SUSE Linux Enterprise Serverインストールを登録した後、このようなパッチを含む正式な更新リポジトリがシステムに追加されます。上記のコマンドを入力すれば、いつでも必要なときにこれらを適用できます。

Zypperでは、パッチの可用性について問い合わせるための3つの異なるコマンドが認識されます。

zypper patch-check

必要なパッチの数を示します(システムに適用されていてもまだインストールされていないパッチ)。

~ # zypper patch-check
Loading repository data...
Reading installed packages...
5 patches needed (1 security patch)
zypper list-patches

必要なすべてのパッチを示します(システムに適用されていてもまだインストールされていないパッチ)。


~ # zypper list-updates
Loading repository data...
Reading installed packages...
S | Repository | Name                          | Current | Available  | Arch
--+------------+-------------------------------+---------+------------+-------
v | Updates    | update-test-interactive       | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-optional          | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-reboot-needed     | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-relogin-suggested | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-security          | 0-2.35  | 0-9999.1.2 | noarch
zypper patches

すでにインストールされているか、インストールに適用されているかどうかにかかわらず、SUSE Linux Enterprise Serverで使用可能なすべてのパッチを表示します。

また、特定の問題に関連するパッチを表示およびインストールすることもできます。特定のパッチを表示するには、次のオプションでzypper list-patchesコマンドを使用します。

-b

Bugzilla発信番号で必要なすべてのパッチを表示します。

--bugzilla[=number]

指定した番号でBugzilla発信番号に必要なパッチを表示します。

特定の発信番号のパッチをインストールするには、次のコマンドを使用します。

zypper patch --bugzilla=number
  

更新のインストール

リポジトリに新しいパッケージのみが存在し、パッチが提供されていない場合は、zypper patchは無効です。インストールされているパッケージをすべて新しく入手可能なバージョンで更新するには、次を使用します。

zypper update

個別のパッケージを更新するには、更新コマンドまたはインストールコマンドのいずれかでパッケージを指定します。

zypper update package
zypper install package

利用可能なすべての新しいパッケージのリストを次のコマンドで表示できます。

zypper list-updates
[Note]zypper updatezypper dist-upgradeの相違

システムの整合性を維持しながら製品のバージョンで使用可能な新しいバージョンにパッケージを更新する場合は、zypper updateを選択します。zypper updateは、次のルールに従います。

ベンダは変更されません
アーキテクチャは変更されません
ダウングレードされません
インストール済みパッケージが保持されます

インストールを新しい製品バージョンにアップグレードするには、必要なリポジトリとともにzypper dist-upgradeを使用します(詳細については、4.1.4項 「Zypperによるリポジトリの管理」を参照してください)。このコマンドにより、現在有効なリポジトリからすべてのパッケージがインストールされます。このルールを適用した場合、パッケージによりベンダまたはアーキテクチャが変更されるか、ダウングレードされる場合もあります。アップグレード後に依存関係が満たされていないすべてのパッケージはアンインストールされます。

Zypperによるリポジトリの管理

Zypperのすべてのインストールまたはパッチのコマンドは、既知のリポジトリのリストに応じて異なります。システムで既知のすべてのリポジトリのリストを表示するには、次のコマンドを使用します。

zypper repos

結果は、次の出力のようになります。



# | Alias                             | Name                              | Enabled | Refresh
--+-----------------------------------+-----------------------------------+---------+--------
1 | SUSE-Linux-Enterprise-Server 11-0 | SUSE-Linux-Enterprise-Server 11-0 | Yes     | No
2 | SLES-11-Updates                   | SLES 11 Online Updates            | Yes     | Yes
3 | broadcomdrv                       | Broadcom Drivers                  | Yes     | No      

各種コマンドのリポジトリを指定するには、エイリアス、URI、またはリポジトリ番号をzypper reposコマンド出力から使用できます。ただし、リポジトリのリストを修正すると、番号が変更になる可能性があることに留意してください。エイリアスは変更されることはありません。

デフォルトでは、URIの詳細またはリポジトリの優先度は表示されません。すべての詳細を表示するには、次のコマンドを使用します。

リポジトリの追加

リポジトリを追加するには、次を実行します。

zypper addrepo URI Alias

URIは、インターネットリポジトリ、ネットワークリソース、ディレクトリ、CDまたはDVDのいずれかです(詳細については、http://en.opensuse.org/Libzypp/URIを参照してください)。エイリアスは、リポジトリの短い名前および一意のIDです。このIDは、固有であること以外は自由に選択できます。すでに使用されているエイリアスを指定した場合、Zypperでは警告が発行されます。リポジトリを処理しやすくするために、エイリアスは短く覚えやすいものにしておきます。

リポジトリの削除

リストからリポジトリを削除する場合は、コマンドzypper removerepoを使用し、削除するリポジトリのエイリアスまたは番号を指定します。例から3番目のエントリを削除するには、次のコマンドを使用します。

zypper removerepo 3

リポジトリの変更

zypper modifyrepoによりリポジトリを有効または無効にします。また、このコマンドにより、リポジトリのプロパティ(動作、名前、優先度の更新など)を変更できます。次のコマンドは、リポジトリ名のupdatesを有効にし、auto-refreshをオンにして、その優先度を20に設定します。

zypper mr -er -p 20 'updates'

リポジトリの変更は、単一のリポジトリに制限されません。リポジトリグループを操作することもできます。

-a: すべてのリポジトリ
-l:ローカルリポジトリ
-t:リモートリポジトリ
-m TYPE:特定のタイプのリポジトリ(TYPEはhttp、http、ftp、cd、dvd、dir、file、cifs、smb、nfs、hd、isoのいずれかです)

リポジトリエイリアスの名前を変更するには、renamerepoコマンドを使用します。次の例では、エイリアスをMozilla Firefoxから単なるfirefoxに変更しています。

zypper renamerepo 'Mozilla Firefox' firefox

Zypperによるリポジトリおよびパッケージのクエリ

Zypperでは、リポジトリまたはパッケージをクエリするためのさまざまな方法が提供されています。使用可能なすべての製品、パターン、パッケージ、またはパッチのリストを取得するには、次のコマンドを使用します。

zypper products
zypper patterns
zypper packages
zypper patches

特定のパッケージについてすべてのリポジトリをクエリするには、searchを使用します。パッケージの名前、機能、またはオプションでパッケージの概要および記述を操作できます。検索語にワイルドカード*および?を使用できます。デフォルトでは、検索で大文字と小文字が区別されません。

zypper se firefox       # simple search for "firefox"
zypper se *fire*        # using wildcards
zypper se -d fire       # also search in package descriptions and summaries
zypper se -u firefix    # only display packages not already installed

特定の機能を提供するパッケージを検索するには、コマンドwhat-providesを使用します。たとえば、perlモジュールSVN::Coreを提供するパッケージを確認する場合は、次のコマンドを使用します。

zypper what-provides 'perl(SVN::Core)'

単一のパッケージをクエリするには、infoを使用し、引数として正確なパッケージ名を指定します。パッケージに関する詳細情報を表示します。オプション--requiresおよび--recommendsを使用すると、パッケージにより必要とされる機能/推奨される機能も示されます。

zypper info --requires MozillaFirefox

what-provides パッケージrpm -q --whatprovides パッケージに似ていますが、rpmではRPMデータベース(つまり、すべてのインストール済みパッケージのデータベース)のみを問い合わせることができます。それに対してZypperは、インストール済みのパッケージだけでなく、すべてのリポジトリから機能プロバイダに関する情報を表示します。