rpmbuild% install раздел удаляет код сборки root. Как мне удержать rpmbuild от этого - PullRequest
0 голосов
/ 24 марта 2020

Я создаю новый rpm для приложения rails. Однако стандартное поведение раздела% install удаляет каталог BUILD ROOT. Я предполагал, что раздел% install установит файлы из сборки root. Должно быть, я что-то не так делаю, потому что сборка root удаляется в разделе% install. Как правильно это сделать?

Это файл spe c

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 удаляет сборку root.

 (%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 от удаления моей сборки root?

1 Ответ

2 голосов
/ 24 марта 2020

вы неправильно используете раздел %prep. Очень кратко, как вы должны использовать эти разделы:

  • %prep: для извлечения ваших источников, примените патчи et c.
  • %build: для компиляции или сборки приложение (если вам нужно)
  • %install: скопировать файлы в $RPM_BUILD_ROOT

Так что логично, что $RPM_BUILD_ROOT очищается в начале %isntall section.

Измените код для извлечения zip-файла в %prep и используйте раздел %install, чтобы поместить файлы в $RPM_BUILD_ROOT.

...