24

I noticed rpmbuild (-bb and --buildroot options) creates the .rpm in different locations depending of what OS are you using:

  • GNU/Linux Ubuntu <= 9.04: /usr/src/rpm/...
  • GNU/Linux Ubuntu >= 9.10: /home/rpmbuild/...
  • GNU/Linux Fedora: /usr/src/redhat/...

So how can I set manually the destination folder for all OS?

Htechno
  • 5,901
  • 4
  • 27
  • 37
  • also related https://stackoverflow.com/questions/6285792/how-do-you-make-topdir-relative-to-the-location-of-the-spec-file-when-building/8243413#8243413 – nick fox Oct 05 '17 at 11:41

5 Answers5

23

Replying myself, adding:

%define _rpmdir /outputdir

to .spec file.

Htechno
  • 5,901
  • 4
  • 27
  • 37
12

You may want to use the command argument --define : For example, this will send the rpm files into the current directory.

rpmbuild anything.spec --bb --define "_rpmdir $(pwd)"

This will send the rpmsto output dir

rpmbuild anything.spec --bb --define "_rpmdir /outputdir"

Or perhaps something more complicated such as Custom gradle task for rpmbuild .

MUY Belgium
  • 2,330
  • 4
  • 30
  • 46
3

For me the solution was to set _topdir to a subdirectory called rpmbuild inside my project. I also set a few macros, to control the .rpm path:

rpm:
rpmbuild -bb package.spec -D "_topdir $(shell pwd)/rpmbuild"  -D "SRC $(shell pwd)" -D "NAME $(NAME)" -D "ARCH $(ARCH)" -D "VERSION $(VERSION)" -D "RELEASE $(RELEASE)"
mv rpmbuild/RPMS/$(ARCH)/$(NAME)-$(VERSION)-$(RELEASE).$(ARCH).rpm ./
rm -rf rpmbuild

Then I use make to generate the .rpm file and move it. I prefer rpmbuild to operate inside its directory.

make rpm

package.spec is using these macros, e.g.

Name:           %{NAME_PACKAGE}
George Valkov
  • 1,217
  • 12
  • 10
2

Just a tiny comment.. adding "%define _rpmdir /outputdir" to spec file is also support by rpmbuild in AIX OS

Sharon
  • 56
  • 3
1

Setting up the rpmbuild environment in /home/ http://www.linuxquestions.org/questions/linux-software-2/need-rpm-package-for-php-version-5-2-7-and-up-on-redhat-5-1-a-766486/#13

Actually it is not recommended to use /usr/src/**. I.e. by using /home/[name]/rpms/ you can work as unprivileged user. No su or sudo is required to build packages.


Knud Larsen
  • 5,753
  • 2
  • 14
  • 19