概要
この章では、ソフトウェア管理の2つのコマンドラインツールとして、ZypperとRPMについて説明します。
Zypperは、パッケージのインストール、更新、削除、およびリポジトリの管理を行うためのコマンドラインパッケージマネージャです。zypperの構文はrugに類似しています。rugとは対照的に、zypperではzmdデーモンが背後で実行している必要はありません。rugの互換性の詳細は、man zypper、「COMPATIBILITY 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リポジトリのみを使用してmplayerとamarokパッケージをインストールし、バーボスの場合には、次のようになります。
zypper -v install --repo factory mplayer amarok
ほとんどのZypperコマンドには、指定のコマンドのシミュレーションを行うdry-runオプションがあります。このオプションは、テストの目的で使用できます。
zypper remove --dry-run MozillaFirefox
パッケージをインストールまたは削除するには、次のコマンドを使用します。
zypper installpackagezypper removepackage
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-interactiveinstallpackage_name
このオプションは、スクリプトおよびcronジョブでZypperを使用できます。
![]() | 必須システムパッケージは削除しないでください。 |
|---|---|
| |
パッケージの対応するソースパッケージをインストールする場合は、次を使用します。
zypper source-install package_name
このコマンドにより、指定したパッケージの構築依存もインストールされます。この処理が必要でない場合は、次のようにスイッチ-Dを追加します。ビルドの依存関係のみをインストールするには、-dを使用します。
zypper source-install -dpackage_name# source package only zypper source-install -Dpackage_name# build dependencies only
もちろん、リポジトリリストで有効にしたソースパッケージを含むリポジトリが存在する場合にのみ動作します(ソースパッケージはデフォルトで追加されますが、有効にはなりません)。リポジトリの管理の詳細については、4.1.4項 「Zypperによるリポジトリの管理」を参照してください。
リポジトリで使用可能なすべてのソースパッケージのリストは、次のコマンドで参照できます。
zypper search -t srcpackage
Zypperを使用してソフトウェアを更新するには3つの方法があります。パッチをインストールする、パッケージの新しいバージョンをインストールする、または配布全体を更新する方法です。最後の方法は、項 「zypperによるディストリビューションアップグレード」 (第7章 SUSE Linux Enterpriseのアップデート, ↑導入ガイド)で説明されているzypper dist-upgradeコマンドで行うことができます。
正式にリリースされたすべてのパッチをインストールしてシステムに適用するには、次のコマンドを実行するだけです。
zypper patch
この場合、リポジトリで利用可能なすべてのパッチが関連性についてチェックされ、必要に応じてインストールされます。SUSE Linux Enterprise Serverインストールを登録した後、このようなパッチを含む正式な更新リポジトリがシステムに追加されます。上記のコマンドを入力すれば、いつでも必要なときにこれらを適用できます。
Zypperでは、パッチの可用性について問い合わせるための3つの異なるコマンドが認識されます。
必要なパッチの数を示します(システムに適用されていてもまだインストールされていないパッチ)。
~ # zypper patch-check Loading repository data... Reading installed packages... 5 patches needed (1 security patch)
必要なすべてのパッチを示します(システムに適用されていてもまだインストールされていないパッチ)。
~ # 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
すでにインストールされているか、インストールに適用されているかどうかにかかわらず、SUSE Linux Enterprise Serverで使用可能なすべてのパッチを表示します。
また、特定の問題に関連するパッチを表示およびインストールすることもできます。特定のパッチを表示するには、次のオプションでzypper list-patchesコマンドを使用します。
-b
Bugzilla発信番号で必要なすべてのパッチを表示します。
--bugzilla[=number]
指定した番号でBugzilla発信番号に必要なパッチを表示します。
特定の発信番号のパッチをインストールするには、次のコマンドを使用します。
zypper patch --bugzilla=number
リポジトリに新しいパッケージのみが存在し、パッチが提供されていない場合は、zypper patchは無効です。インストールされているパッケージをすべて新しく入手可能なバージョンで更新するには、次を使用します。
zypper update
個別のパッケージを更新するには、更新コマンドまたはインストールコマンドのいずれかでパッケージを指定します。
zypper updatepackagezypper installpackage
利用可能なすべての新しいパッケージのリストを次のコマンドで表示できます。
zypper list-updates
![]() | zypper updateとzypper dist-upgradeの相違 | ||||
|---|---|---|---|---|---|
システムの整合性を維持しながら製品のバージョンで使用可能な新しいバージョンにパッケージを更新する場合は、zypper updateを選択します。zypper updateは、次のルールに従います。
インストールを新しい製品バージョンにアップグレードするには、必要なリポジトリとともにzypper dist-upgradeを使用します(詳細については、4.1.4項 「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 addrepoURIAlias
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はhttp、http、ftp、cd、dvd、dir、file、cifs、smb、nfs、hd、isoのいずれかです) |
リポジトリエイリアスの名前を変更するには、renamerepoコマンドを使用します。次の例では、エイリアスを「Mozilla Firefox」から単なる「firefox」に変更しています。
zypper renamerepo 'Mozilla Firefox' firefox
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は、インストール済みのパッケージだけでなく、すべてのリポジトリから機能プロバイダに関する情報を表示します。