2016-05-30 10 views
0

私はRPMを使ってターゲットマシンにファイルとディレクトリの束を作ります。私はこのRPMを構築するspecファイルを作成しました。 specファイルには、以下のようになります。rpmbuildは間違ったファイルの所有権を設定しています。root:root(間違った所有者/グループビルド:users)

Name:   testMultipleFiles 
Version:   1.0 
Release:   2 
Summary:   Demo how to package multiple files 
Group:   DCCA Deployment 
License:   GPLv2 
Source:   testMultipleFiles.tar.gz 
BuildRoot:  %{_tmppath}/%{name}-%{version}-build 
AutoReqProv: on 

%description 

Authors: 
-------- 
    Name Raj Kumar Sanpui 
%prep 
%setup -q 

%build 

%install 
mkdir -p $RPM_BUILD_ROOT/opt/insiteone/dir1 
mkdir -p $RPM_BUILD_ROOT/opt/insiteone/dir2 
mkdir -p $RPM_BUILD_ROOT/opt/insiteone/dir3 
mkdir -p $RPM_BUILD_ROOT/opt/insiteone/dir4 

mkdir -p $RPM_BUILD_ROOT/opt/insiteone/dir5 
mkdir -p $RPM_BUILD_ROOT/opt/insiteone/dir6 
mkdir -p $RPM_BUILD_ROOT/opt/insiteone/dir7 

mkdir -p $RPM_BUILD_ROOT/opt/insiteone/dir8 
mkdir -p $RPM_BUILD_ROOT/opt/insiteone/dir9 
mkdir -p $RPM_BUILD_ROOT/opt/insiteone/dir10 

install file1.sh $RPM_BUILD_ROOT/opt/insiteone/dir1 
install file2.sh $RPM_BUILD_ROOT/opt/insiteone/dir2 
install file3.sh $RPM_BUILD_ROOT/opt/insiteone/dir3 
install file4.sh $RPM_BUILD_ROOT/opt/insiteone/dir4 

install file5.sh $RPM_BUILD_ROOT/opt/insiteone/dir5 
install file6.sh $RPM_BUILD_ROOT/opt/insiteone/dir6 


%clean 
rm -rf $RPM_BUILD_ROOT 

%post 

%postun 


%files 
%defattr(644,insite1,insite1,0755) 
/opt/insiteone/dir1/file1.sh 
/opt/insiteone/dir2/file2.sh 
/opt/insiteone/dir3/file3.sh 

%attr(644,insite1,insite1)/opt/insiteone/dir4/file4.sh 
%attr(644,insite1,insite1)/opt/insiteone/dir5/file5.sh 
%attr(644,insite1,insite1)/opt/insiteone/dir6/file6.sh 

%dir %attr(777,insite1,insite1)/opt/insiteone/dir4 
%dir %attr(700,insite1,insite1)/opt/insiteone/dir5 
%dir %attr(644,insite1,insite1)/opt/insiteone/dir6 
%dir %attr(640,insite1,insite1)/opt/insiteone/dir7 
%dir %attr(600,insite1,insite1)/opt/insiteone/dir8 
%dir %attr(744,insite1,insite1)/opt/insiteone/dir9 
%dir %attr(644,insite1,insite1)/opt/insiteone/dir10 

をしかし、私はこのRPMをビルドするとき、そこには誤りがないとビルドが成功しても、ビルドログは言う:

意味
Checking permissions and ownerships - using the permissions files 
     /tmp/Check.perms.gv6tJD 
setting /var/tmp/testMultipleFiles-1.0-build/ to root:root 0755. (wrong owner/group build:users) 
setting /var/tmp/testMultipleFiles-1.0-build/opt to root:root 0755. (wrong owner/group build:users) 

、それが設定されますユーザーとグループとしてinsite1:insite1の代わりにroot:rootにします。

完全なビルドログです。

