
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ファイルのリリース番号をあげる.
通常は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ファイルを含むディレクトリーを指定する.
出力情報 †情報はTSV形式と同様にタブ区切りで,3ブロックに分かれており,下記のとおり.
3列目の意味は下記のとおり(代表的なもの).
実際は内部的にコマンド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内 †外部 † |