Loading ...

rpmdevtools


rpmdevtoolsとは

rpmdevtoolsは https://fedorahosted.org/rpmdevtools/ で開発,配布されているRPMの構築作業に有益なコマンド集である.

コマンド リファレンス

下記はrpmdevtoolsバージョン7.5の簡単な調査結果である.それ以外のバージョンでは異なる場合もあるかもしれないし,ないかもしれない.

/usr/bin/annotate-output - 出力に注釈を入れる

annotate-outputは引数にコマンド,コマンドの引数を受け取る. その後実際に指定されたコマンドを実行し,コマンドが出力する標準出力,標準エラー出力にコメントをつけ,その結果を標準出力に出力する.

実際にはコマンド実行のマーク的な意味の行が1行目に,末尾にコマンドの終了コードを出力した行が追加され,書式としては日時の項目,情報の種類をあらわす項目,実際の出力内容となっている. たとえばmakeを引数なしで実行した結果は下記のとおり.

$ annotate-output make
22:58:31 I: Started make
22:58:31 E: make: *** ターゲットが指定されておらず, makefile も見つかりません.  中止.
22:58:31 I: Finished with exitcode 2

情報の種類は「I」はannotate-output自身が出力したメッセージ,「O」が標準出力のメッセージ,「E」が標準エラー出力のメッセージになっている.

/usr/bin/checkbashisms

/usr/bin/licensecheck

/usr/bin/manpage-alert

/usr/bin/rpmargs

/usr/bin/rpmdev-bumpspec - SPECファイルのリリース番号をあげる

指定のSPECファイルのリリース番号をあげる.

  • c(--comment)でコメント,-u(--userstring)で変更者の指定をする. 変更者の指定はrpm-packagerが値を出力しているようになっていれば省略でき,rpm-packagerが出力しない(あるいは別のものを指定したい)なら-uで明示的に指定する必要がある.

通常は1ずつ増加するが-r(--rightmost)を指定すると0.1ずつ増加する.

使い方

Usage: rpmdev-bumpspec [OPTION]... SPECFILE...

rpmdev-bumpspec bumps release tags in specfiles.

Options:
  -h, --help            show this help message and exit
  -c COMMENT, --comment=COMMENT
                        changelog comment (default: "- rebuilt")
  -u USERSTRING, --userstring=USERSTRING
                        user name+email string (default: output from rpmdev-
                        packager(1))
  -r, --rightmost       bump the rightmost integer or add a .1
  -V, --verbose         more output
  -v, --version         output version number and exit

/usr/bin/rpmdev-checksig

/usr/bin/rpmdev-cksum

/usr/bin/rpmdev-diff

/usr/bin/rpmdev-extract

/usr/bin/rpmdev-md5

/usr/bin/rpmdev-newinit - サービス用のinitファイル作成をする

サービス用のinitファイル(いわゆる/etc/rc.d/init.d/に置くやつ)の雛形を作成する.

使い方

rpmdev-newinit generates new init script from a template

Usage: rpmdev-newinit [option]... [appname[.init]]

Options:
  -o FILE  Output the init script to FILE.  "-" means stdout.  The default is
           derived from <appname>, or "newinitscript.init" if appname is not given.
  -h       Show this usage message and exit.
  -v       Print version information and exit.

The template used is /etc/rpmdevtools/template.init.

Report bugs at <https://bugzilla.redhat.com/>, component rpmdevtools,
or at <https://fedorahosted.org/rpmdevtools/>.

簡単な例

$ rpmdev-newinit foo
Skeleton init script has been created to "foo.init".
$ ls -la  foo.init 
-rw-rw-r-- 1 elf elf 1746 10月 20日  02:38 foo.init
$ cat foo.init
#!/bin/sh
#
# foo - <summary>
#
# chkconfig:   <default runlevel(s)> <start> <stop>
# description: <description, split multiple lines with \
#              a backslash>

# http://fedoraproject.org/wiki/FCNewInit/Initscripts
### BEGIN INIT INFO
# Provides: 
# Required-Start: 
# Required-Stop: 
# Should-Start: 
# Should-Stop: 
# Default-Start: 
# Default-Stop: 
# Short-Description: 
# Description: 
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

exec="/usr/sbin/foo"
prog=$(basename $exec)

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/$prog

start() {
    echo -n $"Starting $prog: "
    # if not running, start it up here, usually something like "daemon $exec"
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    # stop it here, often "killproc $prog"
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    stop
    start
}

case "$1" in
    start|stop|restart)
        $1
        ;;
    force-reload)
        restart
        ;;
    status)
        status $prog
        ;;
    try-restart|condrestart)
        if status $prog >/dev/null ; then
            restart
        fi
        ;;
    reload)
        # If config can be reloaded without restarting, implement it here,
        # remove the "exit", and add "reload" to the usage message below.
        # For example:
        # status $prog >/dev/null || exit 7
        # killproc $prog -HUP
        action $"Service ${0##*/} does not support the reload action: " /bin/false
        exit 3
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
        exit 2
