LoginSignup
4
4

More than 5 years have passed since last update.

git-rpmというサブコマンドを作ってみた

Last updated at Posted at 2015-01-17

最新のコミットから直接rpmを作成するgit rpmというコマンドを作ってみた。
git initした直下にspecファイルが必要です。

インストール

githubに上げておいたのでそのままcloneして、ビルドします。

$ git clone git@github.com:ymko/git-rpm.git
$ cd git-rpm
$ ./git-rpm
書き込み完了: /home/ymko/tmp/git-rpm/rpm/SRPMS/git-rpm-1.00-1.el7.centos.src.rpm
書き込み完了: /home/ymko/tmp/git-rpm/rpm/RPMS/noarch/git-rpm-1.00-1.el7.centos.noarch.rpm
$ sudo su
# rpm -ivh rpm/RPMS/noarch/git-rpm-1.00-1.el7.centos.noarch.rpm
# exit
$ which git-rpm
/usr/bin/git-rpm

~/bin にパスが通っているならこちらでも可です。

$ git clone git@github.com:ymko/git-rpm.git
$ cd git-rpm
$ cp git-rpm ~/bin

rpm作成

このプロジェクト自体がrpmを作成を意図しているので、そのままサンプルになります。

$ git rpm
書き込み完了: /home/ymko/tmp/git-rpm/rpm/SRPMS/git-rpm-1.00-1.el7.centos.src.rpm
書き込み完了: /home/ymko/tmp/git-rpm/rpm/RPMS/noarch/git-rpm-1.00-1.el7.centos.noarch.rpm

git-rpmの中身

git-rpm
#!/bin/sh

specfile=`ls -1 | grep .spec | head -n 1`
name=`grep "Name:" $specfile | awk '{print $2}'`
version=`grep "Version:" $specfile | awk '{print $2}'`

pwd=`pwd`
mkdir -p rpm/SOURCES >/dev/null 2>&1

git archive --prefix ${name}-${version}/ HEAD | gzip > rpm/SOURCES/${name}-${version}.tar.gz

rpmbuild -ba $specfile --define "%_topdir $pwd/rpm"

参考

rpmパッケージをプロジェクト下のディレクトリに作成する方法 - ymkoの日記
http://d.hatena.ne.jp/ymko/20110204/1296827232
CentOS5では--rcfile オプションでできていたが、分離されたようで--defineオプションに変更

rpmbuild --showrc
Macro path: /usr/lib/rpm/macros:/usr/lib/rpm/macros.d/macros.:/usr/lib/rpm/platform/%{_target}/macros:/usr/lib/rpm/fileattrs/.attr:/usr/lib/rpm/redhat/macros:/etc/rpm/macros.*:/etc/rpm/macros:/etc/rpm/%{_target}/macros:~/.rpmmacros

オレオレrpmパッケージの作り方(基本編) — ディノオープンラボラトリ
http://openlab.dino.co.jp/2007/11/16/13162254.html

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4