athurg 发表于 2008-5-7 14:45:48

rpm打包的问题

抱歉,我不知道这个帖子是否该发这里。如果有误,管理员帮忙,谢过!

我要打包的是startupmanage,是一个在Gnome下设置启动画面的工具。

他是用python写成的,安装脚本也是。

在readme中他说安装的方法是安装好所有的依赖后,用python setup.py install命令安装。

我用他这个方法,安装好所有的依赖后,安装成功了。但是我希望把他做成rpm包。

我的spec文件的build部分大致如下:

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

%install
python setup.py install
%clean

但是用rpm -bb编译的时候,总是提示说在clear的时候找不到~/src/tmp/startupmanager.1.9.10/这个目录。
具体提示如下:

running install_lib
+ '[' -n '' ']'
+ /usr/share/spec-helper/clean_files
Can't cd to /home/athurg/src/tmp/starupmanager-1.9.10-0: No such file or directory at /usr/share/spec-helper/clean_files line 17.
error: Bad exit status from /home/athurg/src/tmp/rpm-tmp.59788 (%install)


RPM build errors:
    Bad exit status from /home/athurg/src/tmp/rpm-tmp.59788 (%install)

注:我的编译环境目录结构大致如下:

~/src/
~/src/tmp/
~/src/rpm/
~/src/rpm/RPMS/*
~/src/rpm/SPECS
~/src/rpm/SOURCE
~/src/rpm/BUILD


我可以在/build中找到这个目录。
我曾经试过在tmp中手动建立一个该目录,然后这个就没问题了。
但是如果没有手动建立该目录,即便是删除spec文件中%clean这段都不行。
请问这是什么原因?如何解决?

另外,如果按照上面的方法欺骗过去了,编译出来的结果好像不对劲。
编译出来的rpm包我用解压缩软件解压查看时,发现里面的内部结构是所有的安装包的文件都放在根目录下。

请问是怎么回事儿,怎么不是在/usr/等目录下呢?


我第一次打包,所以可能很多没说清楚也没说正确。

这里把源代码包上传上来,希望高手能够指点,或者帮忙做一个spec文件也可!
谢过!

athurg 发表于 2008-5-7 14:47:00

另,小弟Email地址:[email protected]
如果可能,希望会打包的同志能留下你的联系方式。

xx_zz 发表于 2008-5-7 16:52:13

试试看这样能不能行。

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

%install
rm -rf $RPM_BUILD_ROOT

%{__python} setup.py install --prefix=$RPM_BUILD_ROOT/usr
               
%clean
rm -rf $RPM_BUILD_ROOT

athurg 发表于 2008-5-7 18:47:23


--prefix=$RPM_BUILD_ROOT/usr


我想这一句是关键,现在编译通过了,我的肉眼看来应该可以了。

肚子饿了,所以待会儿加源测试。

楼上在此谢过!

不知能否分析一下?

为什么我直接源码安装的时候不用指定安装根目录就OK,但是做RPM的时候必须要作如上指定?

而且好像大多数make 、make install类的c程序貌似都不需要做这一步。

另外最大的狐疑,加不加那个参数,影响到的应该就是安装位置吧?

为什么加上就正常,否则不光是安装目录不正常,连安装的文件都不正常(加上后安装的就是正确,不加上就是把整个源代码包内的目录复制到根目录)

望不吝赐教!

lanzinc 发表于 2008-5-14 14:36:54

打包的时候不是安装到真正的系统的文件系统相应目录下
而是安装到虚构目录,也就是一个有别于系统目录的目录树下
也就是:$RPM_BUILD_ROOT/usr
页: [1]
查看完整版本: rpm打包的问题