esac

/usr/bin/rpmdev-newspec - specファイルの雛形を作成する

specファイルの雛形を作成する.

使い方

rpmdev-newspec generates new rpm .spec files from templates.

Usage: rpmdev-newspec [option]... [appname[.spec]]

Options:
  -o FILE, --output FILE
                 Output the specfile to FILE. "-" means stdout. The default is
                 derived from <appname>, or "newpackage.spec" if <appname> is
                 not given.
  -t TYPE, --type TYPE
                 Force use of the TYPE spec template. The default is guessed
                 from <appname>, falling back to "minimal" if the guesswork
                 does not result in a more specific one or if <appname> is not
                 given. Available types:
                     R dummy lib minimal ocaml perl php-pear python ruby
  -m, --macros   Emit templates using macros instead of shell style variables.
  -h, --help     Show this usage message and exit.
  -v, --version  Print version information and exit.

System wide configuration file is /etc/rpmdevtools/newspec.conf.

Report bugs at <https://bugzilla.redhat.com/>, component rpmdevtools,
or at <https://fedorahosted.org/rpmdevtools/>.

簡単な例

$ rpmdev-newspec foo
Skeleton specfile (minimal) has been created to "foo.spec".
$ ls -la foo.spec
-rw-rw-r-- 1 elf elf 491 10月 20日  02:38 foo.spec
$ cat foo.spec
Name:           foo
Version:        
Release:        1%{?dist}
Summary:        

Group:          
License:        
URL:            
Source0:        
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  
Requires:       

%description


%prep
%setup -q


%build
%configure
make %{?_smp_mflags}


%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT


%clean
rm -rf $RPM_BUILD_ROOT


%files
%defattr(-,root,root,-)
%doc



%changelog

/etc/rpmdevtools/にテンプレートをおくことができ,それを用いることである程度ソフトウェアに特化したspecファイルの雛形を用意することができる.

$ rpm -ql rpmdevtools|grep /etc/rpmdevtools/spectemplate
/etc/rpmdevtools/spectemplate-R.spec
/etc/rpmdevtools/spectemplate-dummy.spec
/etc/rpmdevtools/spectemplate-lib.spec
/etc/rpmdevtools/spectemplate-minimal.spec
/etc/rpmdevtools/spectemplate-ocaml.spec
/etc/rpmdevtools/spectemplate-perl.spec
/etc/rpmdevtools/spectemplate-php-pear.spec
/etc/rpmdevtools/spectemplate-python.spec
/etc/rpmdevtools/spectemplate-ruby.spec

テンプレートを使うには-t(--type)でテンプレート名を指定するか,ファイル名の接頭辞をテンプレートに沿ったものにする. たとえば「rpmdev-newspec php-pear-foo」とコマンドを実行することでspectemplate-php-pear.specをテンプレートにすることができる.

$ rpmdev-newspec php-pear-foo
Skeleton specfile (php-pear) has been created to "php-pear-foo.spec".

/usr/bin/rpmdev-packager - RPMのパッケージ作成者情報を出力する

RPMのパッケージ作成者情報を出力する. 実際にはいくつかの条件に一致した情報を出力する. 一番シンプルなのが環境変数RPM_PACKAGERに出力したい値(通常「[FIRST_NAME] [LAST_NAME] <[EMAIL]>」)を設定する,

使い方

rpmdev-packager guesses rpm packager info from various sources:

  $RPM_PACKAGER   from environment (full name + email address)
  %packager       from rpm configuration (full name + email address)
  /etc/passwd     gecos (full name)
  certificates    ~/.fedora.cert (email address)
  $MAILTO         from environment (email address)

Usage: rpmdev-packager [option]...

Options:
  -h, --help      Show help message and exit.
  -v, --version   Print version information and exit.

Report bugs at <https://bugzilla.redhat.com/>, component rpmdevtools,
or at <https://fedorahosted.org/rpmdevtools/>.

簡単な説明

$ rpmdev-packager
$ RPM_PACKAGER="Tadashi Jokagi <elf@elf.no-ip.org>"
$ export RPM_PACKAGER
$ rpmdev-packager 
Tadashi Jokagi <elf@elf.no-ip.org>

/usr/bin/rpmdev-rmdevelrpms

/usr/bin/rpmdev-setuptree - 一般ユーザーでのRPM構築環境の簡易的に構築

一般ユーザーでのRPM構築環境を簡易的に構築する. 既に.rpmmacrosがある場合はその値を活かして,存在しない,あるいは_topdirの指定がない場合は$HOME/rpmbuildをRPM構築環境のベースディレクトリーと見立てて.rpmmacrosを設定し,RPM構築に必要なディレクトリーを作成する.

