从源代码在CentOS上创建RPM时与剥离相关的权限错误
从现有源代码构建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部分设置权限:从源代码在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
%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中进行修复。剥离发生在构建过程中运行的任何地方。可能在
%build
或%install
中的权限。安装rpm后,%files
部分仅控制磁盘上的权限。