rpmbuilder只创建源rpm而不是二进制rpm

rpmbuilder只创建源rpm而不是二进制rpm,rpm,qmake,rpmbuild,rpm-spec,Rpm,Qmake,Rpmbuild,Rpm Spec,我正在尝试为我在Qt中编写的库创建一个rpm包。这是我的规范文件: Name: blabla Version: 1.3.2 Release: 0.1 License: GPL Summary: my awsome lib Url: http://me.home.mrz.net Group: Core Applictaion Source: http://svn.me

我正在尝试为我在Qt中编写的库创建一个rpm包。这是我的规范文件:

Name:           blabla
Version:        1.3.2
Release:        0.1
License:        GPL
Summary:        my awsome lib
Url:            http://me.home.mrz.net
Group:          Core Applictaion
Source:         http://svn.me.home.mrz.net/svn/Core/blabla-1.3.2.tar
Vendor:         mrz Inc.
BuildArch:      x86_64
Packager:       mrz
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description

%prep
%setup

%build
qmake

%install
make install

%clean
%{?buildroot:%__rm -rf "%{buildroot}"}

%files:
%defattr(-,root,root)
/home/mrz/local/lib/libBlabla.so
/home/mrz/local/lib/libBlabla.so.%{version}
跑步后

rpmbuild -ba blabla.spec
rpmbuild正常完成(退出0),表明它在src.rpm中运行,更不用说.rpm文件了。我可以在SRPMS文件夹中看到blabla-1.3.2-01.src.rpm,但是RMPS文件夹是空的,下面是我得到的部分输出:

Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.WwW6ps
+ unmask 022
+ cd /home/mrz/rpmbuild/BUILD
+ rm -rf blabla-1.3.2
+ /usr/bin/gzip -dc /home/mrz/rpmbuild/SOURCES/blabla-1.3.2.tar
+ /bin/tar -xvvf -
.
.  
.
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd blabla-1.3.2
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.sNb2WS
+ umask 022
+ cd /home/mrz/rpmbuild/BUILD
+ /bin/rm -rf /home/mrz/rpmbuild/BUILDROOT/blabla-1.3.2-0.1.x86_64
++ dirname /home/mrz/rpmbuild/BUILDROOT/blabla-1.3.2-0.1.x86_64
+ /bin/mkdir -p /home/mrz/rpmbuild/BUILDROOT
+ /bin/mkdir /home/mrz/rpmbuild/BUILDROOT/blabla-1.3.2-0.1.x86_64
+ cd blabla-1.3.2
+ qmake
Project MESSAGE: ******************************************************************
Project MESSAGE: * Building blabla
Project MESSAGE: * project default message 
Project MESSAGE: ******************************************************************
.
.
.
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.qVk8KW
+ umask 022
+ cd /home/mrz/rpmbuild/BUILD
+ cd blabla-1.3.2
+ make install
cd src/ && /usr/bin/qmake /home/mrz/rpmbuild/BUILD/blabla-1.3.2/src/src.pro -o     
Makefile
Project MESSAGE: ******************************************************************
Project MESSAGE: * Building blabla
Project MESSAGE: * project default message
Project MESSAGE: ******************************************************************
cd src/ && make -f Makefile install
make[1]: Entering directory `/home/mrz/rpmbuild/BUILD/blabla-1.3.2/src'
g++ -c -m64 -pipe -O2 -fPIC -Wall -W 
. 
.
.
+ /usr/lib/rpm/brp-lib64-linux
sf@suse.de: if you find problems with this script, drop me a note
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-symlink
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/mrz/rpmbuild/BUILDROOT/blabla-1.3.2-0.1.x86_64
warning: Could not canonicalize hostname: linux-x1rh
Wrote: /home/mrz/rpmbuild/SRPMS/blabla-1.3.2-0.1.src.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.M4rJDm
+ umask 022
+ cd /home/mrz/rpmbuild/BUILD
+ cd blabla-1.3.2
+ /bin/rm -rf /home/mrz/rpmbuild/BUILDROOT/blabla-1.3.2-0.1.x86_64
+ exit 0

任何人都知道我做错了什么…

我想你在rpmbuild中误解了目录的概念

有两个重要目录:构建区域和构建根目录

  • 构建区域是源代码提取和编译的地方。在您这边,它是
    /home/mrz/rpmbuild/BUILD
    。在这里,tar被解包,并且在这样创建的子目录中,
    blablabla-1.3.2
    ,源代码就位于其中。(这源于将一个目录放入tar文件的约定,该文件下可能有其他子目录,但旁边没有子目录。)

  • 构建根目录是文件在安装时的排列方式。你用什么来定义它

    BuildRoot:      %{_tmppath}/%{name}-%{version}-build
    
    显然,这意味着

    /home/mrz/rpmbuild/BUILDROOT/blabla-1.3.2-0.1.x86_64
    
    --我不知道为什么<代码>~/.rpmrc或
    ~/.rpmmacros
    可能

  • 有关生成根目录的详细信息:

    通常,您会告诉您的安装脚本以某种方式安装构建根目录下的所有内容。如果它这样做了,一切都是您想要的,您可以定义您的
    %文件
    在哪里找到它们


    我觉得很有帮助,特别是在这一节。但是,请注意,它已经非常过时了-在早期,没有
    rpmbuild
    ,您使用
    rpm
    完成所有操作。但基本概念是相同的。现在,
    rpm
    不再理解
    -ba
    ,你用
    rpmbuild
    进行所有的构建,你没有得到任何输出吗?上面说什么?此外,您的等级库文件无法工作:1。在
    %文件之后有一个
    和2。你没有告诉
    makeinstall
    关于你的构建根目录。3.RPM文件不应该包含
    /home
    @glglglglgl的任何文件:正如我提到的,我确实得到了一个输出,它说一切正常(退出0),源RPM已经写入了它的相对文件夹中,没有提到任何关于二进制RPM的内容。嗯,spec文件可以工作(你可以在我更新的帖子中看到输出),但我相信它并不像预期的那样。没有足够的空间对这3个问题发表评论,所以我将创建新的评论。@glglgl:我将从数字3开始反向回答。也许我误解了spec文件的
    %部分,但它不应该解决我想在.rpm中包含的文件吗?我有我的make文件来复制我在
    %file
    部分中编写的路径中的.so文件(我的库编译的输出)。因此,我是否应该更改make文件以使其复制
    /usr/lib
    中的.So文件?@glglgl:2.我非常确定我的qmake和make安装(更具体地说,
    %prep
    %build
    %install
    部分)从观察输出结果来看工作正常,在使用rpmbuilder构建项目之后,我可以看到。所以文件已经被放置在它们应该放置的位置。所以我很确定这个项目已经完成,并且安装正确。在调用
    qmake
    make
    makeinstall
    @mrz之前,您可以在目录中看到rpmbuilder
    cd
    rpm-ba
    已过时。几年来,
    rpmbuild-ba
    接手了这项工作。除此之外,这本旧书只能作为学习事物如何运作的一个很好的指南。再次感谢你的回答。