# make package without install



## spock (Nov 16, 2008)

Hello, everybody here 

Is there any way to create package by "make package" without actually installing package on build system.
I'm creating packages for jails by building them on different server. As a result there is more and more packages in this system.
If it isn't possible - is there a way do remove all packages (dependency) installed by "make package" ??

Best regards,


----------



## brd@ (Nov 16, 2008)

Currently the FreeBSD Ports build processes requires installing it before the package can be built. There is a project to have the port installed into a temporary area so that the package can be built without requiring the install, but it is not complete yet. 

I normally have a Jail on a build server that I build packages on for distribution out to other systems.


----------



## bradfa (Nov 16, 2008)

You might take a look at portmaster (it's in ports).  Try the portmaster -e and -s switches to remove a package and all dependencies (but leave any dependencies that are depended upon by other packages).


----------



## keramida@ (Nov 17, 2008)

*The tinderbox at marcuscom.com may be useful*

If you go the "special package-building jail" route, then the tinderbox scripts described at

http://tinderbox.marcuscom.com/

may be useful too.

I've been using the marcuscom tinderbox to test the build of _editors/emacs_ and _editors/emacs-devel_, and I have a local installation in a separate workstation to pre-build the packages for my laptop.

It is a wonderful set of tools that has saved me from a *lot* of trouble over the past years.  The only caveat I can think of is that it may require a bit of Perl-foo to get it going "right(TM)" for your own personal preferences.


----------



## kamikaze (Nov 17, 2008)

```
# env PREFIX=/tmp/local PKG_DBDIR=/tmp/pkgdb make package deinstall
```

You'd probably have to copy /var/db/pkg to /tmp/pkgdb to prevent the ports system to build and install all dependencies into /tmp/local.

If it's not your intention to keep the original database untouched you can avoid setting PKG_DBDIR and spare you the copying.


----------



## Daemony (Nov 17, 2008)

brd@ said:
			
		

> I normally have a Jail on a build server that I build packages on for distribution out to other systems.



Yes. This is good idea, and I also have a "builder" jail on main server machine. But... I wouldn't try to compile lang/mono (open source implementation of .NET Development Framework)...


----------



## Mel_Flynn (Nov 19, 2008)

kamikaze said:
			
		

> ```
> # env PREFIX=/tmp/local PKG_DBDIR=/tmp/pkgdb make package deinstall
> ```
> 
> ...



This kludge won't work, as soon as libtool libraries come into play, that have hardcoded runpaths. And by default these packages will install into /tmp/local, unless you run pkg_add -P.
The only good reason to mess with PREFIX is if you really want the port to live somewhere else, good example:

```
make -C /usr/ports/shells/bash -DWITH_STATIC_BASH PREFIX=/ install
```


----------

