パッケージの追加や削除、アップグレードといったよく使う基本的な操作を説明します。
新規インストール時にはさらに rpm -ivh --test パッケージファイル名 のように次のオプションが追加可能です。
たとえばインストールしたパッケージのファイル名が hoge-1.2.3-4.i386.rpm なら、パッケージ名は hoge となります。
ターミナルから man rpm と入力しても詳細な解説が見れます。
ソースパッケージ (src.rpm) を探してリビルドしパッケージを作り直すか、ソースからコンパイルするか、必要とされているバージョンの glibc を採用しているディストリビューションのバージョンにアップグレードしましょう。
glibc (GNU C Library) は init, Bash を含め、Linux 上の C 言語で書かれたほとんど全てのソフトウェアが使用する極めて重要なライブラリです。glibc のアップグレードに失敗するとシステムが動作しなくなる危険があります。glibc を自前でアップグレードするのは避けた方が無難です。
ただし、つぎの項目を読んだうえで利用してください。
ディストロによって
とかが微妙に異なっていたりするのであまりおすすめしない。
特にビルド済みのバイナリパッケージは、できるだけその環境でビルドされたものを使った方がいいかと。
大体のシステムが似通っていれば、ソースパッケージを自分でビルドすれば使えることもある。
いったん rpm2cpio コマンドで cpio アーカイブに変換すれば取り出せます。
rpm2cpio hoge-1.0.0-1.i386.rpm | cpio -idm
また tar.gz 形式に変換する rpm2tgz コマンドが用意されていることもあります。
rpm2tgz hoge-1.0.0-1.i386.rpm tar xvfz hoge-1.0.0-1.i386.tgz
rpm-utils というのもあります。rpmパッケージを操作するスクリプト集です。rpm-get hoge-1.0.0-1.i386.rpm と入力するとパッケージに含まれるファイルが番号つきリストで出力され、rpm-get hoge-1.0.0-1.i386.rpm -n 3 と入力すると3番目を標準出力に出力します。
まとめて指定しましょう 。
例えば rpm -Uhv hoge-1.0.0-1.i386.rpm と入力して
Faild dependencies: fuga = 2.0.0-1 is needed by 1.0.0-1
と表示される場合は、rpm -Uhv hoge-1.0.0-1.i386.rpm fuga-2.0.0-1.i386.rpm のように同時に入れればいいです。
i686 は Pentium Pro 以降用に最適化がされたパッケージ です。386, 486, Pentium マシンで動く保証はありません。
これに対して i386 は 386 以降の x86 系すべての CPU 用 です。Intel の 386, 486, Pentium, Pentium Pro 以降のすべてで使用可能です。AMD の K6, Athlon, Duron でも使用可能です。
表示または名称 | 説明 |
i386 | 386 以降用 。x86 (IA-32) 系の全ての CPU で動く万能選手。その反面、あまり最適化されていない。 |
i486 | 486 以降用 に最適化されたもの。386 マシンで動く保証なし。 |
i586 | Pentium 以降用 に最適化されたもの。386, 486 マシンで動く保証なし。 |
i686 | Pentium Pro 以降用 に最適化されたもの。386, 486, Pentium, K6 マシンで動く保証なし。 |
k6 | AMD の K6 以降用 に最適化されたもの。Intel 製の CPU で動く保証なし。K6 は基本的に i586 に含まれるので、K6 用の RPM がない場合、i586 で代用できる。 |
k7, athlon | AMD の Athlon 以降用 に最適化されたもの。Intel 製の CPU, K6 シリーズ で動く保証なし。Athlon, Duron マシンは基本的に i686 に含まれるので、Athlon 用の RPM がない場合、i686 で代用できる。 |
ia32e | Intel の 32/64bit CPU (EM64T) マシン用のもの。32bit CPU マシンで動く保障なし。 |
amd64, x86_64 | AMD の 32/64bit CPU (AMD64) マシン用のもの。32bit CPU マシンで動く保障なし。 |
ia64 | Intel の 64bit CPU (IA-64) マシン用のもの。32bit CPU マシンで動く保障なし。 |
ppc, ppc64, ppciseries, ppcpseries | IBM の Power アーキテクチャ系 (PowerPC, POWER5, etc) の CPU を搭載した Mac とか iSeries 等のマシン用。x86 系のマシンに入れないように。 |
sparc, sparc64 | Sun や富士通の SPARC 系の CPU を搭載したワークステーション等のマシン用。x86 系のマシンに入れないように。 |
alpha | HP (旧 DEC、旧 Compaq) の Alpha 系の CPU を搭載したマシン用。x86 系のマシンに入れないように。 |
noarch | 特定の CPU アーキテクチャに依存しないパッケージ 。フォント、PHP, Perl, Python スクリプト、設定ファイルなどが収録されています。 |
src | ソースパッケージ (SRPM とも呼ばれる)。rebuild することで上記のパッケージをつくることができます。 |
ターミナルで rpm -qa と入力するとインストールされているパッケージの一覧を表示できます。一画面では収まらないので less, grep コマンドを併用してください。
正しく作られた RPM パッケージなら、アップデートする際以下のような動作をするためです。
現在の設定ファイルをそのまま保持。
現在の設定ファイルはそのまま保持した上で、新規パッケージに含まれる設定ファイルは*.rpmnewという名前でインストール。
現在の設定ファイルと新規パッケージの設定ファイルを置き換え、従来の設定ファイルを*.rpmsaveという名前で保管。
ただし、普通は通常のアップデートで設定の書式の互換性がなくなったりすることはほとんどないので、設定ファイルが置き換わることはほとんどありません。
ディストリビューションのアップグレードの際には、設定ファイルの互換性がなくなる場合があるので、注意する必要があります。
RPM パッケージの spec 内で、設定ファイルを設定ファイルと指定していない(普通のファイルになっている)場合は、問答無用で新しいパッケージの設定ファイルに上書きされます。
たとえば、コンパイルに libhoge が必要な huga というソフトをコンパイルしようとしているのにエラーが出てできない場合。
devel パッケージを入れていますか??
rpm -qa | grep libhoge と入力してみて libhoge-1.0.0-1 とかしか表示されないならば、libhoge-devel-1.0.0-1.i386.rpm ような devel パッケージを入れて下さい。
devel パッケージにはインクルードファイルなど開発に必要な物が入っています。
rpm -qf ×× でそのコマンドが属する RPM パッケージを調べる
→ そのパッケージの *.src.rpm を探す。
簡単な方法は MakeRPMs にあります。
詳しく知りたい人は RPM HOWTO などを参照のこと。(日本語訳の方は最新の環境ではうまくいかない場合があるかもしれません。)
パッケージは、通常 Source RPM(SRPM) の形式でも配布されています。
メーラー Sylpheed の場合を例にして、簡単に説明します。
まず Sylpheed 公式サイトから ソースRPMとして提供されている sylpheed-1.0.0-1.src.rpm をダウンロードし、コンソール(ターミナル)より次のコマンドを入力します。
# rpmbuild --rebuild sylpheed-1.0.0-1.src.rpm .....................(途中経過省略) Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/sylpheed-root 書き込み中: /usr/src/redhat/RPMS/i386/sylpheed-1.0.0-1.i386.rpm 書き込み中: /usr/src/redhat/RPMS/i386/sylpheed-debuginfo-1.0.0-1.i386.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.21632 + umask 022 + cd /usr/src/redhat/BUILD + cd sylpheed-1.0.0 + rm -rf /var/tmp/sylpheed-root + exit 0 Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.21632 + umask 022 + cd /usr/src/redhat/BUILD + rm -rf sylpheed-1.0.0 + exit 0
このログから分かるとおり、sylpheed のRPMパッケージは /usr/src/redhat/RPMS/i386/ ディレクトリに作成されました。そこで、今度はこのディレクトリに移動し、通常のインストール手順を実行すれば、 Sylpheed のインストール作業は完了します。
Alien パッケージをインストールすれば、それぞれのあいだで相互変換することが可能となります。
root で rpmbuild -ta alien_8.53.tar.gz と実行します。
Checking for unpackaged file(s): /usr/lib/rpm/check-files /tmp/alien-8.53.build 書き込み中: /usr/src/redhat/SRPMS/alien-8.53-1.src.rpm 書き込み中: /usr/src/redhat/RPMS/noarch/alien-8.53-1.noarch.rpm
/usr/src/redhat/RPMS/noarch に alien-8.53-1.noarch.rpm ができるので、これを通常の手順で展開すればOKです。
パッケージを変換するには、alien -* 変換するパッケージ と入力すればOKです。-* には -r (rpm), -d (deb), -t (tgz) が選べます。
ソースから RPM を作成したいのなら、 CheckInstall を利用すると便利です。
ソースコード: checkinstall-1.6.0.tgz バイナリーパッケージ: RPM バイナリー checkinstall-1.6.0-1.i386.rpm Debian バイナリー checkinstall_1.6.0-1_i386.deb
$ tar xzvf hoge-1.2.3.tar.gz $ cd hoge-1.2.3 $ ./configure $ make $ su # checkinstall
以上の作業で hoge-1.2.3-1.rpm ができるので、これを通常の手順でインストールします。
アップグレードしたパッケージに不具合があった場合、もう一度、バージョンが古いパッケージをインストールしたいことがあります。このような場合には、`-U'オプションとともに `--oldpackage'オプションを用います。
# rpm -Uvh --oldpackage パッケージファイル名
rpm作成スレッド
http://pc11.2ch.net/test/read.cgi/linux/1034402194/