%define buildroot /var/tmp
Summary: Simple Example for RPM Building DEMO.
Name: helloworld
Version: 1.0
Release: 1
Copyright: Open Source
Group: Extensions/Chinese
Source: helloworld-1.0-1.tgz
Packager: Penelope Marr
%description
This package is used as a demo for RPM building only.
%changelog
* Thu Jul 16 1998 Penelope Marr
- build for the first time.
%prep
%setup -c
%build
make helloworld
%install
install -m 755 helloworld /usr/local/bin/helloworld
%files
%doc README
/usr/local/bin/helloworld
/usr/share/doc/helloworld-1.0/README
[quote:f513b96760="casper"]按照llc的方法,还是不行,提示我说File need begin with "/",大概是这个意思吧,后来在另外一张贴子里面得到了灵感,干脆把/usr/local/bin/helloworld这一行注释掉了,结果建包成功,晕了,现在越来越糊涂了[/quote]
这是因为定义了Buildroot后(Buildroot:/var/tmp),相当于设定了虚拟的安装目录,rpmbuild在处理你%file段时里面的所有路径都看作是相对于Buildroot的目录,因此rpmbuild在处理你%file段的/usr/local/bin/helloworld它实质上是当作/var/tmp/usr/local/bin/helloworld来处理的,因此如果不注销/usr/local/bin/helloworld这行它将因为找不到/var/tmp/usr/local/bin/helloworld这个文件(%install段只是将文件安装到绝对的/usr/local/bin路径下而没安装在/var/tmp/usr/local/bin)错误而build失败,而如果你注释掉这行它将因为没产生错误而build成功。
提示我说File need begin with "/"是因为%file段定义的文件路径需要以/开头,因此原先我贴出的"%{Buildroot}/usr/local/bin/helloworld"非法错误