rpmbuild %install 部分删除 buildroot 代码。我如何防止 rpmbuild 这样做
rpmbuild %install section removes buildroot code. How do I keep rpmbuild from doing this
我正在为 rails 应用创建一个新的 rpm。但是,%install 部分的默认行为会删除 BUILDROOT 目录。我假设 %install 部分将从 buildroot 安装文件。我一定是做错了什么,因为 buildroot 在 %install 部分被删除了。这样做的正确方法是什么?
这是规范文件
Summary: Rails APP API (replaces railsapp rpm)
Name: railsapp-api
Version: 6.0.0
Release: 1
License: GPL
URL: http://www.both.org
Group: System
Packager: Tommie Jones
Requires: bash
BuildRoot: ~/rpmbuild/
%description
A rewrite of railsapp from the HTML version to a Http API version
%prep
echo "BUILDROOT = $RPM_BUILD_ROOT"
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/local/veex/railsapp
unzip /home/realworx/rpmbuild/SOURCES/rwx-master.zip -d $RPM_BUILD_ROOT/usr/local/veex/
pushd $RPM_BUILD_ROOT/usr/local/veex/
rm -rf railsapp
mv rwx-master railsapp
pushd $RPM_BUILD_ROOT/usr/local/veex/railsapp
rm Gemfile.lock
bundle install
PWD=`pwd`
cat > gemrc <<EOGEMRC
gemhome: $PWD/vendor/bundle/ruby/1.8
gempath:
- $PWD/vendor/bundle/ruby/1.8
EOGEMRC
gem --config-file ./gemrc install bundler
# Don't need the gemrc any more...
rm ./gemrc
%files
%attr(0744, root, root) /usr/local/veex/railsapp/*
%install
echo %{buildroot}
echo "HELLO"
%clean
echo NOOP
下面是 %install 删除 buildroot 的日志。
(%install): /bin/sh -e /var/tmp/rpm-tmp.aX3U0b
+ umask 022
+ cd /home/railsapp-api/rpmbuild/BUILD
+ '[' /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch '!=' / ']'
+ rm -rf /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch
++ dirname /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch
+ mkdir -p /home/railsapp-api/rpmbuild/BUILDROOT
+ mkdir /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch
+ echo /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch
/home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch
+ echo HELLO
HELLO
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-ldconfig
/sbin/ldconfig: Warning: ignoring configuration file that cannot be opened: /etc/ld.so.conf: No such file or directory
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip /usr/bin/strip
+ /usr/lib/rpm/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile 1
+ /usr/lib/rpm/brp-python-hardlink
+ PYTHON3=/usr/libexec/platform-python
+ /usr/lib/rpm/redhat/brp-mangle-shebangs
Processing files: railsapp-api-6.0.0-1.noarch
error: File not found: /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch/usr/local/veex/railsapp/*
如何防止 %install 删除我的 buildroot?
您误用了 %prep
部分。简而言之,您应该如何使用这些部分:
%prep
:提取您的源代码、应用补丁等
%build
:编译或构建您的应用程序(如果需要)
%install
: 将文件复制到$RPM_BUILD_ROOT
因此 $RPM_BUILD_ROOT
在 %isntall
部分的开头被清空是合乎逻辑的。
更改代码以在 %prep
中提取 zip 文件,并使用 %install
部分将文件放入 $RPM_BUILD_ROOT
.
我正在为 rails 应用创建一个新的 rpm。但是,%install 部分的默认行为会删除 BUILDROOT 目录。我假设 %install 部分将从 buildroot 安装文件。我一定是做错了什么,因为 buildroot 在 %install 部分被删除了。这样做的正确方法是什么?
这是规范文件
Summary: Rails APP API (replaces railsapp rpm)
Name: railsapp-api
Version: 6.0.0
Release: 1
License: GPL
URL: http://www.both.org
Group: System
Packager: Tommie Jones
Requires: bash
BuildRoot: ~/rpmbuild/
%description
A rewrite of railsapp from the HTML version to a Http API version
%prep
echo "BUILDROOT = $RPM_BUILD_ROOT"
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/local/veex/railsapp
unzip /home/realworx/rpmbuild/SOURCES/rwx-master.zip -d $RPM_BUILD_ROOT/usr/local/veex/
pushd $RPM_BUILD_ROOT/usr/local/veex/
rm -rf railsapp
mv rwx-master railsapp
pushd $RPM_BUILD_ROOT/usr/local/veex/railsapp
rm Gemfile.lock
bundle install
PWD=`pwd`
cat > gemrc <<EOGEMRC
gemhome: $PWD/vendor/bundle/ruby/1.8
gempath:
- $PWD/vendor/bundle/ruby/1.8
EOGEMRC
gem --config-file ./gemrc install bundler
# Don't need the gemrc any more...
rm ./gemrc
%files
%attr(0744, root, root) /usr/local/veex/railsapp/*
%install
echo %{buildroot}
echo "HELLO"
%clean
echo NOOP
下面是 %install 删除 buildroot 的日志。
(%install): /bin/sh -e /var/tmp/rpm-tmp.aX3U0b
+ umask 022
+ cd /home/railsapp-api/rpmbuild/BUILD
+ '[' /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch '!=' / ']'
+ rm -rf /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch
++ dirname /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch
+ mkdir -p /home/railsapp-api/rpmbuild/BUILDROOT
+ mkdir /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch
+ echo /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch
/home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch
+ echo HELLO
HELLO
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-ldconfig
/sbin/ldconfig: Warning: ignoring configuration file that cannot be opened: /etc/ld.so.conf: No such file or directory
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip /usr/bin/strip
+ /usr/lib/rpm/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile 1
+ /usr/lib/rpm/brp-python-hardlink
+ PYTHON3=/usr/libexec/platform-python
+ /usr/lib/rpm/redhat/brp-mangle-shebangs
Processing files: railsapp-api-6.0.0-1.noarch
error: File not found: /home/railsapp-api/rpmbuild/BUILDROOT/railsapp-api-6.0.0-1.noarch/usr/local/veex/railsapp/*
如何防止 %install 删除我的 buildroot?
您误用了 %prep
部分。简而言之,您应该如何使用这些部分:
%prep
:提取您的源代码、应用补丁等%build
:编译或构建您的应用程序(如果需要)%install
: 将文件复制到$RPM_BUILD_ROOT
因此 $RPM_BUILD_ROOT
在 %isntall
部分的开头被清空是合乎逻辑的。
更改代码以在 %prep
中提取 zip 文件,并使用 %install
部分将文件放入 $RPM_BUILD_ROOT
.