方法2:パッケージ管理ツールを使用してインストールする
では、2つ目の「パッケージ管理ツールを使用してインストールする」方法を見ていきましょう。こちらは、インストール自体はソースからインストールするよりもシンプルですが、覚えなければならないコマンドオプションがたくさんあります。
まず、Red Hat系のディストリビューションで使用されるパッケージ管理ツールのRPM(Red Hat Package Manager)を使ってみましょう。RPMはrpm
コマンドを使って操作していきます。次のコマンドで、CUPSパッケージがインストール済みかどうかを確認できます。
# rpm -qa | grep cups
q
オプションはインストール済みのパッケージの情報を出力するオプションで、a
は「すべて(all)」の意味です。つまり、このコマンドは全パッケージの情報を出力し、その中から「cups」という文字列を含むデータ(行)を検索します。結果は次のようになります。
cups-1.6.3-17.el7.x86_64 cups-filters-libs-1.0.35-15.el7_0.1.x86_64 cups-filesystem-1.6.3-17.el7.noarch ……以下略……
「cups」という文字列を含むパッケージがすべて表示されます。CUPS本体は1行目の「cups-1.6.3-17.el7.x86_64」です。Red Hat系ディストリビューションであるCent OS 7には、デフォルトでCUPSパッケージがインストールされているため、rpm -qa | grep cups
を実行すると、この結果のようにCUPSパッケージの情報が表示されます。
今回はインストールをしたいので、一度、CUPSをアンインストールしましょう。アンインストールするには、rpm
コマンドのe
オプション(eraseの意味)を使用します。
# rpm -e cups
うまくいくと思いきや、実行すると次のようなエラーが発生します。
error: Failed dependencies: cups is needed by (installed) ghostscript-cups-9.07-18.el7.x86_64 cups >= 1:1.4 is needed by (installed) hpijs-1:3.13.7-6.el7.x86_64 cups >= 1.2.1-1.7 is needed by (installed) gutenprint-cups-5.2.9-18.el7.x86_64
これは「アンインストールしようとしているCUPSパッケージは別のパッケージが必要としているため、アンインストールできませんよ」という意味のエラーです。このように、RPMはパッケージの依存関係を保ったパッケージの操作ができません。
ここで登場するツールがYUMです。YUMは、RPM同様、Red Hat系ディストリビューションで使われるパッケージ管理ツールで、実は内部でrpm
コマンドを呼び出しています。つまり、YUMはRPMの機能拡張版といえます。YUMとRPMの違いは、Linux管理における重要なポイントの1つです。
それでは、YUMを使ってCUPSをアンインストールしてみましょう。次のようにyum
コマンドを実行します。
# yum remove cups
remove
のように、コマンドの後ろに付けるワードをサブコマンドといいます。LPICの試験では「サブコマンドに何を入れるか」が問われるので、yum
コマンドだけでなく、その他のコマンドについてもサブコマンドをしっかりと覚えておきましょう。上記のコマンドを実行すると次のような結果になります。
Loaded plugins: fastestmirror, langpacks Resolving Dependencies --> Running transaction check ……中略…… Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Removing: cups x86_64 1:1.6.3-17.el7 @anaconda 4.6 M Removing for dependencies: ghostscript-cups x86_64 9.07-18.el7 @anaconda 55 k gutenprint-cups x86_64 5.2.9-18.el7 @anaconda 565 k hpijs x86_64 1:3.13.7-6.el7 @anaconda 8.6 M Transaction Summary ================================================================================ Remove 1 Package (+3 Dependent packages) ……中略…… Removed: cups.x86_64 1:1.6.3-17.el7 Dependency Removed: ghostscript-cups.x86_64 0:9.07-18.el7 gutenprint-cups.x86_64 0:5.2.9-18.el7 hpijs.x86_64 1:3.13.7-6.el7 Complete!
「Dependencies Resolved」と表示されていますね。先ほどrpm
コマンドでエラーになった原因である依存関係を解決した状態で、アンインストールを行ってくれているのです。それでは再びrpm
コマンドで、CUPSがアンインストールされているかを確認してみましょう。
# rpm -qa | grep cups cups-filters-libs-1.0.35-15.el7_0.1.x86_64 cups-filesystem-1.6.3-17.el7.noarch ……以下略……
「cups-1.6.3-17.el7.x86_64」が表示されないことから、アンインストールされたとわかります。yum
コマンドでアンインストールされているかどうか確認するには、次のコマンドを実行します。
# yum list installed | grep cups
やはり「cups.x86_64 1:1.6.3-17.el7 」は表示されません。yum
コマンドでもアンインストールできたことが確認できました。
無事アンインストールできたので、CUPSパッケージのインストールに移りましょう。rpm
コマンドでインストールする場合には、次のようにオプションを指定します。
# rpm -ivh cups-1.6.3-17.el7.x86_64.rpm
これを実行するためには、引数に指定している「.rpm」ファイルが必要です。次のコマンドでダウンロードします。
# wget ftp://fr2.rpmfind.net/linux/centos/7.1.1503/os/x86_64/Packages/cups-1.6.3-17.el7.x86_64.rpm
オプションについては、ivh
の3つを指定するのが一般的です。それぞれ、次のような意味を持ちます。
オプション | 意味 | 機能 |
---|---|---|
i | install | インストールを実行する |
v | verbose | 詳細を表示する |
h | hash | インストールの進捗状況を#の数で表示する。ハッシュとは#記号のこと |
実行結果はどうかというと……またしてもエラーが出てしまうと思います。
error: Failed dependencies: ghostscript-cups is needed by cups-1:1.6.3-17.el7.x86_64
先ほどCUPSと一緒にYUMで削除してしまった「ghostscript-cups」が必要だというエラーです。RPMでインストールする場合、インストールするパッケージが依存するパッケージがインストール済みでなければならないのです。
それでは依存関係を保ってくれるYUMではどうでしょうか? 次のコマンドでインストールを行ってみます。
# yum install cups
yumコマンドでは無事、インストールが完了します。YUMでは、CUPSが依存するパッケージも合わせてインストールしてくれるからです。
もう1つ注目したいのが、YUMではrpmファイルを事前にダウンロードしなかった点です。上記のコマンド1つでインストールが完了します。実はここに、YUMとRPMとの大きな違いがもう1つ現れています。
YUMは、インターネット上にあるリポジトリ[2]からパッケージをダウンロードしてきます。そのため、RPMのように「rpmファイルをダウンロードする」手間を省くことができます[3]。逆にいうと、YUMにはインターネットに接続していなければ利用できないという制約がある、ということになります[4]。
以上で、Red Hat系ディストリビューションでパッケージ管理ツールを使ったインストールが完了です。ここまでの内容をまとめておきましょう。
パッケージ管理ツールでインストールする方法まとめ
-
yum
コマンドを使う場合は、yum install <インストールしたいパッケージ名>
-
rpm
コマンドを使う場合は、rpm -ivh <インストールしたいパッケージのrpmファイル>
パッケージ管理ツールでアンインストールする方法まとめ
-
yum
コマンドを使う場合は、yum remove <アンインストールしたいパッケージ名>
-
rpm
コマンドを使う場合は、rpm -e <アンインストールしたいパッケージ名 >
ポイント
- YUMは依存関係のあるパッケージも合わせてインストール/アンインストールしてくれるが、RPMはしてくれない。
- YUMはリポジトリからパッケージのダウンロードを行ってくれるが、RPMは基本的にダウンロードしてからインストールする。
ここまで読んでみて「YUMのほうが便利だな」と感じた方が多いのではないでしょうか。確かにそのとおりで、YUMのほうがインストールがしやすく、またパッケージ間の依存性に悩まされないので、基本的にはYUMを使うのがよいでしょう。ただし、YUMリポジトリに登録されていないRPMパッケージ[5]をインストールする際には、RPMを使うことになります。
注
[2]: パッケージを蓄積している領域。yum
コマンドは、インターネットに公開されているYUMサーバからパッケージをダウンロードし、自分(ローカル)のYUMリポジトリに保管します。
[3]: rpm
コマンドでリモートのURLを指定してインストールを行うこともできますが、リポジトリの使用はありませんのでYUMとは意味合いが異なります。
[4]: 厳密にはローカルリポジトリを指定することもできますが、これには設定が必要です。
[5]: YUMでは内部でrpm
コマンドを呼び出していると先に説明しました。つまり、YUMリポジトリに保管されているのはRPMパッケージです。