this post was submitted on 30 Dec 2024
30 points (91.7% liked)

Linux

48822 readers
130 users here now

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

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

I looked up specifically examples of this and didn't find answers, they're buried in general discussions about why compiling may be better than pre-built. The reasons I found were control of flags and features, and optimizations for specific chips (like Intel AVX or ARM Neon), but to what degree do those apply today?

The only software I can tell benefits greatly from building from source, is ffmpeg since there are many non-free encoders decoders and upscalers that can be bundled, and performance varies a lot between devices due to which of them is supported by the CPU or GPU. For instance, Nvidia hardware encoders typically produce higher quality video for similar file sizes than ones from Intel AMD or Apple. Software encoders like x265 has optimizations for AVX and NEON (SIMD extensions for CPUs).

top 14 comments
sorted by: hot top controversial new old
[–] ExperimentalGuy 1 points 1 day ago

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.

[–] msage 3 points 2 days ago

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

[–] [email protected] 7 points 3 days ago

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

[–] fool 6 points 3 days ago* (last edited 3 days ago)

Obviously only for important cases, like compiling custom insults into sudo. :)

[–] [email protected] 6 points 3 days ago

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.

[–] [email protected] 8 points 3 days ago (1 children)

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)

[–] Zykino 3 points 2 days ago

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.

[–] [email protected] 6 points 3 days ago (1 children)

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.

[–] Buckshot 2 points 3 days ago

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.

[–] [email protected] 3 points 3 days ago (1 children)

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.

[–] [email protected] 1 points 3 days ago* (last edited 3 days ago)

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 ...

[–] [email protected] 3 points 3 days ago

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.

[–] [email protected] 2 points 3 days ago

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

[–] [email protected] 2 points 3 days ago
  • 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