# Avoid building package



## laufdi (Oct 21, 2013)

Since 10 a package is  built for every `make install`. Can I avoid this?

Setting `NO_PACKAGE=yes` breaks some ports.


----------



## Beeblebrox (Oct 21, 2013)

As you noted, some port installs require that the install be made as a package. That's because those ports *must* be installed in the form of packages. Mostly as far as I recall, linux-*, wine-* and other emulators, plus some "not-entirely-open" ports have this requirement.

Since there's currently no "flag" showing which ports require to be packaged and which do not, it will mean that you must manually prepare a list of those ports which require to be installed as a package, then pass that list as an exception in /etc/make.conf.

More trouble than it's worth IMHO.


----------



## phoenix (Oct 22, 2013)

Going forward, the ports tree will use a "STAGING" directory to build and install the port into, then build a package from the contents of that directory.  Only once a package is created, will it be install on the system using the normal pkg tools.  The ports tree will not directly install things into the system and manually munge the package database.

IOW, only packages can be installed on a FreeBSD system, and only the pkg tool will do the installation.

Why is this a big deal for people?  It makes things a lot simpler in the long run (only one tool to install packages; support for sub-packages; much easier to build custom packages for installation on other systems; etc).  And it gets rid of a whole host of problems from having non-pkg_add-related tools mucking around in the package database.

Plus, if one sets an appropriate work directory and makes it user-writable, one can compile ports, install to STAGING, create a package, clean the port, all without being root.  Only the final step, installing the package, will require root.


----------



## xibo (Oct 22, 2013)

For the time being, you can disable port staging by defining 
	
	



```
NO_STAGE=yes
```
 either in the make command line call or in any files parsed by the ports build system, e.g. make.conf(). As was explained by previous posts, you will likely not gain alot by doing so though.


----------



## kpa (Oct 23, 2013)

It's called progress. Although in this case the staging support for ports should have been done years ago, the main competition of FreeBSD has used staging as part of the package building for ages. It's now quite painful to catch up but in the end it will be worth it.


----------



## jb_fvwm2 (Oct 23, 2013)

phoenix said:
			
		

> Going forward, the ports tree will use a "STAGING" directory to build and install the port into, then build a package from the contents of that directory.  Only once a package is created, will it be install on the system using the normal pkg tools.  The ports tree will not directly install things into the system and manually munge the package database.
> 
> IOW, only packages can be installed on a FreeBSD system, and only the pkg tool will do the installation.
> 
> ...



What if it fails to package (differing pkg-plist after building?
Is there an opt-out of the second paragraph so a `make install` still works?
What if `pkg add` itself breaks or somehow corrupts the database?
Is not building a port as a user less secure than as root; as user with too broad permissions?
And depending upon, or despite the answers to those questions, what of other problems customarily subject to workaround with non-`pkg` plain command line tools?
[ I'm just wanting early clarification so the next set of questions is more informed and not sound at all like complaining... I've enough worries with the disappearance of /var/db/pkg and tentatively plan to layer one on top of the `pkg` database if it comes to that...if I've enough time, inclination, etc. ].  Please pardon any misunderstading upon my part so far.


----------

