rpmbuild php包无法创建目录权限,然后%install

我想自定义构建一个php rpm包,但是我在%install中遇到了一些问题</ 代码>时间,错误显示如下:</ p>

 构建完成。
别忘了运行'make test'。

+退出0
执行(%安装):/ bin / sh -e /var/tmp/rpm-tmp.JrATF9

  • umask 022
  • cd / home / work / rpmbuild / BUILD +'['/ home / work / rpmbuild / BUILDROOT / php-7.3.2-1.el7.x86_64'!='/']'
  • rm -rf /home/work/rpmbuild/BUILDROOT/php-7.3.2-1.el7.x86_64
    ++ dirname /home/work/rpmbuild/BUILDROOT/php-7.3.2-1.el7.x86_64
    • mkdir -p / home / work / rpmbuild / BUILDROOT
  • mkdir / home / work / rpmbuild / BUILDROOT / php- 7.3.2-1.el7.x86_64
  • cd php-7.3.2
  • rm -rf /home/work/rpmbuild/BUILDROOT/php-7.3.2-1.el7.x86_64
    • / usr / bin / mkdir -p /home/work/rpmbuild/BUILDROOT/php-7.3.2-1.el7.x86_64/usr/local/lib/php/extensions/no-debug-non-zts-20180731
    • / usr / bin / make 安装DESTDIR = / home / work / rpmbuild / BUILDROOT / php-7.3.2-1.el7.x86_64 mkdir:c annot create directory'/ usr / local / lib / php':权限被拒绝 mkdir:无法创建目录'/ usr / local / lib / php / extensions':没有这样的文件或目录 mkdir:无法创建目录'/ usr / local / lib / php / extensions / no-debug-non-zts-20180731':没有这样的文件或目录 make:*** [install-modules]错误1 error:来自/ var / tmp / rpm的退出状态错误 -tmp.JrATF9(%install)

RPM构建错误:
/var/tmp/rpm-tmp.JrATF9退出状态不良(%安装)
</ code> </ pre>

< p>我的php Spec文件在这里:</ p>

 名称:php 
版本:7.3.2
发布:1%{?dist }

Source0:%{name} - %{version} .tar.gz

BuildRoot:%{_ tmppath} /%{name} - %{version} - %{release} -root

% prep
%setup -q

%build
./configure --enable -fpm --enable-mbstring --with-pdo-mysql --without-sqlite3 --without-pdo-sqlite --with -openssl --with-zlib --with-curl --with-libdir = lib64

make%{?_ smp_mflags}

%install
rm -rf $ RPM_BUILD_ROOT

%{__ mkdir} -p $ RPM_BUILD_ROOT的/ usr /本地/ LIB / PHP /扩展/无调试非ZTS-20180731

%make_install

%文件
%def​​attr( - ,根,根)

%ATTR (0755,root,root)%dir / usr / local / lib / php
%attr(0755,root,root)%dir / usr / local / lib / php / extensions
%attr(0755,root,root )%dir / usr / local / lib / php / extensions / no-debug-non-zts-20180731
</ code> </ pre>

如何创建 / usr / local / lib / php </ code>权限或拥有正确的权限?</ p>

有任何帮助吗?</ p>
</ div>

展开原文

原文

I want to custom build a php rpm package, but I have some problem in the %install time, errors show as follows:

Build complete.
Don't forget to run 'make test'.

+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.JrATF9
+ umask 022
+ cd /home/work/rpmbuild/BUILD
+ '[' /home/work/rpmbuild/BUILDROOT/php-7.3.2-1.el7.x86_64 '!=' / ']'
+ rm -rf /home/work/rpmbuild/BUILDROOT/php-7.3.2-1.el7.x86_64
++ dirname /home/work/rpmbuild/BUILDROOT/php-7.3.2-1.el7.x86_64
+ mkdir -p /home/work/rpmbuild/BUILDROOT
+ mkdir /home/work/rpmbuild/BUILDROOT/php-7.3.2-1.el7.x86_64
+ cd php-7.3.2
+ rm -rf /home/work/rpmbuild/BUILDROOT/php-7.3.2-1.el7.x86_64
+ /usr/bin/mkdir -p /home/work/rpmbuild/BUILDROOT/php-7.3.2-1.el7.x86_64/usr/local/lib/php/extensions/no-debug-non-zts-20180731
+ /usr/bin/make install DESTDIR=/home/work/rpmbuild/BUILDROOT/php-7.3.2-1.el7.x86_64
mkdir: cannot create directory '/usr/local/lib/php': Permission denied
mkdir: cannot create directory '/usr/local/lib/php/extensions': No such file or directory
mkdir: cannot create directory '/usr/local/lib/php/extensions/no-debug-non-zts-20180731': No such file or directory
make: *** [install-modules] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.JrATF9 (%install)

RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.JrATF9 (%install)

My php Spec file is here:

Name:           php
Version:        7.3.2
Release:        1%{?dist}

Source0:        %{name}-%{version}.tar.gz

BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root

%prep
%setup -q

%build
./configure --enable-fpm --enable-mbstring --with-pdo-mysql --without-sqlite3 --without-pdo-sqlite --with-openssl --with-zlib --with-curl --with-libdir=lib64

make %{?_smp_mflags}

%install
rm -rf $RPM_BUILD_ROOT

%{__mkdir} -p $RPM_BUILD_ROOT/usr/local/lib/php/extensions/no-debug-non-zts-20180731

%make_install

%files
%defattr(-,root,root)

%attr(0755,root,root) %dir /usr/local/lib/php
%attr(0755,root,root) %dir /usr/local/lib/php/extensions
%attr(0755,root,root) %dir /usr/local/lib/php/extensions/no-debug-non-zts-20180731

How can I create the /usr/local/lib/php permission or own the right permission ?

Any help you ?

dongyimo1293
dongyimo1293 不是root用户,因为新的Redhatrpmbuid建议不要使用root用户buildpackge,所以我创建了一个非root用户做这个,但是我发现了另一件事,如果我使用makeINSTALL_ROOT=$RPM_BUILD_ROOT安装,那么它的工作原理成功但使用makeDESTDIR=$RPM_BUILD_ROOT安装没有。为什么?
一年多之前 回复
dongpiao0731
dongpiao0731 您是以root身份还是以常规用户帐户身份执行此操作?
一年多之前 回复

1个回答



not </ em>构建为 root </ code>,您走在正确的轨道上! 尝试用%{configure} </ code>替换 ./ configure </ code>调用,这是一个宏,它将放入他们想要的所有Red Hat标志(比如检查堆栈溢出等) 以及 DESTDIR </ code>标志以及你需要做什么才能“正常工作”。 你已经(正确)使用了%{make_install} </ code>宏,所以你很好。</ p>

我会拿出 mkdir </ 代码>调用,因为“ make install </ code>”应涵盖该内容。</ p>
</ div>

展开原文

原文

You're on the right track by not building as root! Try replacing the ./configure call with %{configure} which is a macro that will put in all the Red Hat flags they want (like checking for stack overflows, etc) as well as the DESTDIR flags and whatnot you need for it all to "just work." You're already (properly) using the %{make_install} macro so you're fine there.

I would take out the mkdir call because the "make install" should cover that.

douhuang3740
douhuang3740 哦,对不起,我误解了。 我修好了,tks!
一年多之前 回复
doucheng7808
doucheng7808 我说不要用root。 对于INSTALL_ROOT与DESDIR,这意味着您所包装的内容不符合标准GNU约定。
一年多之前 回复
douji4948
douji4948 无论使用make install还是%{make_install},都应该添加一个前缀var,如下所示:INSTALL_ROOT =%{buildroot} make install,然后它工作了。 最终的spec文件在这里:github.com/apptut/common-rpm-specs/blob/master/php.spec
一年多之前 回复
duanjihe5180
duanjihe5180 有一件事你是对的。 这是没有必要做dir。 所以我删除它。 当我将构建用户更改为root时,我已将./confure更改为%configure并将make install更改为%makeinstallï¼其他事情! 软件可以在构建系统中使用,但不能在buildroot中使用,这是不对的。 后来,我发现了另外一件事,我在配置文件中搜索了INSTALL_ROOT micro和DESTDIR micro,只创建了INSTALL_ROOT。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