The only thing I build from source on a normal basis is LMMS because there's some features on main you just can't get anywhere else. For example, the slicer that comes with LMMS nightly isn't in the builds, and particularly recently someone pushed a commit that allows for resizing of the slicer, so I just had to pull that and build it.
Linux
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
Gentoo has these USE flags, that drop stuff from local builds.
You don't use bluetooth on your desktop? No bluetooth code in your app! Don't need X? There are even flags for telemetry, codecs, what have you.
You also guarantee that you won't be using any binary blobs, only stuff you can build (unless you make exceptions, like for Steam).
Anecdotally Firefox built on Ubuntu felt much faster than repo build, could be many things, but at that point I just went into Gentoo.
It's the best system for me, can't imagine going elsewhere.
Gentoo4life
In order to use a bit of Windows only software for controlling my CNC machine, I have to use a Wine patch that is only available in source form. That means building Wine from source if I want to use my CNC
Nginx has a number of compile-time optional features and they aren’t all enabled in the pre-built packages. For example, the ability to echo back HTTP requests for debugging.
Anecdotally: the night Mozilla builds were a godsend when I couldn't afford decent hardware.
Also anecdotally and professionally: when you have a client that insists on using source like most software companies do nowadays; you can use that source along with something like a hash to keep them honest and prevent them from leaving you holding the bag when shtf. (ask me how I know this works. Lol)
you can use that source along with something like a hash to keep them honest and prevent them from leaving you holding the bag when shtf. (ask me how I know this works. Lol)
I did not understood that part, so if you want to elaborate I'm curious.
For me the biggest benefit is the ease of applying patches. For example in Nix I can easily take a patch that is either unreleased, or that I wrote myself, and apply it to my systems immediately. I don't need to wait for it to be released upstream then packaged in my distro. This allows me to fix problems and get new features quickly without needing to mess with my system in any other way (no packages in other directories that need to be cleaned up, no extra steps after updates to remember, no cases where some packages are using different versions and no breaking due to library ABI breaks).
Another benefit that you are pointing at is changing build flags. Often times I want to enable an optional feature that my distro doesn't enable by default.
Lastly building packages with different micro-architecture optimizations can be beneficial. I don't do this often but occasionally if I want to run some compute-heavy work it can be nice to get a small performance boost.
I love this about Nix. Had a case this year where I'd hit a bug in the upstream, I fixed it and submitted a PR but then could reference that PR directly for the patch file until a new release finally made it out.
FreeBSD.
I needed to set up a whole new small server for a company I had just joined. (Their old beast with MS Exchange was old and fat and dying, with crashes and manual actions every day etc.) I had an expert do the initial install, and he wanted to compile it all in place, right there on this machine. OK well why not.
The FreeBSD server turned out to be a quiet workhorse that never complained about anything, and only about 3 or 4 years later we had the first occasion when a reboot was needed.
Yeah, FreeBSD OS absolutely awesome
Have nothing more to add...
Well, maybe: I wanted to setup my work server with FreeBSD and I really had trouble getting Linux VMs up and running
Still don't know, what I did wrong, but I went the other way round and setup a Linux server, with a FreeBSD VM as "Gate-keeper" (my Wireguard every point), and so it secures my other stuff behind
But I really liked how nice it is to work with. Sadly I was too stupid to set it up right, with multiple services/containers/VMs I needed ...
The question is not really whether the software will be "better." In most cases, you only compile from source if you have a specific situation where you need, or think you might benefit from, some specific non-default build option. Or if you don't trust the provider of pre built releases for whatever reason.
Kinda not really answering your question but Arch's AUR often needs to compile something from source - so the benefit for me is: just having the absolute latest version running, so if there's a bug I can report it and help the package become better.
And in 5 years time it might be in Debian stable... /s
- I build software that I changed or patched
- When the bat version in the repos was broken I just installed it with cargo which compiles the latest version
- You can get a compiled version with a '-git' package from the AUR if you need the latest features not yet in a stable release
- Some pieces of software I use I made myself so they are compiled by me
- Maybe you want to install some software that is not available precompiled
- The XZ backdoor didn't work if you compiled it yourself: https://www.openwall.com/lists/oss-security/2024/03/29/4