RPM

1 rpmパッケージのインストール (rpm -i)

RPMパッケージpackage-1-2vl3.i386.rpmをインストールするには,オプション -i(Install;インストール)を使います.

# rpm -ivh package-1-2vl3.i386.rpm
オプション-v (verbose)と-h (hash)を用いると インストール中にハッシュマーク(#)が出て,インストールの進む様子がわか ります.

○ 依存関係(dependency)の解決

RPMパッケージをインストールしようとしたときに,

libdepend.so.1 is needed by package-1-2vl3
sometool is needed by package-1-2vl3
もしくは,
libdepend.so.1 が package-1-2vl3 に必要です
sometool が package-1-2vl3 に必要です
などというエラーが出ることがあります. これは「RPMパッケージ package-1-2vl3の中に,libdepend.so.1というライブラリやsometoolという RPMパッケージを必要とするファイルがあるにもかかわらず,libdepend.so.1 やsometoolがシステムにインストールされていない」ことによるエラーです. このときには, ライブラリlibdepend.so.1を含むパッケージや、パッケージsometoolを探 してきてインストールしてください。 もし,このような依存性を無視してインストールしたいときには,オプション --nodepsを用いてインストールします.

# rpm -i --nodeps package-1-2vl3.i386.rpm
とします.ただし,この場合にはインストールしたパッケージが正常に動作しない可能性があります.

○ 競合(conflict)の解決

package-1-2vl3.i386.rpmのインストール時に,

/usr/bin/cmd conflicts with file from another-3-4vl5
もしくは,
/usr/bin/cmd は another-3-4vl5 のファイルと競合します
というエラーが出た場合には,package-1-2vl3のファイル/usr/bin/cmdが, すで にインストール済みのパッケージ another-3-4vl5のファイル/usr/bin/cmdと競 合するために,インストールできないことを示します.もし,無理矢理インストー ルしたいときには,オプション--forceを用います.
# rpm -ivh --force package-1-2vl3.i386.rpm
しかし,この場合には,元からあったanother-3-4vl5のファイル/usr/bin/cmdは, package-1-2vl3によって上書きされてしまうので,取扱には要注意です.

2 rpmパッケージのアップグレード (rpm -U)

すでに,package-1-1vl1.i386.rpmがインストールされていて,新しい package-1-2vl3.i386.rpmにバージョンアップしたいときには,オプション -U (Update;更新)を用います.

# rpm -Uvh package-1-2vl3.i386.rpm
ここで,オプション-vhの役割はインストールの時と同じです.また, 古いバージョンpackage-1-1vl1.i386.rpmに戻したいときには,オプション --oldpackageを用います.
# rpm -Uvh --oldpackage package-1-1vl1.i386.rpm

3 rpmパッケージの削除 (rpm -e)

インストールしたpackageを削除(アンインストール)したくなったら,オプショ ン-e(erase;削除)を用います.

# rpm -e package
ここで,バージョン番号やリリース番号は要りませんが,明示して
# rpm -e package-1-2vl3
とすることもできます.ただし, パッケージpackageに含まれるファイル somefileが他のパッケージで利用されている場合には,
removing these packages would break dependencies:
somefile is needed by another_pkg
もしくは,
これらのパッケージを必要としているパッケージがあります:
somefile が another_pkg に必要です
などというエラーメッセージが出て削除できません. 無視して削除したいときには, オプション--nodepを用います.
# rpm -e --nodeps package
しかし,この場合は パッケージanother_pkgが動かなくなる可能性があります ので注意が必要です.

3.4 rpmパッケージに関する情報を得る (rpm -q)

○ インストールされているrpmパッケージの情報を得る

パッケージをインストールしたけれでも,バージョンを忘れてしまったので知り たいと言うときには,オプション-q (query)を用います.例えば, パッケージ ktermについて知りたい場合を示します.

$ rpm -q kterm         (ktermのバージョンを知りたいとき)
kterm-6.2.0-14vl4
また,オプション -i (information;情報)を併用して,
$ rpm -qi kterm 
Name        : kterm                        Relocations: (not relocateable)
Version     : 6.2.0                             Vendor: Project Vine
Release     : 14vl4                         Build Date: 2000年 7月21日(金) 午前01時21分58秒 JST
Install date: 2000年10月 8日(日) 午前02時35分09秒 JST      Build Host: venus.athome
Group       : User Interface/Desktops       Source RPM: kterm-6.2.0-14vl4.src.rpm
Size        : 386868                           License: X, distributable
Packager    : Jun Nishii <jun@vinelinux.org>
Summary     : 日本語の表示が可能な X 上のターミナルソフトです.
Description :
日本語の表示が可能な X 上のターミナルソフトです. X の標準ターミナルソ
フト xterm に日本語を取り扱う機能が付加されています. xterm の上位互換
となっており, オプションの設定や操作方法は xterm とほとんど同じです.

このパッケージには xterm セキュリティーパッチと16 色パッチが当たってい
ます.

ドキュメントは man kterm および man xterm を参考にしてください.
このように,パッケージに関するいろいろな情報を得ることができます.さらに オプション-l (list;一覧)を用いると,パッケージに含まれるファイ ル一覧が表示されます.
$ rpm -ql kterm
/etc/X11/wmconfig/kterm
/usr/X11R6/bin/kterm
/usr/X11R6/lib/X11/app-defaults/KTerm
/usr/X11R6/lib/X11/ja/app-defaults/KTerm
/usr/X11R6/man/ja/man1/kterm.1x.gz
/usr/X11R6/man/man1/kterm.1x.gz
/usr/doc/kterm-6.2.0
/usr/doc/kterm-6.2.0/DEMO.kt.uu
/usr/doc/kterm-6.2.0/DEMO.xbm
/usr/doc/kterm-6.2.0/README.kt
/usr/doc/kterm-6.2.0/kterm.termcap
/usr/doc/kterm-6.2.0/kterm.terminfo

これらのオプションを全て付けることもできます.表示が多い場合はページャ lessを用いると便利です.

# rpm -qil package | less
また,grepコマンドを用いれば,探したいパターンpatternを検索することがで きます.
$ rpm -qil package | grep pattern

○ 持ってきたrpmパッケージに関する情報を得る

インストールされているパッケージでなく,持ってきたパッケージ package-1.0-2vl3.i386.rpmの情報やファイル一覧を知りたいときには,オプショ ン -p (package)を併用します.この場合は〜i386.rpmまでを含むファ イル名全体を指定します.

$ rpm -qilp package-1.0-2vl3.i386.rpm
さらにオプション-v(verbose)も使って
$ rpm -qilvp package-1.0-2vl3.i386.rpm
とすると,各ファイルの属性なども表示されます.

○ インストールされているファイルの属するパッケージ名を知る

インストールされてるファイル/usr/X11R6/bin/ktermが,どのRPMパッケージに含ま れているものなのかを知りたいときには,オプション-f (file;ファイ ル)を用いるとパッケージ名が表示されます.

$ rpm -qf /usr/X11R6/bin/kterm
kterm-6.2.0-14vl4

3.5 ソースパッケージからバイナリrpmを作成する (rpm --rebuild)

rpmパッケージを -i-Uでうまくインストールできない場合 は,ソース(src.rpm)パッケージからバイナリパッケージを作成する必要があり ます.また,Vine Linux 2.1用に用意されたパッケージ以外(Red HatやVine Linux 1.xのパッケージなど)をインストールする場合は必ずソースパッケージか ら再構築して下さい.

ソースパッケージからパッケージを再構築するときは,rootではなく一般ユーザ で行います.これはパッケージを構築する際に,ファイルの操作を必要とするた め,誤操作などで既存のシステムを壊さないようにするためです.新しいバイナ リのパッケージができたらrootになってインストールやアップデートして下さい.

○ 準備

一般のユーザ権限で src.rpm を rebuild するために,パッケージを展開し,構 築するための場所が用意されています.このディレクトリは /rpmとなっています.もし,ホームディレクトリにこのディレ クトリがなければ以下のようにして作成して下さい.

$ cd
$ mkrpmdir .
mkrpmdirコマンドを実行すると,必要なディレクトリと /.rpmmacrosを作成してくれます.

手動で作成するには,以下のようにします.

$ mkdir -p ~/rpm/{BUILD,SOURCES,SPECS,SRPMS,RPMS/{i386,i586,i686,noarch}}
また,/.rpmmacrosに設定を記述しておく必要があります.以 下のようにして下さい.
$ echo "%_topdir $HOME/rpm" > ~/.rpmmacros

○ 再構築

準備ができたらソースパッケージから再構築します.ソースパッケージは package-1-2vl3.src.rpmという名前になっています.一般ユーザで以 下のようにすればバイナリパッケージを作成できます.

$ rpm --rebuild package-1-2vl3.src.rpm
実行すると再構築(rebuild)が行われ,以下のようなメッセージを出して終了す れば成功です.
             ...
提供ファイル(provides)の調査中...
必須ファイル(requires)の調査中...
書き込み中: /home/user/rpm/RPMS/i386/package-1-2vl3.i386.rpm
実行中: %clean
             ...
+ exit 0
新しくできた /rpm/i386/package-1-2vl3.i386.rpmをrootユー ザになってインストールすればおしまいです.もし,再構築に失敗した場合は, スペックファイル等に修正が必要です.その場合は,一般ユーザで次ぎのように してソースコードをインストールし,スペックファイルを確認して下さい.

$ rpm -Uvh package-1-2vl3.src.rpm
こうすると,/rpm/SRPMS/にソースコードやパッチファイルが 展開され,/rpm/SPECS/にスペックファイル package.specがで きます.

rpm パッケージの作成方法の詳細については /usr/doc/HTML/MakingRPM/index.html を参照してください.


Vine Linux の manual 頁より抜粋。