のぴぴのメモ

自分用のLinuxとかの技術メモ

SRPMインストール先を指定する方法

ソースコードをパッケージ化したSRPM(拡張子がsrc.rpmのファイル)のインストール先は、デフォルトでは"${HOME}/rpmbuild"になります。(CentOS5/RHEL5以前は"/usr/src/redhat")。このデフォルトのインストール先を変更する方法を説明します。

1.普通にSRPMをインストールした場合

SRPMrpmコマンドでインストールします。

$rpm -ivh lsof-4.87-4.el7.src.rpm 

デフォルトでインストールした場合は、ホームディレクトリ配下のrpmbuildディレクトリにインストールされます。

/home/n/rpmbuild/
├── SOURCES
│   ├── lsof_4.87-rh.tar.xz
│   └── upstream2downstream.sh
└── SPECS
    └── lsof.spec

2.インストールディレクトリを指定する方法

2.1 RPMのマクロ定義ファイル("~/.rpmmacros")で指定

ネットを調べるとたいてい出てくる方法はこちらの方法になります。rpmコマンドでのSRPMインストールと、その後のrpmbuildコマンドによるビルド操作で都度、引数でディレクトリを指定する手間を考えると、マクロ定義ファイルで予め定義するほうが現実的な気はします。

(1)マクロ定義ファイルの設定

インストール先のトップディレクトリは、"%_topdir"変数になるので、この変数をマクロ定義ファイルで変更します。

$echo "%_topdir /data/rpmbuild" > ~/.rpmmacros
(2)SRPMのインストール
$rpm -ivh lsof-4.87-4.el7.src.rpm 

2.2 コマンド引数でインストールディレクトリを指定する方法

ホームディレクトリに".rpmmacros"ファイルを作成したくない場合や、一時的にインストールディレクトリを変更したい場合は、"--define="引数でマクロの変数を変更します。

$rpm -ivh --define='%_topdir /data/rpmbuild' lsof-4.87-4.el7.src.rpm