2013-05-11 87 views
0

我目前正在为Fedora 18打包我的程序(roboJournal)。当我启动rpmbuild时,我的应用程序编译正确,但在安装步骤中该进程总是失败,并且没有创建RPM包。这里的终端输出,当错误发生:Fedora包装时的安装问题

+ strip robojournal 
+ exit 0 
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.G9PU49 
+ umask 022 
+ cd /home/will/rpmbuild/BUILD 
+ '[' /home/will/rpmbuild/BUILDROOT/robojournal-0.4.1-1.fc18.x86_64 '!='/']' 
+ rm -rf /home/will/rpmbuild/BUILDROOT/robojournal-0.4.1-1.fc18.x86_64 
++ dirname /home/will/rpmbuild/BUILDROOT/robojournal-0.4.1-1.fc18.x86_64 
+ mkdir -p /home/will/rpmbuild/BUILDROOT 
+ mkdir /home/will/rpmbuild/BUILDROOT/robojournal-0.4.1-1.fc18.x86_64 
+ cd robojournal-0.4.1 
+ make DESTDIR=/home/will/rpmbuild/BUILDROOT/robojournal-0.4.1-1.fc18.x86_64 install 
install -m 755 -p "robojournal" "/usr/bin/robojournal" 
install: cannot create regular file '/usr/bin/robojournal': Permission denied 
make: [install_target] Error 1 (ignored) 
install -m 644 -p /home/will/rpmbuild/BUILD/robojournal-0.4.1/menus/robojournal.desktop /usr/share/applications/ 
install: cannot create regular file '/usr/share/applications/robojournal.desktop': Permission denied 
make: [install_shortcut] Error 1 (ignored) 
install -m 644 -p /home/will/rpmbuild/BUILD/robojournal-0.4.1/robojournal64.png /usr/share/icons/ 
install: cannot create regular file '/usr/share/icons/robojournal64.png': Permission denied 
make: [install_icon] Error 1 (ignored) 
mkdir: cannot create directory '/usr/share/menu/': Permission denied 
make: *** [install_shortcut-deb] Error 1 
error: Bad exit status from /var/tmp/rpm-tmp.G9PU49 (%install) 

它看起来像安装说明是相互矛盾的;该应用程序应该安装到%_buildrootdir,但它也会尝试在系统级别安装,就像正常构建一样。我甚至尝试将rpmbuild作为fakeroot运行,但这并没有帮助(我知道我不认为构建包是一个真正的超级用户,因为它可能会污染系统)。 〜/ rpmbuild/BUILDROOT目录在每次构建尝试后都会包含一个“robojournal-0.4.1-1.fc18.x86_64”文件夹,但它始终为空。

这是我的SPEC文件:

Summary:   Free journal software for everyone 
Name:    robojournal 
Version:   0.4.1 
Release:   1%{?dist} 
License:   GPLv3 
Group:    Applications/Productivity 
Source:    http://sourceforge.net/projects/robojournal/files/Source/%{name}-%{version}.tar.gz 
URL:    http://sourceforge.net/projects/robojournal 
BuildRequires:  qt, qt-assistant, qt-mysql, qt-devel, qt-webkit, qt-webkit-devel, patch 
Requires:   qt, qt-assistant, qt-mysql, qt-devel, qt-webkit, qt-webkit-devel 

%description 

RoboJournal is a cross-platform journal/diary tool written in Qt/C++. 
Right now, RoboJournal only supports MySQL but support for SQLite 
(and possibly Postgres) will be added in future releases. RoboJournal 
runs on Windows and Linux. 

%prep 

%setup -q -n %{name}-%{version} 

%build 

qmake-qt4 CONFIG+=package robojournal.pro 
patch Makefile < fedora_build.patch 
make 
strip robojournal 

%install 
make DESTDIR=%{buildroot} install 

%clean 

make clean 

%files 

%{_bindir}/robojournal 
%{_datadir}/applications/robojournal.destop 
%{_datadir}/icons/robojournal64.png 
%{_datadir}/pixmaps/robojournal.xpm 
%{_datadir}/menu/robojournal 


%changelog 
* Thu Apr 25 2013 Will Kraft <[email protected]>. 
- Version 0.4.1 

的SPEC文件根据rpmlint没有错误。我从来没有为Fedora打包过,所以我不知道我做错了什么。

UPDATE(13年5月12日):

手动安装工程!下面是安装%什么我SPEC文件的部分目前的样子:

%install 

#install files manually because "make install" doesn't work with rpmbuild in this case. 

# create directory tree in buildroot: 
mkdir -p %{buildroot}%{_bindir}/ 
mkdir -p %{buildroot}%{_datadir}/ 
mkdir -p %{buildroot}%{_datadir}/applications 
mkdir -p %{buildroot}%{_datadir}/icons 
mkdir -p %{buildroot}%{_datadir}/menu 
mkdir -p %{buildroot}%{_datadir}/pixmaps 

# install the files where they need to go 
cp -p robojournal %{buildroot}%{_bindir}/ 
cp -p robojournal64.png %{buildroot}%{_datadir}/icons 
cp -p %{_builddir}/%{buildsubdir}/menus/robojournal.desktop %{buildroot}%{_datadir}/applications 
cp -p %{_builddir}/%{buildsubdir}/menus/robojournal %{buildroot}%{_datadir}/menu 
cp -p %{_builddir}/%{buildsubdir}/menus/robojournal.xpm %{buildroot}%{_datadir}/pixmaps 

即使文件被正确安装,转速依然不会建,我不知道为什么。的rpmbuild提示缺少文件,即使我知道肯定100%的文件中的居民点存在:

Processing files: robojournal-0.4.1-1.fc18.x86_64 
error: File not found: /home/will/rpmbuild/BUILDROOT/robojournal-0.4.1-1.fc18.x86_64/usr/share/applications/robojournal.destop 


RPM build errors: 
    File not found: /home/will/rpmbuild/BUILDROOT/robojournal-0.4.1-1.fc18.x86_64/usr/share/applications/robojournal.destop 
[[email protected] SPECS]$ ls /home/will/rpmbuild/BUILDROOT/robojournal-0.4.1-1.fc18.x86_64/usr/share/applications/ 
robojournal.desktop 
[[email protected] SPECS]$ 
+0

我想过这个更多,也许我应该只有spec文件安装文件到%buildroot手动?即使用mkdir创建正确的目录结构,然后将它需要的所有内容全部清除,而不是使用make install。 – 2013-05-12 01:46:15

回答

-2

我想,我终于得到了这个工作(足以建立可行的RPMS,至少是)。原来%files部分有一些不正确的路径名。