Skip to content(if available)orjump to list(if available)

How many Alpine packages can you install at once? (2024)

Diti

I think you can install 100 % of Nix packages at once if you forget to provide a package name to `nix-env -i` (please stop using `nix-env`). [1]

About 3 times more packages than Alpine. [2] RIP!

____

[1]: https://github.com/NixOS/nix/issues/308

[2]: https://repology.org/repositories/graphs

jchw

Although that is true, it'll presumably be hard to use them all since some of them will trample each other's symlinks.

It doesn't really make that much sense, but I've always wanted a sort-of hybrid lazy Nix store. Rebuilding my NixOS machines take a long time since I like to have my preferred software configured and installed at the system level mostly, but there's some stuff that isn't so essential that it needs to block the upgrade. So I've thought about a hybrid solution where the packages would get built in the background and you could have some kind of magic FUSE system to block while the derivations are built or pulled from Hydra.

If you wanted to, you could combine this with the idea of installing every Nixpkgs package. It might even sort of make sense, as long as you ditch the "also work on them in the background" part... although it makes the surface area of your system absurd.

dnr

Hey, I sorta did this. Lazy substitution, at least, not lazy build. Plus a bunch of tricks to speed up downloads.

https://github.com/dnr/styx/

Lazy build sounds tricky: you don't know the contents of the package before you build it, so you don't even know what to symlink into /run/current-system/sw. I guess you'd have to have some kind of wrapper. Maybe similar to comma.

I just solved that part by setting up CI for most of my system config (integrated with the above).

rkeene2

AppFS (my project) and CERN VMFS do this, if I understand you correctly.

exe34

i have a system level and a user config, so the system is always the basic stuff like emacs and chrome, while the user config will pull in things like vlc, evince, etc. plus it's not like you have to log out to rebuild, it just fills up your bandwidth.

a3w

You urge me to not install all of them?

But I might need that program later and not have internet. /s

mst

Reminded of back in '02 or so when the networking spods at $ISP would just install everything off every Red Hat Linux 9 CD when they built a machine so they "didn't have to worry about anything being missing."

Those were the only *n?x boxen at the place that I did my best to avoid touching. It was ... I don't recall that it ever caused a problem (a buggy RH kernel that made fork() only work statistically did once, but that was orthogonal) but it just bothered me as a matter of principle.

ruthmarx

It bothers me as well. I love the focus Alpine has on minimalism and security, it's been my main desktop distro for years. It's easily the best distro I've ever used.

tonyhart7

for containerization??? what security feature they ship???

I use distroless for shipping the code (low mem traces)

ruthmarx

> for containerization???

No, as my main OS on my laptop and any other computers. I had better luck and a better experience over Void and Artix, and I'm not interested in systemd based distros.

> what security feature they ship???

The focus on minimization is a security feature given it reduces attack surface area. I'd say embrace musl wholeheartedly is another (as an example, Alpine sshd wasn't vulnerable to that big remote root vuln from last year). They have a general commitment to security as a priority that I don't think most distros share, which I appreciate.

dmd

How big would it be for Debian?

tomcam

I'm much more interested in how few packages I could install

linux2647

I wonder how large of a container that world create. Sounds like a good exercise for the reader :D

kevmo314

The ultimate monorepo.

mrlonglong

I love alpine. They make a great base for small and efficient docker containers.

_blk

My kind of nerd humor but I read the article only to find that the question I had going into it is not answered: How large might those containers (with/without community) get?

Who's taking the nerd-snipe bait? ;)

chamlis

Author here. I did run these numbers, I guess I just didn't think to write them up. I've recomputed them for Alpine 3.21 here.

Maximising the number of packages gives 5492/5536 packages (99.2%) for just main, with a total install size of 17.03GiB. Including community gives 25026/25383 packages (98.6%) with a total install size of 107.85GiB.

If we instead maximise the total installed size directly, we install 5428/5536 (98.0%) packages from main, with a total install size of 17.06GiB. Including community gives 24711/25383 packages (97.4%) with a total install size of 110.36GiB.

Of course, if you're building a container, it would be redundant to install a kernel, so these numbers are somewhat inflated.

yjftsjthsd-h

> Of course, if you're building a container, it would be redundant to install a kernel, so these numbers are somewhat inflated.

Depends what the container is for; I've used containers to build bootable OS images and had to explicitly install kernel and associated packages. Obviously that's a weird edge case, but if we're discussing installing as many packages as possible we're already off the beaten trail.

diggan

> How large might those containers (with/without community) get?

Thrown together awk summing alpine main repository as of v3.21:

    awk -F ':' '/^I:/ { sum += $2 } END { print sum }' APKINDEX | numfmt --to=iec --suffix=B
Returns 18GB. Author landed on 98.5% of packages being installable together, ~17.7GB in total, once installed. Community ends up being 100GB with 97.8%, so 97.8GB and final size ends up being ~115GB.

Probably not even the largest image out there, but large enough to be too large :)

AlotOfReading

Only twice as large as the "minimal" dev images I have to work with.

danillonunes

Dalai Lama walks up to a package manager and said "Make me one with everything"

hhthrowaway1230

Proceeds to have zero packages

null

[deleted]

null

[deleted]