telnet
|
name
|
ソフトウェアの名前
|
0.17
|
version
|
ソフトウェアバージョン |
48
|
release
|
リリース、ソフトウェアの内容に変更がなく、ビルド方法が変わる場合に増やすのが一般的
|
el6
|
distribution
|
ディストリビューションを示す番号。el5 => RedHat Enterprize Linux5の意らしい
|
x86_64
|
arch
|
対応するCPU/命令セットアーキテクチャ、i386、x86_64、noarch
|
useradd dev
■必要なツールのインストール
yum install rpm-build yum-utils yum install rpmdevtools
yum groupinstall 'Development tools'
[dev@dev01 ~]$ rpmdev-setuptree
[dev@dev01 ~]$ tree
.
└── rpmbuild
├── BUILD
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS
■SRPM用yumリポジトリ作成
[root@dev01 ~]# cat /etc/yum.repos.d/CentOS-SRPM.repo
[os-SRPM]
name=CentOS-6.6 - os SRPM
baseurl=http://vault.centos.org/6.6/os/Source/
[updates-SRPM]
name=CentOS-6.6 - updates SRPM
baseurl=http://vault.centos.org/6.6/updates/Source/
[extras-SRPM]
name=CentOS-6.6 - extras SRPM
baseurl=http://vault.centos.org/6.6/extras/Source/
■RepositoryからのRPM/SRPMのダウンロード/展開方法
[root@dev01 test]# yumdownloader httpd
[root@dev01 test]# rpm2cpio httpd-2.2.15-59.el6.centos.x86_64.rpm | cpio -di
6230 blocks
[root@dev01 test]# ls -l
合計 848
drwxr-xr-x 6 root root 4096 6月 25 02:10 2017 etc
-rw-r--r-- 1 root root 854072 3月 24 00:02 2017 httpd-2.2.15-59.el6.centos.x86_64.rpm
drwxr-xr-x 5 root root 4096 6月 25 02:10 2017 usr
drwxr-xr-x 7 root root 4096 6月 25 02:10 2017 var
[dev@dev01 rpmbuild]$ pwd
/home/dev/rpmbuild
//admintoolsという名前のパッケージ名ディレクトリ以下に3つお手製スクリプトファイルを準備した。
[dev@dev01 rpmbuild]$ ls -l SOURCES/
total 4
drwxrwxr-x 2 dev dev 4096 Feb 7 21:55 admintools
[dev@dev01 rpmbuild]$ ls -l SOURCES/admintools/
total 12
-rwx------ 1 dev dev 1783 Nov 7 21:48 change_ip
-rwx------ 1 dev dev 154 Feb 7 21:51 getvm
-rwx------ 1 dev dev 662 Nov 7 21:41 post_ip
//圧縮アーカイブする。
[dev@dev01 SOURCES]$ tar cvfz admintools-1.00.el6.noarch.tar.gz admintools
admintools/
admintools/change_ip
admintools/getvm
admintools/post_ip
[dev@dev01 SOURCES]$ ll
total 8
drwxrwxr-x 2 dev dev 4096 Feb 7 21:55 admintools
-rw-rw-r-- 1 dev dev 1338 Feb 7 22:08 admintools-1.00.el6.noarch.tar.gz
//圧縮元のファイル削除
[dev@dev01 SOURCES]$ rm -fr admintools
[dev@dev01 SOURCES]$ ls -l
total 4
-rw-rw-r-- 1 dev dev 1338 Feb 7 22:08 admintools-1.00.el6.noarch.tar.gz
[dev@dev01 test]$ rpm --eval "%_tmppath"
/var/tmp
[dev@dev01 test]$ rpm --eval "%_bindir"
/usr/bin
※.specでファイルを作成しはじめると、勝手にテンプレ的なファイルが作成される。
[dev@dev01 test]$ pwd
/home/dev/test
[dev@dev01 test]$ ls
[dev@dev01 test]$ vi hoge.spec
サンプル等を参考に自分用のテンプレ的なものを作成しておくと捗りそうです。主要なパラメータは以下のとおり。
パラメータ
|
概要
|
記述サンプル
|
Summary:
|
packageの概要
rpm -qiとかで出てくるあれ。
|
Summary : The client program for the Telnet remote login protocol
|
Name:
|
パッケージ名
|
Name: tree
|
Version:
|
バージョン。数字とピリオドの組み合わせで、通常3桁で指定(例: 3.45)
|
Version: 1.5.3
|
Release:
|
リリース
|
Release: 00
Release: 2%{?dist}
|
License:
|
ライセンス元
|
tagutagu-local
|
%description
|
パッケージの説明
Summaryよりも詳しいパッケージの解説
|
%description
The tree utility recursively displays the contents of directories in a
tree-like format. Tree is basically a UNIX port of the DOS tree
utility.
|
%prep
|
Build作業の前の準備
|
|
%setup
|
%setup実行後(もしくは前)にcdするディレクトリ名を指定する。
省略したときは、 ${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}
|
|
%build
|
ソースのビルドを行うセクション
|
%build
make CFLAGS="$RPM_OPT_FLAGS" "CPPFLAGS=$(getconf LFS_CFLAGS)" %{?_smp_mflags}
|
%install
|
ソースからのインストールを行うセクション
|
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{_bindir}
make BINDIR=$RPM_BUILD_ROOT%{_bindir} \
MANDIR=$RPM_BUILD_ROOT%{_mandir}/man1 \
install
chmod -x $RPM_BUILD_ROOT%{_mandir}/man1/tree.1
|
%check |
ビルドされたバイナリが正常に動作するか検証する手順を行うセクション
|
|
%clean
|
パッケージ作成後の後始末を行うセクション
|
%clean
rm -rf $RPM_BUILD_ROOT
|
%files
|
rpmパッケージに含めるファイル名を列挙するセクション。
|
%files
%files tools
|
%defattr
|
filesに列挙するファイルのパーミッションやuser ID、group IDを設定する。以降に書いたfilesのファイル名に適用される。
|
%defattr(0775, root,root)
/usr/lib/hoge1
/usr/lib/hoge2
/usr/lib/hoge3
|
%attr
|
%filesに列挙するファイルのパーミッションやuser ID、group IDを設定する。 単体指定で使う。
|
%attr(755,root,root) /usr/lib/hoge
|
[dev@dev01 SPECS]$ cat adminhost.spec
Summary: admintools for servers
Name: adminhost
Version: 1.07
Release: 00
Group: System Environment/Tools
License: local
Packager: tagutagu
Vendor: local
Source: adminhost-1.07.el6.noarch.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
Requires: parted
Requires: wget
%description
This tools is setting for lab virtual machine
* add_hostrecord => register record . for add Already created machine mac & hostname & mac.
* change_ip_old => don't use. too old.
* register_spec => Add spec of machine.
* start-hostsetup => configure network & hostname.also run "register_spec".
%prep
rm -rf ${RPM_BUILD_ROOT}
%setup -n adminhost
%build
%install
mkdir -p ${RPM_BUILD_ROOT}/root/bin
install -D -m 700 register_spec ${RPM_BUILD_ROOT}/root/bin/register_spec
install -D -m 700 start-hostsetup ${RPM_BUILD_ROOT}/root/bin/start-hostsetup
install -D -m 700 change_ip_old ${RPM_BUILD_ROOT}/root/bin/change_ip_old
install -D -m 700 add_hostrecord ${RPM_BUILD_ROOT}/root/bin/add_hostrecord
install -D -m 700 getvm ${RPM_BUILD_ROOT}/root/bin/getvm
%clean
rm -rf ${RPM_BUILD_ROOT}
%files
%defattr(0775, root,root)
/root/bin/register_spec
/root/bin/start-hostsetup
/root/bin/change_ip_old
/root/bin/add_hostrecord
/root/bin/getvm
%changelog
* Sat Mar 11 2017 tagutagu - 1.0.6
- add enter.
* Sat Mar 11 2017 tagutagu - 1.0.6
- fix syntax error.
* Sat Mar 11 2017 tagutagu - 1.0.5
- change logic start-hostsetup.
* Mon Mar 05 2017 INDETAIL - 1.0.0
- First release
* Mon Mar 05 2017 tagutagu - 1.0.2
- add for add old machine record.
* Mon Mar 05 2017 tagutagu - 1.0.3
- add for add old machine record. error output is disabled.
* Mon Mar 05 2017 tagutagu - 1.0.4
- add getvm.
rpmbuild -bbはバイナリのみの意 , -baで詳細な実行結果をデバッグできるので、failする場合に利用する。
http://kazmax.zpp.jp/cmd/r/rpmbuild.8.html
[dev@dev01 rpmbuild]$ tree
.
├── BUILD
├── BUILDROOT
├── RPMS
├── SOURCES
│ └── admintools-1.00.el6.noarch.tar.gz
├── SPECS
│ └── admintools.spec
└── SRPMS
[dev@dev01 rpmbuild]$ rpmbuild -bb SPECS/admintools.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.tvRFsz
+ umask 022
+ cd /home/dev/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ rm -rf /home/dev/rpmbuild/BUILDROOT/admintools-1.00-00.x86_64
+ cd /home/dev/rpmbuild/BUILD
+ rm -rf admintools
+ /bin/tar -xvvf -
+ /usr/bin/gzip -dc /home/dev/rpmbuild/SOURCES/admintools-1.00.el6.noarch.tar.gz
drwxrwxr-x dev/dev 0 2017-02-07 21:55 admintools/
-rwx------ dev/dev 1783 2016-11-07 21:48 admintools/change_ip
-rwx------ dev/dev 154 2017-02-07 21:51 admintools/getvm
-rwx------ dev/dev 662 2016-11-07 21:41 admintools/post_ip
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd admintools
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.hsweBi
+ umask 022
+ cd /home/dev/rpmbuild/BUILD
+ cd admintools
+ LANG=C
+ export LANG
+ unset DISPLAY
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.P83bK1
+ umask 022
+ cd /home/dev/rpmbuild/BUILD
+ '[' /home/dev/rpmbuild/BUILDROOT/admintools-1.00-00.x86_64 '!=' / ']'
+ rm -rf /home/dev/rpmbuild/BUILDROOT/admintools-1.00-00.x86_64
++ dirname /home/dev/rpmbuild/BUILDROOT/admintools-1.00-00.x86_64
+ mkdir -p /home/dev/rpmbuild/BUILDROOT
+ mkdir /home/dev/rpmbuild/BUILDROOT/admintools-1.00-00.x86_64
+ cd admintools
+ LANG=C
+ export LANG
+ unset DISPLAY
+ mkdir -p /home/dev/rpmbuild/BUILDROOT/admintools-1.00-00.x86_64/usr/local/sbin/
+ install -m 755 post_ip /home/dev/rpmbuild/BUILDROOT/admintools-1.00-00.x86_64/usr/local/sbin/
+ install -m 755 change_ip /home/dev/rpmbuild/BUILDROOT/admintools-1.00-00.x86_64/usr/local/sbin/
+ install -m 755 getvm /home/dev/rpmbuild/BUILDROOT/admintools-1.00-00.x86_64/usr/local/sbin/
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id /home/dev/rpmbuild/BUILD/admintools
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Processing files: admintools-1.00-00.x86_64
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: /bin/bash
Processing files: admintools-debuginfo-1.00-00.x86_64
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/dev/rpmbuild/BUILDROOT/admintools-1.00-00.x86_64
Wrote: /home/dev/rpmbuild/RPMS/x86_64/admintools-1.00-00.x86_64.rpm
Wrote: /home/dev/rpmbuild/RPMS/x86_64/admintools-debuginfo-1.00-00.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.OLaYne
+ umask 022
+ cd /home/dev/rpmbuild/BUILD
+ cd admintools
+ rm -rf /home/dev/rpmbuild/BUILDROOT/admintools-1.00-00.x86_64
+ exit 0
実行後にエラーなく終了するとRPMディレクトリ以下にrpm.fileが作成されているのがわかる。
debuginfoの使い方はここがわかりやすい。https://wtnb.mydns.jp/wordpress/archives/3853
//生成されたrpm fileを確認
[dev@dev01 rpmbuild]$ tree
--
├── BUILDROOT
├── RPMS
│ └── x86_64
│ ├── admintools-1.00-00.x86_64.rpm
│ └── admintools-debuginfo-1.00-00.x86_64.rpm
---
// install確認
[dev@dev01 rpmbuild]$ sudo rpm -ivh RPMS/x86_64/admintools-1.00-00.x86_64.rpm
Preparing... ########################################### [100%]
1:admintools ########################################### [100%]
[dev@dev01 rpmbuild]$ sudo rpm -ivh RPMS/x86_64/admintools-debuginfo-1.00-00.x86_64.rpm
Preparing... ########################################### [100%]
1:admintools-debuginfo ########################################### [100%]
[dev@dev01 rpmbuild]$ ll /usr/local/sbin/
total 12
-rwxr--r-- 1 root root 1783 Feb 7 22:47 change_ip
-rwxr--r-- 1 root root 154 Feb 7 22:47 getvm
-rwxr--r-- 1 root root 662 Feb 7 22:47 post_ip
■パッケージの確認
[dev@dev01 rpmbuild]$ rpm -qa | grep admin
admintools-debuginfo-1.00-00.x86_64
admintools-1.00-00.x86_64
[dev@dev01 rpmbuild]$ rpm -qi admintools
Name : admintools Relocations: (not relocatable)
Version : 1.00 Vendor: tagutagu
Release : 00 Build Date: Tue 07 Feb 2017 10:47:47 PM JST
Install Date: Tue 07 Feb 2017 10:51:25 PM JST Build Host: dev01.tagutagu.com
Group : System Environment/Shells Source RPM: admintools-1.00-00.src.rpm
Size : 2599 License: local
Signature : (none)
Packager : tagutagu-dev
Summary : admintools for tagutagu-lab
Description :
This sripts is network-setup of first use for tagutagu_lab_VM.
Copyright © 2021 たぐたぐ.com. All rights reserved.