从源代码在CentOS上创建RPM时与剥离相关的权限错误

从源代码在CentOS上创建RPM时与剥离相关的权限错误,centos,rpm,stripping,Centos,Rpm,Stripping,从现有源代码构建RPM时,我遇到以下错误: /usr/bin/strip:无法复制文件 “/home/vagrant/temp/BUILDROOT/python3-3.4.3-1.el6.x86_64/usr/lib/libpython3.4m.a”; 原因:许可被拒绝 当我查看此文件的权限时,它没有写入权限 -r-xr-xr-x 1流浪流浪者流浪者12823866 5月14日17:33 libpython3.4m.a 我已尝试在%files部分设置权限: %attr(0644,root,roo

从现有源代码构建RPM时,我遇到以下错误:

/usr/bin/strip:无法复制文件 “/home/vagrant/temp/BUILDROOT/python3-3.4.3-1.el6.x86_64/usr/lib/libpython3.4m.a”; 原因:许可被拒绝

当我查看此文件的权限时,它没有写入权限

-r-xr-xr-x 1流浪流浪者流浪者12823866 5月14日17:33 libpython3.4m.a

我已尝试在%files部分设置权限:

%attr(0644,root,root)/usr/lib/libpython3.4m.a

但这没有效果


剥离过程何时发生?在剥离操作发生之前,我如何修复文件以便剥离它

配置脚本创建一个Makefile。该Makefile中包含以下内容:

# Shared libraries must be installed with executable mode on some systems;
# rather than figuring out exactly which, we always give them executable mode.
# Also, making them read-only seems to be a good idea...
INSTALL_SHARED= ${INSTALL} -m 555
我不是汽车制造专家,所以可能有一些调整的选择。但是,我在spec文件的%install部分执行此操作

%install
sed -i 's/INSTALL_SHARED= ${INSTALL} -m 555/INSTALL_SHARED= ${INSTALL} -m 755'/ $RPM_BUILD_DIR/Python-%{version}/Makefile
make install DESTDIR=$RPM_BUILD_ROOT
此外,由于我在构建python,我还需要关闭安装后的rpm brp python字节编译部分。我在fedora邮件列表上找到了这个,这归功于David Malcom@RedHat。以下是-您可以将其放在等级库文件的顶部:

%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')

strip将在编译阶段的某个地方。根据构建方式的不同,这可能需要在底层makefile/build指令级别进行修复,而不是在rpm中进行修复。剥离发生在构建过程中运行的任何地方。可能在 %Budio中,如果这是构建本身的PAR或在结束时的打包(如果这是<>代码>调试< /代码> RPM创建)。在这两种情况下,您都需要修复
%build
%install
中的权限。安装rpm后,
%files
部分仅控制磁盘上的权限。