Geecul

Geekに踊ってカルチャーと寝る

CentOSでrpmソースパッケージからバイナリパッケージ生成、ソフトウェアのインストール

VitualBox上のCentOS7.4(インターネットには接続していない)に、nkfをrpmインストールしようとして詰まった。

原因は僕がrpmについてよく理解していなかったことですね。

事象と解決までの経緯、調べたことを備忘ということで残しておきます。

事象

rpmコマンドでnkfのrpmパッケージをインストールを行う。

rpmコマンドは正常に完了したように見えるが、

実際にはインストールされていない。

[root@CentKun work]# rpm -ivh /home/user1/nkf-2.1.3-5.el7.src.rpm
更新中 / インストール中...
   1:nkf-1:2.1.3-5.el7                ################################# [100%]
[root@CentKun work]#
[root@CentKun work]# rpm -ql /home/user1/nkf-2.1.3-5.el7.src.rpm
パッケージ /home/user1/nkf-2.1.3-5.el7.src.rpm はインストールされていません。
[root@CentKun work]#
[root@CentKun work]# nkf -version
bash: nkf: コマンドが見つかりませんでした...
[root@CentKun work]#
[root@CentKun work]# rpm -q -all | grep nkf
/usr/lib64/ruby/nkf.so
[root@CentKun work]#

原因・解決策

インストールしようとしているパッケージが、

バイナリパッケージではなく、ソースパッケージだったため、rpm -ivhでインストールできなかった。

ソースパッケージからバイナリパッケージを作成して、

バイナリパッケージをインストールしたら、うまくいった。

[root@CentKun work]# rpmbuild --rebuild /home/user1/nkf-2.1.3-5.el7.src.rpm
/home/user1/nkf-2.1.3-5.el7.src.rpm をインストール中です。
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.KVD1Je
+ umask 022
~省略~
+ exit 0
[root@CentKun work]#
[root@CentKun work]# cd /root/rpmbuild/RPMS/x86_64
[root@CentKun x86_64]# ls -l
合計 568
-rw-r--r-- 1 root root 137256  413 11:20 nkf-2.1.3-5.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root 303884  413 11:20 nkf-debuginfo-2.1.3-5.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root 133488  413 11:20 perl-NKF-2.1.3-5.el7.centos.x86_64.rpm
[root@CentKun x86_64]#
[root@CentKun x86_64]# rpm -ivh nkf-2.1.3-5.el7.centos.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:nkf-1:2.1.3-5.el7.centos         ################################# [100%]
[root@CentKun x86_64]#
[root@CentKun x86_64]# rpm -qa | grep nkf
nkf-2.1.3-5.el7.centos.x86_64
[root@CentKun x86_64]#
[root@CentKun x86_64]# which nkf
/bin/nkf
[root@CentKun x86_64]#
[root@CentKun x86_64]# nkf -version
Network Kanji Filter Version 2.1.3 (2013-11-22)
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
Copyright (C) 1996-2013, The nkf Project.
[root@CentKun x86_64]#

rpmとは

RPM(Redhat Package Manager)はRed Hat系のLinuxディストリビューションで採用されているパッケージ管理システム。

パッケージ管理システムを使うことでソフトウェアのインストールやアップデートが簡単に行える。

このrpmを用いて、パッケージ(ソフトウェア、ソフトウェアに関する情報がひとまとめになったもの)からソフトウェアをインストールする。

バイナリパッケージとソースパッケージ

rpmパッケージの名前は以下のルールで命名されています。

<パッケージ名>-<バージョン番号>-<リリース番号>.<アーキテクチャ>.rpm

このアーキテクチャ部分がsrcのものが、ソースパッケージ(SRPM)です。

ソースパッケージは実際に各アーキテクチャ環境でソフトウェアインストール可能なバイナリパッケージを生成するためのものです。

ソースパッケージの生成、バイナリパッケージからのインストール

ソースパッケージは以下を実行することでバイナリパッケージを生成することができます。

rpm --rebuild ソースパッケージ

生成されたバイナリパッケージは、

「~/rpmbuild/RPMS/」下のアーキテクチャ名のディレクトリに生成されます。

実際のソフトウェアのインストールは生成されたバイナリパッケージを指定してrpmインストールすればOK!。

リンク(参考)

ja.wikipedia.org

www.atmarkit.co.jp

ja.wikipedia.org

www.koikikukan.com