2

从现有源代码构建 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 vagrant vagrant 12823866 5 月 14 日 17:33 libpython3.4m.a

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

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

但这没有效果。

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

4

1 回答 1

1

配置脚本创建一个 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

我不是汽车制造专家,所以可能有一些选项可以调整它。但是,我在规范文件的 %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-bytecompile 部分。我在 fedora 邮件列表中找到了这个,这归功于 David Malcom @ RedHat。这是原始线程-您可以将其放在规范文件的顶部:

%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
于 2017-05-02T21:06:50.093 回答