/usr/bin/rpmdev-sha1

/usr/bin/rpmdev-sha224

/usr/bin/rpmdev-sha256

/usr/bin/rpmdev-sha384

/usr/bin/rpmdev-sha512

/usr/bin/rpmdev-sum

/usr/bin/rpmdev-vercmp

/usr/bin/rpmdev-wipetree

/usr/bin/rpmelfsym

/usr/bin/rpmfile - RPMファイルに含まれるコンテンツの情報を出力する

RPMファイルに含まれるコンテンツ(ファイル,ディレクトリーなど)のパーミッションや種類を表示する.

使い方

Usage:
    rpmfile [-h] [*FILE*...] [*DIR*...]

RPMファイル,あるいはRPMファイルを含むディレクトリーを指定する.

  • hのオプションで使い方のメッセージ(上記メッセージ)を出力する.

出力情報

情報はTSV形式と同様にタブ区切りで,3ブロックに分かれており,下記のとおり.

列数意味
1絶対パス
26桁のパーミッション
3コンテンツの情報

3列目の意味は下記のとおり(代表的なもの).

表記意味
directoryディレクトリー
HTML document textHTML形式のテキスト
PNG image, XXX x YYY, BBB-bit colormap, non-interlacedXXX×YYYの大きさ,BBBビット色,非インターフェースのPNG画像
GIF image data, version 89a, XXX x YYYXXX×YYYの大きさ,一般的なGIF画像
UTF-8 Unicode English textUTF-8 の英語テキスト
ASCII English textASCIIで構成された英語テキスト
ASCII English text, with overstriking
gzip compressed data, from Unix, max compressiongzip圧縮されたファイル
symbolic link to `foo`fooへのシンボリック リンク

実際は内部的にコマンドfileを利用しているため,詳細はそちらを調査するとよい.

/usr/bin/rpminfo

/usr/bin/rpmls - RPMが保持するファイルの一覧を出力する

指定したRPMファイルやパッケージに含まれるファイルの一覧をls風に出力する.オプションなしでターゲット名だけを指定する方法と,オプション-lをつける場合がある.前者はパーミッション情報とパス名が出力され,後者はさらにオーナー ユーザー名とオーナー グループ名が併記される.いうなればちょっとだけ高機能風なrpm -qlといえる.

使い方

rpm -ql setupの実行例(参考)
rpm -ql setup
/etc/aliases
/etc/bashrc
/etc/csh.cshrc
/etc/csh.login
/etc/environment
/etc/exports
/etc/filesystems
/etc/fstab
/etc/group
/etc/gshadow
rpmls setup
$ rpmls setup
-rw-r--r--  /etc/aliases
-rw-r--r--  /etc/bashrc
-rw-r--r--  /etc/csh.cshrc
-rw-r--r--  /etc/csh.login
-rw-r--r--  /etc/environment
-rw-r--r--  /etc/exports
-rw-r--r--  /etc/filesystems
-rw-r--r--  /etc/fstab
-rw-r--r--  /etc/group
----------  /etc/gshadow
rpm -qlp perl-NKF-2.03-1.i386.rpm の実行例(参考)
$ rpm -qlp perl-NKF-2.03-1.i386.rpm 
/usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/NKF.pm
/usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/auto
/usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/auto/NKF
/usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/auto/NKF/NKF.so
/usr/share/doc/perl-NKF-2.03
/usr/share/doc/perl-NKF-2.03/nkf.copyright
/usr/share/doc/perl-NKF-2.03/nkf.doc
/usr/share/man/man3/NKF.3pm.gz
rpmls perl-NKF-2.03-1.i386.rpm の実行例
$ rpmls perl-NKF-2.03-1.i386.rpm 
-r--r--r--  /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/NKF.pm
drwxr-xr-x  /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/auto
drwxr-xr-x  /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/auto/NKF
-r-xr-xr-x  /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/auto/NKF/NKF.so
drwxr-xr-x  /usr/share/doc/perl-NKF-2.03
-rw-r--r--  /usr/share/doc/perl-NKF-2.03/nkf.copyright
-rw-r--r--  /usr/share/doc/perl-NKF-2.03/nkf.doc
-r--r--r--  /usr/share/man/man3/NKF.3pm.gz

/usr/bin/rpmpeek

/usr/bin/rpmsodiff

/usr/bin/rpmsoname

/usr/bin/spectool

関連,参照リンク

当Wiki内

外部



*1 ただし閑古鳥
リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
最終修正日時: Tue, 10 Aug 2010 02:11:22 JST (651d)
文字数(HTML): 12036
文字数(Wiki): 11891
人気ブログランキング - よくきた wiki