Я создаю кучу файлов и каталогов на целевой машине с использованием RPM, каждый из которых имеет другой набор разрешений файла/dir. Я создал файл спецификации, который создает этот RPM. Файл спецификации выглядит следующим образом:rpmbuild установка неправильного права собственности файла root: root (неправильный владелец/группа: пользователи)
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 как пользователь и группа.
Вот полный журнал строительства.
[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
Обратите внимание: The insite1: insite1 пользователя и группы будут присутствовать в целевой машине заранее, установлен RPM, и это не то, что присутствует в RPM сборки машины, так как нет никакой причины для меня создайте их.
Дополнение я заметил, он идет вперед и устанавливает все файлы и каталоги, мелкие с соответствующими разрешениями, в целевой машине, которая имеет имя пользователя и группу, присутствующие (insite1: insite1) однако каталоги dir1, dir2 и dir3 все еще заданы как root: root, но 0755, я ожидал, что он будет insite1: insite1 на основе %defattr
set. Разве нет способа установить права доступа по умолчанию?
Спасибо, что частично решает проблему: 'dir1',' dir2' и 'dir3' теперь устанавливаются с' insite1: insite1', но при создании такой же ошибки приходит: ' установка /var/tmp/testMultipleFiles-1.0-build/ для root: root 0755. (неправильная сборка/группа: пользователи) ' – kingsmasher1