Linux rpmbuild设置错误的文件所有权表示root:root(错误的所有者/组生成:用户)
我正在使用RPM在目标机器上创建一组文件和目录,每个文件和目录都有一组不同的file/dir权限。我已经创建了一个规范文件,它构建了这个RPM。 等级库文件如下所示:Linux rpmbuild设置错误的文件所有权表示root:root(错误的所有者/组生成:用户),linux,installation,rpm,rpmbuild,Linux,Installation,Rpm,Rpmbuild,我正在使用RPM在目标机器上创建一组文件和目录,每个文件和目录都有一组不同的file/dir权限。我已经创建了一个规范文件,它构建了这个RPM。 等级库文件如下所示: Name: testMultipleFiles Version: 1.0 Release: 2 Summary: Demo how to package multiple files Group: DCCA Deployment Licens
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)
这意味着,它将用户和组设置为root:root,而不是insite1:insite1
这是完整的构建日志
build@SLES11SP4-185:~/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
sf@suse.de: 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
build@SLES11SP4-185:~/rpmbuild/SPECS>rpmbuild-bb testmulti.spec
正在执行(%prep):/bin/sh-e/var/tmp/rpm-tmp.14760
+乌马斯克022
+cd/home/build/rpmbuild/build
+cd/home/build/rpmbuild/build
+rm-rf测试多文件-1.0
+/usr/bin/gzip-dc/home/build/rpmbuild/SOURCES/testMultipleFiles.tar.gz
+焦油-xf-
+状态=0
+“['0-ne 0']”
+cd TestMultipleFile-1.0
++/usr/bin/id-u
+ '[' 1001 = 0 ']'
++/usr/bin/id-u
+ '[' 1001 = 0 ']'
+/bin/chmod-rfa+rX、u+w、g-w、o-w。
+出口0
正在执行(%build):/bin/sh-e/var/tmp/rpm-tmp.14760
+乌马斯克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 TestMultipleFile-1.0
+出口0
正在执行(%install):/bin/sh-e/var/tmp/rpm-tmp.14760
+乌马斯克022
+cd/home/build/rpmbuild/build
+cd TestMultipleFile-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
+安装file1.sh/var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir1
+安装file2.sh/var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir2
+安装file3.sh/var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir3
+安装file4.sh/var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir4
+安装file5.sh/var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir5
+安装file6.sh/var/tmp/testMultipleFiles-1.0-build/opt/insiteone/dir6
+/usr/lib/rpm/brp-lib64-linux
sf@suse.de:如果您发现此脚本有问题,请给我留言
+RPM\u BUILD\u ROOT=/var/tmp/testMultipleFiles-1.0-BUILD
+导出RPM\u生成\u根目录
+测试-x/usr/sbin/Check-a1001=0-o-x/usr/sbin/Check-a'!'-z/var/tmp/testMultipleFiles-1.0-build
+回显“我呼叫/usr/sbin/Check…”
我打电话/usr/sbin/Check。。。
+/usr/sbin/Check
检查权限和所有权-使用权限文件
/tmp/Check.perms.gv6tJD
将/var/tmp/testMultipleFiles-1.0-build/设置为root:root 0755。(错误的所有者/组生成:用户)
将/var/tmp/testMultipleFiles-1.0-build/opt设置为root:root 0755。(错误的所有者/组生成:用户)
+/usr/lib/rpm/brp compress
+/usr/lib/rpm/brp符号链接
处理文件:testMultipleFiles-1.0-2
查找提供:/usr/lib/rpm/find提供testmultiplefile
查找需要:/usr/lib/rpm/find需要TestMultipleFile
查找补充:/usr/lib/rpm/find Supplements testmultiplefile
需要(interp):/bin/sh/bin/sh
需要(rpmlib):rpmlib(PayloadFilesHavePrefix)当您放入%文件时:
/opt/insiteone/dir1/file1.sh
这意味着在rpm中只获取file1.sh
。而defattr仅适用于该文件。当然,该文件附带了一些路径。因此,如果路径不存在,则创建该路径。使用当前用户(通常为root用户)
所以你要么说:
%files
/opt/insiteone/dir1
它将接受dir1和其中的所有内容(递归)。
或:
顺便说一句,正确的软件包应该检查用户和组“insite1”是否存在。当您放入%文件时,可以使用此%pre代码段执行此操作:
/opt/insiteone/dir1/file1.sh
这意味着在rpm中只获取file1.sh
。而defattr仅适用于该文件。当然,该文件附带了一些路径。因此,如果路径不存在,则创建该路径。使用当前用户(通常为root用户)
所以你要么说:
%files
/opt/insiteone/dir1
它将接受dir1和其中的所有内容(递归)。
或:
顺便说一句,正确的软件包应该检查用户和组“insite1”是否存在。您可以使用这个%pre代码段来实现这一点,感谢它部分解决了问题,dir1
、dir2
、和dir3
现在与insite1:insite1
一起安装,但在构建相同的错误时仍然出现:设置/var/tmp/testMultipleFiles-1.0-build/到root:root 0755。(错误的所有者/组构建:用户)
感谢这部分解决了问题,dir1
、dir2
和dir3
现在安装了insite1:insite1
,但在构建时仍然会出现相同的错误:将/var/tmp/testMultipleFiles-1.0-build/设置为root:root 0755。(错误的所有者/组生成:用户)