[email protected]:~/rpmbuild/SPECS> rpmbuild -bb testmulti.spec 
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.14760 
+ umask 022 
+ cd /home/build/rpmbuild/BUILD 
+ cd /home/build/rpmbuild/BUILD 
+ rm -rf testMultipleFiles-1.0 
+ /usr/bin/gzip -dc /home/build/rpmbuild/SOURCES/testMultipleFiles.tar.gz 
+ tar -xf - 
+ STATUS=0 
+ '[' 0 -ne 0 ']' 
+ cd testMultipleFiles-1.0 
++ /usr/bin/id -u 
+ '[' 1001 = 0 ']' 
++ /usr/bin/id -u 
+ '[' 1001 = 0 ']' 
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w . 
+ exit 0 
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.14760 
+ umask 022 
+ cd /home/build/rpmbuild/BUILD 
+ /bin/rm -rf /var/tmp/testMultipleFiles-1.0-build 
++ dirname /var/tmp/testMultipleFiles-1.0-build 
+ /bin/mkdir -p /var/tmp 
+ /bin/mkdir /var/tmp/testMultipleFiles-1.0-build 
+ cd testMultipleFiles-1.0 
+ exit 0 
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.14760 
+ umask 022 
+ cd /home/build/rpmbuild/BUILD 
+ cd testMultipleFiles-1.0 
+ mkdir -p /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir1 
+ mkdir -p /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir2 
+ mkdir -p /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir3 
+ mkdir -p /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir4 
+ mkdir -p /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir5 
+ mkdir -p /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir6 
+ mkdir -p /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir7 
+ mkdir -p /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir8 
+ mkdir -p /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir9 
+ mkdir -p /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir10 
+ install file1.sh /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir1 
+ install file2.sh /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir2 
+ install file3.sh /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir3 
+ install file4.sh /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir4 
+ install file5.sh /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir5 
+ install file6.sh /var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir6 
+ /usr/lib/rpm/brp-lib64-linux 
[email protected]: if you find problems with this script, drop me a note 
+ RPM_BUILD_ROOT=/var/tmp/testMultipleFiles-1.0-build 
+ export RPM_BUILD_ROOT 
+ test -x /usr/sbin/Check -a 1001 = 0 -o -x /usr/sbin/Check -a '!' -z /var/tmp/testMultipleFiles-1.0-build 
+ echo 'I call /usr/sbin/Check...' 
I call /usr/sbin/Check... 
+ /usr/sbin/Check 
Checking permissions and ownerships - using the permissions files 
     /tmp/Check.perms.gv6tJD 
setting /var/tmp/testMultipleFiles-1.0-build/ to root:root 0755. (wrong owner/group build:users) 
setting /var/tmp/testMultipleFiles-1.0-build/opt to root:root 0755. (wrong owner/group build:users) 
+ /usr/lib/rpm/brp-compress 
+ /usr/lib/rpm/brp-symlink 
Processing files: testMultipleFiles-1.0-2 
Finding Provides: /usr/lib/rpm/find-provides testMultipleFiles 
Finding Requires: /usr/lib/rpm/find-requires testMultipleFiles 
Finding Supplements: /usr/lib/rpm/find-supplements testMultipleFiles 
Requires(interp): /bin/sh /bin/sh 
Requires(rpmlib): rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 
Requires(post): /bin/sh 
Requires(postun): /bin/sh 
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/testMultipleFiles-1.0-build 
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/testMultipleFiles-1.0-build 
Wrote: /home/build/rpmbuild/RPMS/x86_64/testMultipleFiles-1.0-2.x86_64.rpm 
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.14760 
+ umask 022 
+ cd /home/build/rpmbuild/BUILD 
+ cd testMultipleFiles-1.0 
+ rm -rf /var/tmp/testMultipleFiles-1.0-build 
+ exit 0 

ご注意:insite1ユーザーおよびグループが事前にターゲットマシンに存在するであろう、RPMがインストールされている、との私のための理由がないとして、それは、RPMのビルドマシンに存在するものではないのです。 insite1それらを作成します。

追加:私はそれがユーザーとグループの存在(insite1:insite1)がターゲットマシンに、適切な権限を持つ微すべてのファイルとディレクトリを強行し、インストールし、観察し、しかし、ディレクトリDIR1、DIR2、及びをdir3はまだrootとして設定されています:rootしかし0755、私はそれがinsite1であることを期待していました:insite1は%defattrに基づいています。 デフォルトのディレクトリ権限を設定する方法はありませんか?

答えて

2

あなたは%filesに入れる:

/opt/insiteone/dir1/file1.sh 

回転数にのみfile1.shを得ることを意味します。 defattrはそのファイルだけに適用されます。もちろんファイルにはいくつかのパスがあります。したがって、パスが存在しない場合は作成されます。現在のユーザー(通常root)。

だから、どちらかと言う必要があります。

%files 
/opt/insiteone/dir1 

(再帰的に)その中にDIR1とすべてを取るだろうどの。 または:ユーザーとグループ「insite1が」存在する場合

%files 
%dir /opt/insiteone/dir1 
/opt/insiteone/dir1/file1.sh 

ところで正しいパッケージを確認する必要があります。これは%preのコードを使って行うことができますhttps://fedoraproject.org/wiki/Packaging:UsersAndGroups?rd=Packaging/UsersAndGroups#Dynamic_allocation

+0

'dir1'、' dir2'、 'dir3'は' insite1:insite1'でインストールされましたが、 /var/tmp/testMultipleFiles-1.0-build/をrootに設定する:root 0755.(間違ったオーナー/グループビルド:users) ' – kingsmasher1

関連する問題