Linuxでソフトウェアをインストールする場合、方法は2種類あります(厳密には3種類)。ひとつはソースパッケージからビルドする方法、もうひとつは、RPMパッケージからインストールする方法です。ソースからビルドする場合、自分の好みに合わせて自由にカスタマイズできる反面、豊富な知識をもっていないとトラブルシューティングが非常に困難で、敷居が高くなります。RPM(Redhat
Package Manager)パッケージでは、rpmというコマンドを使用することで、複雑で難解な部分を全て自動化してくれます。ソフトウェアのインストール、アップグレードなどを簡単に行うことができ、その他にも「問い合わせ」「検証」「署名」などの機能も提供してくれます。ここではその便利なrpmコマンドについて解説していきます。
|
|
■RPMパッケージの新規インストール「-ivh」
rpmパッケージを新規インストールするには「
-i 」(install)オプションを使用します。「
-v
」(Verbose)はインストールの詳細情報を表示させるオプション、「
-h」(hash)は進捗状況をハッシュマーク(#)で表示してくれます。
なお、「
-vv」とvを2つ使用することによってさらに詳細な進捗状況を表示させることができます。
# rpm -ivh telnet-server-0.17-23.i386.rpm
Preparing... ###############################[100%]
1:telnet-server ###############################
[100%] |
|
■RPMパッケージのアップグレード「-Uvh」
RPMパッケージのアップグレードを行う場合は、「
-U」(Upgrade)オプションを使用します。対象とするパッケージがインストールされているかわからない場合には、「-U」を「-i
」の代用として使用します。なお、旧バージョンに戻したい場合には「
--oldpackage」オプションを用いて、
「rpm -Uvh --oldpackage 旧パッケージ名」のようにします。-U はシステムに同じパッケージが存在しない場合には、通常のインストールを行います。-F
オプションと区別して使用するようにしましょう。
# rpm -Uvh telnet-server-0.17-23.i386.rpm
Preparing... ###############################[100%]
1:telnet-server ###############################
[100%] |
|
■RPMパッケージのアップグレード「-Fvh」
-U オプション同様RPMパッケージのアップグレードを行いますが、システムに同じパッケージが存在しない場合は、インストールを行いません。-U
オプションと区別して使用するようにしましょう。
◎インストールオプション
|
--force |
強制的にパッケージを上書きする |
|
--oldpackage |
古いパッケージに置き換える |
|
--nodeps |
依存関係を無視してインストールする |
|
--test |
テストインストールする(実際にインストールは行わない) |
|
--replacefiles |
ファイルが既に存在する場合、置き換える |
|
--noscripts |
スクリプトを実行しない |
|
--root |
--root <ディレクトリ名>で、作業ディレクトリを指定する |
|
--prefix |
--prefix <ディレクトリ名>でパッケージをインストールするディレクトリを指定する |
|
--reLocate |
--reLocate <旧ディレクトリ名=新ディレクトリ名>で、インストール済みのパッケージをディレクトリを変更して再インストールする(i
と併用) |
|
--nomd5 |
MD5チェックサムによるファイル改竄の可能性の有無をチェックしません(Vと併用) |
|
■RPMパッケージのバージョンを表示する「-q」
RPMパッケージのバージョンを表示したい場合には、「
-q」」(query)オプションを使用します。全てのインストール済みのパッケージを表示させるには「
-qa」オプションを用います。
# rpm -q telnet
telnet-0.17-23 |
|
■RPMパッケージの詳細情報を表示する「-qi」
RPMパッケージの詳細な情報を表示したい場合には、「
-i 」(Infomation)オプションを併用し、
「
-qi」のように使用します。なお、
-qip とすることでインストール前のRPMパッケージの詳細情報が表示されます。表示される情報は、-qi
実行時と同様のものです。
# rpm -qi telnet
Name : telnet Relocations: (not relocateable)
Version : 0.17 Vendor: Red Hat, Inc.
Release : 23 Build Date: 2002年07月23日 22時05分54秒
Install date: 2003年10月19日 21時02分04秒 Build
Host: stripples.devel.redhat.com
Group : Applications/Internet Source RPM:
telnet-0.17-23.src.rpm
Size : 91323 License: BSD
Signature : DSA/SHA1, 2002年09月04日 06時41分07秒,
Key ID 219180cddb42a60e
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Summary : The client program for the telnet
remote login protocol.
Description :
Telnet is a popular protocol for logging
into remote systems over the
Internet. The telnet package provides a
command line telnet client.
|
|
■インストールされたRPMパッケージのディレクトリを調べる「-ql」
「-l 」(list)オプションをつけると、インストールされたRPMパッケージに含まれるファイルをを調べることができます。インストールする前に予め、どのようなファイルがインストールされるかを調べるには、
-qlp とします。
# rpm -ql telnet-server
/etc/xinetd.d/telnet
/usr/sbin/in.telnetd
/usr/share/man/man5/issue.net.5.gz
/usr/share/man/man8/in.telnetd.8.gz
/usr/share/man/man8/telnetd.8.gz |
|
■RPMパッケージのアンインストール「-e」
RPMパッケージをアンインストールするには、「
-e」(erase)オプションを使用します。アンインストールする際に、依存関係を無視して削除する場合は、「
--nodeps」オプションを付け加えます。
■RPMパッケージファイルの検証「-V」
パッケージのインストール後にパッケージのファイルをどのように書き換えたかを検証するには「-V」オプションを使用します。問題がなければ、「.......」のようにドットで表示されます。-V
オプションを利用することでRPMデータベースに記録されている内容と実際にインストールされているファイルが一致しているかどうか調べることができるので、ファイルが改竄されていないかどうか、しかるべきファイルサイズでインストールされているかどうかをチェックすることができるので重宝します。また、インストール時にあったファイルが見つからない場合は、
missing
と表示されます。インストールされている全てのパッケージを検査するには、
-Va オプションを使用します。
# rpm -V telnet-server
S.5....T c /etc/xinetd.d/telnet |
|
なお、変更が加えられていない場合は、「.......」のように表示されますが、変更が加えられている場合には、「S」や「T」、「5」のような検証コードが表示されます。以下にこれら検証コードの意味について記載しておきます。
|
S |
ファイルサイズが異なっている |
|
5 |
MD5チェックサムが異なる |
|
L |
シンボリックリンクが変更されている |
|
T |
ファイルの更新時刻が変更されている |
|
D |
デバイスファイルが変更されている |
|
U |
ファイルの所有者が変更されている |
|
G |
ファイルの所有グループが変更されている |
|
M |
ファイルのパーミッションが変更されている |
|
■指定されたファイルのパッケージを表示する「-qf」
# rpm -qf /etc/rndc.key
bind-9.2.1-16 |
|
■RPMパッケージからファイルを抽出する
RPMから特定のファイルを抽出できるコマンドとして、
rpm2cpio があります。これを使うことでインストールせずに必要なファイルを抽出して利用したり、ディレクトリ構成が前もって把握できるのでとても重宝します。以下のコマンドでは、どのようなファイルが格納されているかを調べます。rpm
-qlp と同様の意味になります。
# rpm2cpio mt-daapd-0.2.1.1-1.fc3.i386.rpm
| cpio --list |
|
実際に抽出するには以下のようにします。まず、ディレクトリを作成し、そこを作業用ディレクトリとします。コマンド実行後は階層ごとにファイルが抽出されます。
# mkdir mt-daap
# cd mt-daap
# rpm2cpio ~/mt-daapd-0.2.1.1-1.fc3.i386.rpm
| cpio -id |
|