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 4月 13 11:20 nkf-2.1.3-5.el7.centos.x86_64.rpm -rw-r--r-- 1 root root 303884 4月 13 11:20 nkf-debuginfo-2.1.3-5.el7.centos.x86_64.rpm -rw-r--r-- 1 root root 133488 4月 13 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!。