# Reasons to start using poudrier



## jbo (Aug 25, 2020)

I'm running about 10 FreeBSD servers and 1 desktop (two to three in the near future). So far I've always used pkg to install and maintain software.

Yesterday I started reading about poudrier. I understand that this is a tool / collection of scripts to automate the process of building binary repositories from ports.
I have a server in a datacenter with 1 Gbps internet, 12 CPU cores, 64 GB of RAM and 20 TB of storage that is mostly doing nothing. I think that this machine could be used well to build my own repositories.

Setting up poudrier seems rather straight forward. The hardware is there too. My question is: What are good reasons for me to start doing this? So far I didn't feel limited by the official binaries. But then again, I started reading about poudrier because I wanted to look more into performance optimization, security hardening etc.
Could somebody outline real-world advantages of building my own repositories (using poudrier) in such a scenario?

I also looked into the contribution section of the documentation as I three other servers totaling 64 cores, 256 GB of RAM & 40 TB of storage that sit around doing basically nothing. Is there the need / appreciation of providing computing power to build official packages? According to the documentation the official binary repositories appears to be built using poudrier.


----------



## a6h (Aug 25, 2020)

If you are going to build packages without changing any port options (configurations), binary packages are perfectly fine. Of course with poudriere and building ports in general, you can build different repos for different branch, arch, etc. But I don't think that apply to your situation.
[EDIT] If I have that resources, I start to build/'cross-build' different custom kernel for ARM/embedded systems.
[EDIT #2]: Developing and Cross-building for ARM Systems


----------



## ekvz (Aug 26, 2020)

I have always fantasized about building my whole system with `-march=native -mtune=native` (which of course wouldn't make sense when building remotely) but i figure the time spent compiling is probably larger than the performance gained while executing the resulting binaries.


----------



## Datapanic (Aug 26, 2020)

Internet speed and storage aren't too important for Poudriere, but the amount of RAM is, especially if you are building www/firefox and its dependencies like lang/rust.  As vigole said, if you don't customize the build configurations, you don't really need Poudriere or anything else - just install packages from pkg.FreeBSD.org, the default.  

However, if you do have custom ports, then Poudriere is a dream - I have all my MySQL builds use Perconna 5.7, and a lot of other ports want OpenLDAP, and other intricacies, so having my own pkg system is essential.  I even have 3 different servers running Poudriere providing over 1000 packages for 11.4, 12.1 x64 and even i386.  

I suggest you go ahead and install/configure/experiment with Poudriere and try it out.  Also get to know ports-mgmt/portshaker.


----------



## mark_j (Aug 26, 2020)

joel.bodenmann said:


> I'm running about 10 FreeBSD servers and 1 desktop (two to three in the near future). So far I've always used pkg to install and maintain software.
> 
> Yesterday I started reading about poudrier. I understand that this is a tool / collection of scripts to automate the process of building binary repositories from ports.
> I have a server in a datacenter with 1 Gbps internet, 12 CPU cores, 64 GB of RAM and 20 TB of storage that is mostly doing nothing. I think that this machine could be used well to build my own repositories.
> ...



I will only speak to real-world aspects.
My place of work has build servers for all ports that are needed (FreeBSD & NetBSD BTW).  We have only just recently begun using poudriere, because it is not necessary if you know what you're doing. It's just (an understatement) a lot of shell scripts but it does ease setup and build for your own packages. It sets up the jails, builds the ports, builds world and does whatever you want, really.

So, why use it? vigole has already given you reasons, but our reasons are slightly different. We need consistency across all servers. We therefore build all the software in-house and place it on the intra-net web server and modify all the server's pkg configuration to point to that web server. It is, in fact, our package repository. Any administrator who issues a `pkg install` is doing it to our servers, not FreeBSD's. This means we control what goes on and what state the software's in.

Should someone require a package on a system, it will be built on the build server and transferred to the package server. So, for example, we have specific requirements for PostgreSQL (and even specific non-port patches). All servers that use it we know will be using exactly the same binary (and libraries).

On a personal note, I use poudriere to build packages for ArmV7 and Aarch64.  It's not very fast though as I think cross-compiling on FreeBSD is like 802.11ac support; slow and lacking.


----------



## chrbr (Aug 26, 2020)

Dear joel.bodenmann,


joel.bodenmann said:


> Setting up poudrier seems rather straight forward. The hardware is there too. My question is: What are good reasons for me to start doing this?Setting up poudrier seems rather straight forward. The hardware is there too. My question is: What are good reasons for me to start doing this?


Even if you do not need it now - you might need that powerful tool in the future. Therefore it is worth the time to set it up.


----------



## Zvoni (Aug 26, 2020)

As everyone said: If you need special configs, then building from ports is your friend.
In that vein, i also discovered poudriere some weeks ago.
I'm still new to FreeBSD, and there is one common thread concerning packages: Don't mix packages and ports (pkg install from official repo and own port-builds).
I'm using some programs, which have the "wrong" dependency in the default package (e.g. KDENlive has a dependeny on MySQL instead of sqlite), or there is a feature i need, but which is switched off in default (e.g. Samba to support glusterfs is switched off in default, but i need on).

So, in that vein i switched from pkg install "official repo" to poudriere.


----------

