# Install (and maintain) port with different compile options than pkgng provides



## fwyKKCkQze2z (Jul 28, 2016)

I am running one installation of FreeBSD 10.1 and I use pkgng exclusively to install software until now.

Unfortunately, there is a package that is not compiled with the compile time options I need when installed via `pgk`(*).

If I understand correctly, to achieve my goal to install that software with different compile time options, I must use the ports collection and compile the software myself using the switches I require. After installing the port, pkgng will manage it as if it was installed via `pkg install`. To prevent pkgng from reinstalling the software using its standard package I would have to lock the package (which in turn also locks it's dependencies (or the packages it depends on? or both))?

And I have to install the ports tree (it's not there on my system right now) as well as keep it up to date (using `portsnap`?). That does waste a lot of precious memory on my SSD...

One more option I can think of would be to use `poudriere` (or something similar) and only keep a copy of the "to be changed" port(s) locally while fetching everything else from the default repositories. Would that work?

Is there another (better/easier/more adhering to the standard) way?

How do other administrators handle this situation?


Cheers
fwy...

(*) Now, it's about lighttpd's "LUA" option, but in the end it's a general question.


----------



## SirDice (Jul 28, 2016)

fwyKKCkQze2z said:


> One more option I can think of would be to use  poudriere (or something similar) and only keep a copy of the "to be changed" port(s) locally while fetching everything else from the default repositories. Would that work?
> 
> Is there another (better/easier/more adhering to the standard) way?


Yes, set up the mentioned poudriere and build _all_ packages you need there, even the ones that do not require different options. Have all your systems use _only_ that repository. That's the only way to keep everything in sync and not get conflicting packages while still maintaining your sanity.


----------



## ANOKNUSA (Jul 28, 2016)

SirDice said:


> Yes, set up the mentioned poudriere and build _all_ packages you need there, even the ones that do not require different options.



Or install and configure ports-mgmt/synth to install most packages from the official repository, while building only those ports affected  by your custom options. If you've only got one machine, Synth will offer you the most convenience while avoiding conflicts.


----------

