バッチ、confファイル配布用単純なrpmの簡単な作り方
バッチ、confファイル配布用単純なrpmの簡単な作り方
概要
CentOS7でbatchやconfファイルの配布専用なrpmを作成する。
ansibleやitamaeでplaybookやrecipeを書けばいいが、それらを導入していない環境で、ownrやパーミッションやパスを正確伝えるのが面倒なので、単純なrpmにしてみる。
本編
前準備
rpm作成ユーザーとテストユーザーの作成
rootで前準備
[root@centos7-admin ~]# groupadd rpmbuilder -g 30001
[root@centos7-admin ~]# groupadd rpmtest -g 30002
[root@centos7-admin ~]# useradd rpmbuilder -u 30001 -g 30001 -s /bin/bash -d /home/rpmbuilder
[root@centos7-admin ~]# useradd rpmtest -u 30002 -g 30002 -s /bin/bash -d /home/rpmtest
rootでも作業ができるが、rpm化の際にrpmにしているつもりで、そのままインストールするのを防ぐために、rpbuild専用ユーザーを作ってそれで作業する
rpm作業前準備
rpmbuilderユーザーで継続
[root@centos7-admin ~]# su - rpmbuilder
[root@centos7-admin ~]# mkdir -p src_rpm/my_test
[root@centos7-admin ~]# mkdir -p rpmbuild/SRPMS
[root@centos7-admin ~]# mkdir -p rpmbuild/SPECS
[root@centos7-admin ~]# mkdir -p rpmbuild/SOURCES
[root@centos7-admin ~]# mkdir -p rpmbuild/RPMS
[root@centos7-admin ~]# mkdir -p rpmbuild/BUILDROOT
[root@centos7-admin ~]# mkdir -p rpmbuild/BUILD
rpm基作業用src_rpm/my_testと rpm化作業用 rpmbuild以下を作成する
rpm化用ファイルとspecファイルの準備
cd src_rpm/my_test
vi test.txt
vi test.sh
vi my_test.spec
rpm化するtest.txtとtest.shとrpm作業に必要なspecファイルを作成する
test
test
test
#!/bin/bash
date
Summary: RPM build test
Name: myrpm_test
Version: 1.0.0
Release: 1%{?dist}
License: Free
Source1: test.txt
Source2: test.sh
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
BuildArch: noarch
%description
RPM build test
%prep
[ -d $RPM_BUILD_ROOT ] && rm -rf $RPM_BUILD_ROOT;
#%setup
#%build
%install
mkdir -p ${RPM_BUILD_ROOT}/home/rpmbuilder/test
mkdir -p ${RPM_BUILD_ROOT}/org/my_rpm
install -m 611 %{SOURCE1} ${RPM_BUILD_ROOT}/home/rpmbuilder/test/
install -m 755 %{SOURCE2} ${RPM_BUILD_ROOT}/org/my_rpm/
%clean
[ -d $RPM_BUILD_ROOT ] && rm -rf $RPM_BUILD_ROOT;
#%postun
%files
%defattr(611,rpmtest,rpmtest)
/home/rpmbuilder/test
/home/rpmbuilder/test/test.txt
%defattr(755,root,root)
/org/my_rpm/test.sh
%changelog
* Sun Oct 8 2017 Hirotaka Tajiri <[email protected]> 1-0-0
- first build
test.txtとtest.shはほぼ意味なしtest用の単純なファイル、specに関しては、今回はzip化無し、build無しの既存のファイルをrpm化するだけの全く単縦なrpm化なので#%setup、#%build、#%postunとしてsetupやbuildやpostunは使わず、ほぼ、設定用の部分とdescriptionとchangelog以外は、installとfilesしか使わない。
ちなみに、prepとcleanはお約束なので除外
今回の検証では、全く新設のdirでの配布と既存のアカウントに追加dirを作成しても既存のdirには影響がないことを検証する。
/org/my_rpm これが新設
/home/rpmbuilder/test これが既存に影響なしの検証
rpm化作業前準備
[rpmbuilder@centos7-admin rpmbuild]$ rm -rf ~/rpmbuild/SOURCES/*
[rpmbuilder@centos7-admin rpmbuild]$ ln -s ~/src_rpm/my_test/* ~/rpmbuild/SOURCES/
[rpmbuilder@centos7-admin rpmbuild]$ ln -s ~/src_rpm/my_test/test.spec ~/rpmbuild/SPECS/
必要ファイルをSOURCESにシンボリックリンクする、specファイルをSOURCESへのリンクは不要だが、リンクしておいても害はないのと除外するのが面倒なのでまとめてリンクする、ただ、その作業と別にspecファイルをSPECSにリンンクする
rpm化作本作業
[rpmbuilder@centos7-admin ~]$ cd ~/rpmbuild/SPECS/
[rpmbuilder@centos7-admin SPECS]$ rpmbuild -bb test.spec
rpm作業後、テスト(インストール)
rootでテスト
[root@centos7-admin ~]# cd /home/rpmbuilder/rpmbuild/RPMS/noarch/
[root@centos7-admin noarch]# rpm -ivh myrpm_test-1.0.0-1.el7.noarch.rpm
ls -latR /org/
/org/:
合計 4
drwxr-xr-x 2 root root 20 10月 9 20:30 my_rpm
drwxr-xr-x 3 root root 19 10月 9 20:29 .
dr-xr-xr-x. 18 root root 4096 10月 9 20:29 ..
/org/my_rpm:
合計 4
drwxr-xr-x 2 root root 20 10月 9 20:30 .
-rwxr-xr-x 1 root root 16 10月 9 20:30 test.sh
drwxr-xr-x 3 root root 19 10月 9 20:29 ..
[root@centos7-admin noarch]# ls -latrR /home/rpmbuilder/
/home/rpmbuilder/:
合計 16
-rw-r--r-- 1 rpmbuilder rpmbuilder 231 9月 7 01:25 .bashrc
-rw-r--r-- 1 rpmbuilder rpmbuilder 193 9月 7 01:25 .bash_profile
-rw-r--r-- 1 rpmbuilder rpmbuilder 18 9月 7 01:25 .bash_logout
drwxr-xr-x. 8 root root 88 10月 9 20:08 ..
drwxrwxr-x 3 rpmbuilder rpmbuilder 20 10月 9 20:12 src_rpm
drwxr-xr-x 8 rpmbuilder rpmbuilder 83 10月 9 20:17 rpmbuild
-rw------- 1 rpmbuilder rpmbuilder 3146 10月 9 20:30 .bash_history
drwx------ 5 rpmbuilder rpmbuilder 119 10月 9 20:30 .
drw---x--x 2 rpmtest rpmtest 21 10月 9 20:30 test
/home/rpmbuilder/src_rpm:
合計 0
drwxrwxr-x 3 rpmbuilder rpmbuilder 20 10月 9 20:12 .
drwxrwxr-x 2 rpmbuilder rpmbuilder 51 10月 9 20:30 my_test
drwx------ 5 rpmbuilder rpmbuilder 119 10月 9 20:30 ..
/home/rpmbuilder/src_rpm/my_test:
合計 12
-rw-rw-r-- 1 rpmbuilder rpmbuilder 16 10月 8 13:01 test.sh
-rw-rw-r-- 1 rpmbuilder rpmbuilder 70 10月 8 13:04 test.txt
drwxrwxr-x 3 rpmbuilder rpmbuilder 20 10月 9 20:12 ..
-rw-rw-r-- 1 rpmbuilder rpmbuilder 820 10月 9 20:30 test.spec
drwxrwxr-x 2 rpmbuilder rpmbuilder 51 10月 9 20:30 .
/home/rpmbuilder/rpmbuild:
合計 0
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 10月 8 12:55 BUILD
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 10月 8 13:01 SRPMS
drwxr-xr-x 8 rpmbuilder rpmbuilder 83 10月 9 20:17 .
drwxr-xr-x 2 rpmbuilder rpmbuilder 51 10月 9 20:18 SOURCES
drwxr-xr-x 3 rpmbuilder rpmbuilder 19 10月 9 20:28 RPMS
drwxr-xr-x 2 rpmbuilder rpmbuilder 22 10月 9 20:30 SPECS
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 10月 9 20:30 BUILDROOT
drwx------ 5 rpmbuilder rpmbuilder 119 10月 9 20:30 ..
/home/rpmbuilder/rpmbuild/BUILD:
合計 0
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 10月 8 12:55 .
drwxr-xr-x 8 rpmbuilder rpmbuilder 83 10月 9 20:17 ..
/home/rpmbuilder/rpmbuild/SRPMS:
合計 0
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 10月 8 13:01 .
drwxr-xr-x 8 rpmbuilder rpmbuilder 83 10月 9 20:17 ..
/home/rpmbuilder/rpmbuild/SOURCES:
合計 0
drwxr-xr-x 8 rpmbuilder rpmbuilder 83 10月 9 20:17 ..
lrwxrwxrwx 1 rpmbuilder rpmbuilder 41 10月 9 20:18 test.txt -> /home/rpmbuilder/src_rpm/my_test/test.txt
lrwxrwxrwx 1 rpmbuilder rpmbuilder 42 10月 9 20:18 test.spec -> /home/rpmbuilder/src_rpm/my_test/test.spec
lrwxrwxrwx 1 rpmbuilder rpmbuilder 40 10月 9 20:18 test.sh -> /home/rpmbuilder/src_rpm/my_test/test.sh
drwxr-xr-x 2 rpmbuilder rpmbuilder 51 10月 9 20:18 .
/home/rpmbuilder/rpmbuild/RPMS:
合計 0
drwxr-xr-x 8 rpmbuilder rpmbuilder 83 10月 9 20:17 ..
drwxr-xr-x 3 rpmbuilder rpmbuilder 19 10月 9 20:28 .
drwxr-xr-x 2 rpmbuilder rpmbuilder 46 10月 9 20:30 noarch
/home/rpmbuilder/rpmbuild/RPMS/noarch:
合計 4
drwxr-xr-x 3 rpmbuilder rpmbuilder 19 10月 9 20:28 ..
-rw-rw-r-- 1 rpmbuilder rpmbuilder 2480 10月 9 20:30 myrpm_test-1.0.0-1.el7.noarch.rpm
drwxr-xr-x 2 rpmbuilder rpmbuilder 46 10月 9 20:30 .
/home/rpmbuilder/rpmbuild/SPECS:
合計 0
drwxr-xr-x 8 rpmbuilder rpmbuilder 83 10月 9 20:17 ..
lrwxrwxrwx 1 rpmbuilder rpmbuilder 42 10月 9 20:18 test.spec -> /home/rpmbuilder/src_rpm/my_test/test.spec
drwxr-xr-x 2 rpmbuilder rpmbuilder 22 10月 9 20:30 .
/home/rpmbuilder/rpmbuild/BUILDROOT:
合計 0
drwxr-xr-x 8 rpmbuilder rpmbuilder 83 10月 9 20:17 ..
drwxr-xr-x 2 rpmbuilder rpmbuilder 6 10月 9 20:30 .
/home/rpmbuilder/test:
合計 4
-rw---x--x 1 rpmtest rpmtest 70 10月 9 20:30 test.txt
drwx------ 5 rpmbuilder rpmbuilder 119 10月 9 20:30 ..
drw---x--x 2 rpmtest rpmtest 21 10月 9 20:30 .
新規dirを作成なら、深い階層でもdir ごと設置されている、また既存dirに対して追加設置に関しても、既存に関してなんら影響がなく、目的のファイルのみ設置できていることを確認できた
Author And Source
この問題について(バッチ、confファイル配布用単純なrpmの簡単な作り方), 我々は、より多くの情報をここで見つけました https://qiita.com/hirotaka-tajiri/items/9f5b06d9806d5638050f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .