2

rpmbuildツールを使用してrpmをビルドしようとしています。約30GBのバイナリをビルドするソースコードがあります。私がrpmを作成しているこのソフトウェアには、数十の実行可能ファイルがあります。単一の実行可能ファイル(initなど)のバイナリのみをコピーすると、rpmが正常にビルドされます。しかし、ビルド全体をrpmにダンプすると、rpmbuildはすべてを実行しますが、最終的にセグメンテーション違反を起こします。

これが私のスペックファイルです:

# This is a sample spec file for wget

%define _topdir     /root/mywget
%define name            source 
%define release     1
%define version     1.12
%define _builddir     /root/mywget/BUILD/glenlivet
%define _buildrootdir /root/mywget/BUILDROOT
%define _buildroot /root/mywget/BUILDROOT
%define _sourcedir    /root/mywget/SOURCES

BuildRoot:  %{_buildroot}
Summary:        GNU source
License:        GPL
Name:           %{name}
Version:        %{version}
Release:        %{release}
Source:         %{name}-%{version}.tar.gz
Prefix:         /usr
Group:          Development/Tools

%description
The GNU sample program downloads files from the Internet using the command-line.

%prep
%setup -q -n glenlivet

%build
cd %{_builddir}
make all

%install
rm -rf %{_buildrootdir}
mkdir -p %{_buildrootdir}/bin
cp -p -r %{_builddir}/build/obj-x64/* %{_buildrootdir}/bin/

%files
%defattr(-,root,root)
/bin/*

一部のバイナリ(たとえば、1つのユーティリティとそれに依存するバイナリ)のみをコピーすると、正常に機能します。しかし、ビルド全体をコピーしようとすると、セグメンテーション違反が発生します。rpmbuildが次のセクションを実行した後、セグメンテーション違反が発生します:%prep%build%install

rpmbuildはソースファイルも処理します。

ファイルの処理:ソース-1.12-1

検索は提供します:

検索に必要なもの:

サプリメントを見つける:

提供:.....。

必要:......

パッケージ化されていないファイルの確認:/ usr / lib / rpm / check-files / root / mywget / BUILDROOT

パッケージ化されていないファイルの確認:/ usr / lib / rpm / check-files / root / mywget / BUILDROOT

セグメンテーション違反

何が間違っているのか、またはrpmbuildがどこで失敗するのかについての手がかりはありますか?前もって感謝します

4

1 に答える 1

2

この問題についてもっとグーグルで検索する必要がありました。2GB を超える RPM を作成しようとすると、rpmbuild に問題が発生するようです。これにはバグが報告されています:

https://bugzilla.redhat.com/show_bug.cgi?id=433795

于 2012-07-10T20:05:46.950 に答える